# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0
PortGroup           cmake 1.1
PortGroup           github 1.0
PortGroup           legacysupport 1.1

github.setup        ziglang zig 0.15.1
github.tarball_from archive
revision            1

categories          lang
license             MIT
maintainers         nomaintainer

# Minimum OS version is macOS 13.0
# https://ziglang.org/download/0.15.1/release-notes.html#OS-Version-Requirements
platforms           {darwin >= 22}

description         Zig programming language

long_description    Zig is a general-purpose programming language designed for \
                    robustness, optimality, and maintainability.

homepage            https://ziglang.org/

checksums           rmd160  70778e45663b7cdd41b2e564d7dd1576f6c9ef94 \
                    sha256  f7d587087e551a206ad2e1c1a10e8124f5ecaec1f1efc69b0de6df89af80245c \
                    size    32716320

# macos stage3: add link support for system libc++: https://github.com/ziglang/zig/pull/23264
# Fix duplicate LC_RPATH entries on macOS Tahoe: https://github.com/ziglang/zig/pull/25152
patchfiles-append   patch-macos-libc++-dynamic-link.diff \
                    patch-duplicate-LC_RPATH.diff
patch.args          -p1

set llvm_version    20

depends_lib-append  port:llvm-${llvm_version} \
                    port:clang-${llvm_version} \
                    port:ncurses \
                    port:libxml2 \
                    port:zlib \
                    port:zstd

set llvm_config     LLVM_CONFIG=llvm-config-mp-${llvm_version}

compiler.whitelist  macports-clang-${llvm_version}
legacysupport.use_static \
                    yes

cmake.module_path   ${prefix}/libexec/llvm-${llvm_version} \
                    ${prefix}
cmake_share_module_dir \
                    ${prefix}/libexec/llvm-${llvm_version}
cmake.install_rpath-append \
                    ${prefix}/libexec/llvm-${llvm_version}/lib

platform darwin {
    # due to the new linker (which was introduced in Xcode 15: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes),
    # this port requires '-ld_classic' to build successfully with the toolchains from Xcode 15 or Command Line Tools 15.
    #
    # TODO: This is a temporary solution, the classic linker will be removed in a future release by Apple.
    if { ${os.major} == 23 && ( [vercmp ${xcodeversion} 15 ] >= 0 ) || ( [vercmp ${xcodecltversion} 15 ] >= 0 ) } {
        configure.ldflags-append \
                    -Wl,-ld_classic
    }
}
