# -*- 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
PortGroup           cmake 1.1
PortGroup           legacysupport 1.1
PortGroup           conflicts_build 1.0

github.setup        KhronosGroup SPIRV-Tools 1.4.341 vulkan-sdk-
github.tarball_from archive
name                spirv-tools
revision            0

categories          graphics
license             Apache-2
maintainers         {judaew @judaew} openmaintainer

description         various SPIR-V tools
long_description    SPIR-V assembler, binary module parser, \
                    disassembler, validator, and optimizer
homepage            https://vulkan.lunarg.com

# FIXME : main module not extracted in worksrcpath when using multiple sources.
# move extracted main module to worksrcpath
# Move submodules to cmakes expected location in worksrcpath
post-extract {
    move ${workpath}/SPIRV-Tools-${github.tag_prefix}${version} ${worksrcpath}
    foreach {sub_author sub_project sub_commit sub_dest} ${submodules} {
        move ${workpath}/${sub_project}-${sub_commit} ${worksrcpath}/${sub_dest}
    }
}

checksums           SPIRV-Tools-${version}.tar.gz \
                    rmd160  1ff7abf34ef2408e3161fa496c2019a8a14214ec \
                    sha256  dcbbac86eae3f8de59625eb1daece9d8014492ed7307db63293762085523b83f \
                    size    3455511 \
                    abseil-cpp-255c84dadd029fd8ad25c5efb5933e47beaa00c7.tar.gz \
                    rmd160  8606f00142a5830e0be2a1ec4a83af4cb1af21b0 \
                    sha256  87e91fb785a2d0233f4599317afd576b7736e6732d557bdcdfdc11990bd333ef \
                    size    2301499 \
                    effcee-514b52ec61609744d7e587d93a7ef9b60407ab45.tar.gz \
                    rmd160  8f660fd9db7cba7de45c04fe12165ca56fb347c3 \
                    sha256  3376aabe01b343753641110e5c3403f3705b6eb98825246f200cc3d9e0b41edd \
                    size    41155 \
                    googletest-1b96fa13f549387b7549cc89e1a785cf143a1a50.tar.gz \
                    rmd160  fa0a0d43eb2994c5892fb7787b1f8bed11cef405 \
                    sha256  44732cdd185c579c33d7aa70f40c47dcfd9fc3ffac28a3e42cea0e257d7d5c2c \
                    size    889186 \
                    protobuf-f0dc78d7e6e331b8c6bb2d5283e06aa26883ca7c.tar.gz \
                    rmd160  a397c44d602407d85eb6ac6b985f9feb792f76e1 \
                    sha256  d594b561fb41bf243233d8f411c7f2b7d913e5c9c1be4ca439baf7e48384c893 \
                    size    5146983 \
                    re2-e7aec5985072c1dbe735add802653ef4b36c231a.tar.gz \
                    rmd160  be95bdfa81cbb7ab41235a3de04f7aac3f9b6f0c \
                    sha256  f7f9bb4b56012c069d9428f5dd6480309a46a05921412c8150e01eac8a0be6da \
                    size    397966 \
                    SPIRV-Headers-04f10f650d514df88b76d25e83db360142c7b174.tar.gz \
                    rmd160  5183f673e28dc07d61c5043137ca59251346698c \
                    sha256  1b220e3eec1714f0451b0e3652979bd280edf10893f617837b88e6359a804ded \
                    size    561661 \
                    mimalloc-30b2d9d89099bee08e9f67a1ffb3e12e7ba45227.tar.gz \
                    rmd160  10a999a7c989fc13cff35824f693f7466c957770 \
                    sha256  7ced84a659a95454ce08b725af56331164e6b8673310e5a9a5c612576145456f \
                    size    1411187

compiler.cxx_standard 2017
# Need to use MacPorts libc++ on macOS 10.14 Mojave and older, because
# Apple Clang only added support for the C++17 <filesystem> library
# starting in Xcode 11 (clang-1100) for macOS 10.15+.
#
# References:
# * https://stackoverflow.com/a/55353263
# * https://developer.apple.com/documentation/xcode-release-notes/xcode-11-release-notes
legacysupport.newest_darwin_requires_legacy 18
legacysupport.use_mp_libcxx yes

set py_ver          3.13
set py_ver_nodot    [string map {. {}} ${py_ver}]
foreach stage {configure build destroot test} {
    ${stage}.env-append PATH=${frameworks_dir}/Python.framework/Versions/${py_ver}/bin:$env(PATH)
}
depends_build-append port:python${py_ver_nodot}

# See DEPS file in repo
# Exept abseil changed to lts version.
set submodules {
    abseil abseil-cpp 255c84dadd029fd8ad25c5efb5933e47beaa00c7 external/abseil_cpp
    google effcee 514b52ec61609744d7e587d93a7ef9b60407ab45 external/effcee
    google googletest 1b96fa13f549387b7549cc89e1a785cf143a1a50 external/googletest
    protocolbuffers protobuf f0dc78d7e6e331b8c6bb2d5283e06aa26883ca7c external/protobuf
    google re2 e7aec5985072c1dbe735add802653ef4b36c231a external/re2
    KhronosGroup SPIRV-Headers 04f10f650d514df88b76d25e83db360142c7b174 external/spirv-headers
    microsoft mimalloc 30b2d9d89099bee08e9f67a1ffb3e12e7ba45227 external/mimalloc
}

foreach {sub_author sub_project sub_commit sub_dest} ${submodules} {
    master_sites-append https://github.com/${sub_author}/${sub_project}/archive/${sub_commit}.tar.gz?dummy=:${sub_project}
    distfiles-append    ${sub_project}-${sub_commit}.tar.gz:${sub_project}
}

configure.args-append \
                    -DSPIRV_WERROR=OFF \
                    -DBUILD_SHARED_LIBS=ON \
                    -DSPIRV_TOOLS_BUILD_STATIC=OFF \
                    -DCMAKE_INSTALL_PREFIX=${prefix}

conflicts_build     gtest
