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

set clspv_commit        1bfdd2dcb6b8642385915861f9b85394a9ebd71c
github.setup            google clspv ${clspv_commit}
github.tarball_from     archive
version                 20260901
revision                0

categories              devel
license                 Apache-2
maintainers             {i0ntempest @i0ntempest} openmaintainer

description             OpenCL C to Vulkan compute shader compiler
long_description        Clspv compiles a subset of OpenCL C into Vulkan compute shaders.

checksums               rmd160  b1a475998cc09d429f41c75d3b202c0bfc31d4a1 \
                        sha256  d75d1d5aa4d42ade7b71b7046a53e3f8fe639bb81992119b3c1c297d310f6265 \
                        size    866775

set python_version      314
set llvm_version        23
set llvm_prefix         ${prefix}/libexec/llvm-${llvm_version}

patchfiles              patch-use-installed-dependencies.diff

worksrcdir              clspv-${clspv_commit}
compiler.cxx_standard   2017
cmake.build_type        Release

depends_build-append    port:python${python_version} \
                        port:py${python_version}-pygments \
                        port:py${python_version}-yaml \
                        port:clang-${llvm_version}
# clspv links LLVM components statically, but its installed tools can link dynamically.
depends_lib-append      port:llvm-${llvm_version} \
                        port:libedit \
                        port:libffi \
                        port:libxml2 \
                        port:libclc-${llvm_version} \
                        port:spirv-headers \
                        port:spirv-tools \
                        port:zlib \
                        port:zstd

configure.args-append   -DCLSPV_BUILD_TESTS=OFF \
                        -DCLSPV_CLANG_SOURCE_DIR=${llvm_prefix} \
                        -DCLSPV_EXTERNAL_LIBCLC_DIR=${llvm_prefix}/share/clc \
                        -DCLSPV_LLVM_BINARY_DIR=${llvm_prefix} \
                        -DCLSPV_LLVM_SOURCE_DIR=${llvm_prefix} \
                        -DCLSPV_SHARED_LIB=ON \
                        -DCLSPV_USE_EXTERNAL_SPIRV_TOOLS=ON \
                        -DENABLE_CLSPV_OPT=OFF \
                        -DEXTERNAL_LLVM=ON \
                        -DSPIRV_HEADERS_SOURCE_DIR=${prefix} \
                        -DSPIRV_TOOLS_SOURCE_DIR=${prefix}

livecheck.type          none
