# -*- 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           github 1.0

set rev             6e8dcdebbadf4f8aa75e6a4b6e0bdf89dce1513a
github.setup        gsource-mirror gn $rev
github.tarball_from archive

# git rev-list --count initial-commit..
version             2354
revision            0
categories          devel
license             BSD
maintainers         nomaintainer

description         Gn meta build framework – standalone version

long_description    GN is a meta-build system that generates build files for Ninja. \
                    GN is currently used as the build system for Chromium, Fuchsia and related projects.

homepage            https://gn.googlesource.com/gn

checksums           rmd160  77b293f04bd67e1c51c1cbe2db6d082384f5536b \
                    sha256  5916a630f363848a06f87424a6110c745f998ba2c5a1c6f3c9f49a4368e97b48 \
                    size    1140053

set py_ver          3.14
set py_ver_nodot    [string map {. {}} ${py_ver}]

depends_build-append \
                    port:ninja \
                    port:python${py_ver_nodot}

depends_run-append  port:python${py_ver_nodot}

patchfiles          patch-macos-version.diff \
                    patch-objc.diff \
                    patch-ppc.diff \
                    patch-python.diff \
                    patch-semaphore.diff

post-patch {
    reinplace "s|@DEPLOYMENT_TARGET@|${macosx_deployment_target}|" \
        ${worksrcpath}/build/gen.py
    reinplace "s|@PYTHON@|${configure.python}|" ${worksrcpath}/src/gn/setup.cc
}

compiler.cxx_standard   2020

configure.python    ${prefix}/bin/python${py_ver}
configure.cmd       ${configure.python} build/gen.py
configure.pre_args  --no-last-commit-position
configure.cppflags  -DLAST_COMMIT_POSITION_NUM=${version} \
                    -DLAST_COMMIT_POSITION='"${version} ([string range $rev 0 11])"'
# CPPFLAGS not recognized
configure.cxxflags-append   {*}${configure.cppflags}

post-configure {
    touch ${worksrcpath}/out/last_commit_position.h
}

# Upstream seems to support minimum 10.9. Build fails with -Werror on older systems:
# desc_builder.cc: error: redundant move in return statement [-Werror=redundant-move]
if {${os.platform} eq "darwin" && ${os.major} < 13} {
    configure.args-append \
                    --allow-warnings
}

build.cmd           ${prefix}/bin/ninja
build.dir           ${worksrcpath}/out
build.target

destroot {
    copy ${worksrcpath}/out/${name} ${destroot}${prefix}/bin/
    set docdir ${prefix}/share/doc/${name}
    xinstall -d ${destroot}${docdir}
    xinstall -m 0644 -W ${worksrcpath} AUTHORS LICENSE OWNERS README.md ${destroot}${docdir}
    copy ${worksrcpath}/docs ${destroot}${docdir}
}

test.run            yes
test.cmd            ${worksrcpath}/out/gn_unittests
test.target
