package rosa import ( "slices" "strings" "hakurei.app/internal/pkg" ) func (t Toolchain) newSPIRVHeaders() (pkg.Artifact, string) { const ( version = "1.4.341.0" checksum = "0PL43-19Iaw4k7_D8J8BvoJ-iLgCVSYZ2ThgDPGfAJwIJFtre7l0cnQtLjcY-JvD" ) return t.NewPackage("spirv-headers", version, newFromGitHub( "KhronosGroup/SPIRV-Headers", "vulkan-sdk-"+version, checksum, ), nil, &CMakeHelper{ Cache: []KV{ {"CMAKE_BUILD_TYPE", "Release"}, }, }), version } func init() { artifactsM[SPIRVHeaders] = Metadata{ f: Toolchain.newSPIRVHeaders, Name: "spirv-headers", Description: "machine-readable files for the SPIR-V Registry", Website: "https://github.com/KhronosGroup/SPIRV-Headers", ID: 230542, // upstream changed version scheme, anitya incapable of filtering them latest: func(v *Versions) string { for _, s := range v.Stable { fields := strings.SplitN(s, ".", 4) if len(fields) != 4 { continue } if slices.ContainsFunc(fields, func(f string) bool { return slices.ContainsFunc([]byte(f), func(d byte) bool { return d < '0' || d > '9' }) }) { continue } return s } return v.Latest }, } } func (t Toolchain) newSPIRVTools() (pkg.Artifact, string) { const ( version = "2026.1" checksum = "ZSQPQx8NltCDzQLk4qlaVxyWRWeI_JtsjEpeFt3kezTanl9DTHfLixSUCezMFBjv" ) return t.NewPackage("spirv-tools", version, newFromGitHub( "KhronosGroup/SPIRV-Tools", "v"+version, checksum, ), nil, &CMakeHelper{ Cache: []KV{ {"CMAKE_BUILD_TYPE", "Release"}, {"SPIRV-Headers_SOURCE_DIR", "/system"}, }, }, Python, SPIRVHeaders, ), version } func init() { artifactsM[SPIRVTools] = Metadata{ f: Toolchain.newSPIRVTools, Name: "spirv-tools", Description: "an API and commands for processing SPIR-V modules", Website: "https://github.com/KhronosGroup/SPIRV-Tools", Dependencies: P{ SPIRVHeaders, }, ID: 14894, } } func (t Toolchain) newGlslang() (pkg.Artifact, string) { const ( version = "16.2.0" checksum = "6_UuF9reLRDaVkgO-9IfB3kMwme3lQZM8LL8YsJwPdUFkrjzxJtf2A9X3w9nFxj2" ) return t.NewPackage("glslang", version, newFromGitHub( "KhronosGroup/glslang", version, checksum, ), &PackageAttr{ // test suite writes to source Writable: true, Chmod: true, }, &CMakeHelper{ Cache: []KV{ {"CMAKE_BUILD_TYPE", "Release"}, {"BUILD_SHARED_LIBS", "ON"}, {"ALLOW_EXTERNAL_SPIRV_TOOLS", "ON"}, }, Script: "ctest", }, Python, Bash, Diffutils, SPIRVTools, ), version } func init() { artifactsM[Glslang] = Metadata{ f: Toolchain.newGlslang, Name: "glslang", Description: "reference front end for GLSL/ESSL", Website: "https://github.com/KhronosGroup/glslang", ID: 205796, } }