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

github.setup        google shaderc 2025.3 v
revision            0
github.tarball_from archive

categories          graphics devel
license             Apache Version-2.0
maintainers         {christophecvr @christophecvr} openmaintainer

description         A collection of tools, libraries and tests for shader compilation.
long_description    At the moment it includes: \
                    glslc, a command line compiler for GLSL/HLSL to SPIR-V, and \
                    libshaderc, a library API for accessing glslc functionality.
homepage            https://github.com/google/shaderc

checksums           shaderc-${version}.tar.gz \
                    rmd160  f88f7815792a053b3a45cd1f3b98d813ebd2786c \
                    sha256  a8e4a25e5c2686fd36981e527ed05e451fcfc226bddf350f4e76181371190937 \
                    size    228417 \
                    glslang-8a85691a0740d390761a1008b4696f57facd02c4.tar.gz \
                    rmd160  8582967a9d47ba8ae31e621651bf6acc8fb8e07c \
                    sha256  1d1497cfb763cdc80782a86ec269b053f3cae0e7cbef2278bf0eb1855ab0bfcb \
                    size    4209614

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

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

# Patching source to use Already installed SPIRV-Tools.
patchfiles              use-installed-spirv-tools.patch

depends_build-append    port:spirv-headers \
                        port:asciidoctor \
                        path:bin/pkg-config:pkgconfig

depends_lib-append      port:glslang \
                        port:spirv-tools


depends_build-append    port:python${py_ver_nodot}
configure.python        ${prefix}/bin/python${py_ver}
configure.args-append   -DPYTHON_EXECUTABLE:FILEPATH=${configure.python}

# Only glslang is build to build shaderc glslang is not installed.
# Using installed SPIRV-Tools.
set submodules {
    KhronosGroup glslang 8a85691a0740d390761a1008b4696f57facd02c4 third_party/glslang
}

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}
}

# Move submodules to cmakes expected location in worksrcpath
post-extract {
    foreach {sub_author sub_project sub_commit sub_dest} ${submodules} {
        move ${workpath}/${sub_project}-${sub_commit} ${worksrcpath}/${sub_dest}
    }
}

configure.args-append   -DSHADERC_ENABLE_WERROR_COMPILE=OFF \
                        -DSHADERC_SKIP_TESTS=ON \
                        -DUSE_EXTERNAL_SPIRV_TOOLS=ON
