diff --git a/internal/rosa/glslang.go b/internal/rosa/glslang.go deleted file mode 100644 index e9ca6aa3..00000000 --- a/internal/rosa/glslang.go +++ /dev/null @@ -1,121 +0,0 @@ -package rosa - -import "hakurei.app/internal/pkg" - -func (t Toolchain) newSPIRVLLVMTranslator() (pkg.Artifact, string) { - const ( - version = "22.1.2" - checksum = "JZAaV5ewYcm-35YA_U2BM2IcsQouZtX1BLZR0zh2vSlfEXMsT5OCtY4Gh5RJkcGy" - ) - skipChecks := []string{ - // error: line 13: OpTypeCooperativeMatrixKHR Scope is limited to Workgroup and Subgroup - "cooperative_matrix_constant_null.spvasm", - } - - switch t.arch { - case "arm64": - skipChecks = append(skipChecks, - // LLVM ERROR: unsupported calling convention - "DebugInfo/COFF/no-cus.ll", - "DebugInfo/Generic/2009-11-05-DeadGlobalVariable.ll", - "DebugInfo/Generic/2009-11-10-CurrentFn.ll", - "DebugInfo/Generic/2010-01-05-DbgScope.ll", - "DebugInfo/Generic/2010-03-12-llc-crash.ll", - "DebugInfo/Generic/2010-03-24-MemberFn.ll", - "DebugInfo/Generic/2010-04-19-FramePtr.ll", - "DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll", - "DebugInfo/Generic/2010-10-01-crash.ll", - "DebugInfo/Generic/PR20038.ll", - "DebugInfo/Generic/constant-pointers.ll", - "DebugInfo/Generic/dead-argument-order.ll", - "DebugInfo/Generic/debug-info-eis-option.ll", - "DebugInfo/Generic/def-line.ll", - "DebugInfo/Generic/discriminator.ll", - "DebugInfo/Generic/dwarf-public-names.ll", - "DebugInfo/Generic/enum.ll", - "DebugInfo/Generic/func-using-decl.ll", - "DebugInfo/Generic/global.ll", - "DebugInfo/Generic/imported-name-inlined.ll", - "DebugInfo/Generic/incorrect-variable-debugloc1.ll", - "DebugInfo/Generic/inline-scopes.ll", - "DebugInfo/Generic/inlined-arguments.ll", - "DebugInfo/Generic/inlined-vars.ll", - "DebugInfo/Generic/linear-dbg-value.ll", - "DebugInfo/Generic/linkage-name-abstract.ll", - "DebugInfo/Generic/member-order.ll", - "DebugInfo/Generic/missing-abstract-variable.ll", - "DebugInfo/Generic/multiline.ll", - "DebugInfo/Generic/namespace_function_definition.ll", - "DebugInfo/Generic/namespace_inline_function_definition.ll", - "DebugInfo/Generic/noscopes.ll", - "DebugInfo/Generic/ptrsize.ll", - "DebugInfo/Generic/restrict.ll", - "DebugInfo/Generic/two-cus-from-same-file.ll", - "DebugInfo/Generic/version.ll", - "DebugInfo/LocalAddressSpace.ll", - "DebugInfo/UnknownBaseType.ll", - "DebugInfo/expr-opcode.ll", - ) - } - - return t.NewPackage("spirv-llvm-translator", version, newFromGitHub( - "KhronosGroup/SPIRV-LLVM-Translator", - "v"+version, checksum, - ), &PackageAttr{ - Patches: []KV{ - {"remove-early-prefix", `diff --git a/CMakeLists.txt b/CMakeLists.txt -index c000a77e..f18f3fde 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -164,7 +164,7 @@ install( - ${LLVM_SPIRV_INCLUDE_DIRS}/LLVMSPIRVOpts.h - ${LLVM_SPIRV_INCLUDE_DIRS}/LLVMSPIRVExtensions.inc - DESTINATION -- ${CMAKE_INSTALL_PREFIX}/include/LLVMSPIRVLib -+ include/LLVMSPIRVLib - ) - - configure_file(LLVMSPIRVLib.pc.in ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc @ONLY) -@@ -172,5 +172,5 @@ install( - FILES - ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc - DESTINATION -- ${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}/pkgconfig -+ lib${LLVM_LIBDIR_SUFFIX}/pkgconfig - ) -;`}, - }, - - // litArgs emits shell syntax - ScriptEarly: ` -export LIT_OPTS=` + litArgs(true, skipChecks...) + ` -`, - }, &CMakeHelper{ - Cache: []KV{ - {"CMAKE_SKIP_BUILD_RPATH", "ON"}, - {"BUILD_SHARED_LIBS", "ON"}, - {"LLVM_SPIRV_ENABLE_LIBSPIRV_DIS", "ON"}, - {"LLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR", "/system"}, - {"LLVM_EXTERNAL_LIT", "/system/bin/lit"}, - {"LLVM_INCLUDE_TESTS", "ON"}, - }, - }, - Bash, - LIT, - - SPIRVTools, - ), version -} -func init() { - native.mustRegister(Toolchain.newSPIRVLLVMTranslator, &Metadata{ - Name: "spirv-llvm-translator", - Description: "bi-directional translation between SPIR-V and LLVM IR", - Website: "https://github.com/KhronosGroup/SPIRV-LLVM-Translator", - - Dependencies: P{ - SPIRVTools, - }, - - ID: 227273, - }) -} diff --git a/internal/rosa/package/spirv.az b/internal/rosa/package/spirv.az deleted file mode 100644 index 45ee1dc6..00000000 --- a/internal/rosa/package/spirv.az +++ /dev/null @@ -1,47 +0,0 @@ -package spirv-headers { - description = "machine-readable files for the SPIR-V Registry"; - website = "https://github.com/KhronosGroup/SPIRV-Headers"; - anitya = 230542; - // upstream changed version scheme, anitya incapable of filtering them - latest = anityaFilterSPIRV; - - version* = "1.4.341.0"; - source = remoteGitHub { - suffix = "KhronosGroup/SPIRV-Headers"; - tag = "vulkan-sdk-"+version; - checksum = "0PL43-19Iaw4k7_D8J8BvoJ-iLgCVSYZ2ThgDPGfAJwIJFtre7l0cnQtLjcY-JvD"; - }; - - exec = cmake { - // upstream has no tests - skipTest = true; - }; -} - -package spirv-tools { - description = "an API and commands for processing SPIR-V modules"; - website = "https://github.com/KhronosGroup/SPIRV-Tools"; - anitya = 14894; - latest = anityaFallback; - - version* = "2026.1"; - source = remoteGitHub { - suffix = "KhronosGroup/SPIRV-Tools"; - tag = "v"+version; - checksum = "ZSQPQx8NltCDzQLk4qlaVxyWRWeI_JtsjEpeFt3kezTanl9DTHfLixSUCezMFBjv"; - }; - - exec = cmake { - cache = { - "SPIRV-Headers_SOURCE_DIR": "/system"; - }; - }; - - inputs = [ - python, - - spirv-headers, - ]; - - runtime = [ spirv-headers ]; -} diff --git a/internal/rosa/package/spirv/package.az b/internal/rosa/package/spirv/package.az new file mode 100644 index 00000000..0b4789c6 --- /dev/null +++ b/internal/rosa/package/spirv/package.az @@ -0,0 +1,139 @@ +package spirv-headers { + description = "machine-readable files for the SPIR-V Registry"; + website = "https://github.com/KhronosGroup/SPIRV-Headers"; + anitya = 230542; + // upstream changed version scheme, anitya incapable of filtering them + latest = anityaFilterSPIRV; + + version* = "1.4.341.0"; + source = remoteGitHub { + suffix = "KhronosGroup/SPIRV-Headers"; + tag = "vulkan-sdk-"+version; + checksum = "0PL43-19Iaw4k7_D8J8BvoJ-iLgCVSYZ2ThgDPGfAJwIJFtre7l0cnQtLjcY-JvD"; + }; + + exec = cmake { + // upstream has no tests + skipTest = true; + }; +} + +package spirv-tools { + description = "an API and commands for processing SPIR-V modules"; + website = "https://github.com/KhronosGroup/SPIRV-Tools"; + anitya = 14894; + latest = anityaFallback; + + version* = "2026.1"; + source = remoteGitHub { + suffix = "KhronosGroup/SPIRV-Tools"; + tag = "v"+version; + checksum = "ZSQPQx8NltCDzQLk4qlaVxyWRWeI_JtsjEpeFt3kezTanl9DTHfLixSUCezMFBjv"; + }; + + exec = cmake { + cache = { + "SPIRV-Headers_SOURCE_DIR": "/system"; + }; + }; + + inputs = [ + python, + + spirv-headers, + ]; + + runtime = [ spirv-headers ]; +} + +package spirv-llvm-translator { + description = "bi-directional translation between SPIR-V and LLVM IR"; + website = "https://github.com/KhronosGroup/SPIRV-LLVM-Translator"; + anitya = 227273; + + version* = "22.1.2"; + source = remoteGitHub { + suffix = "KhronosGroup/SPIRV-LLVM-Translator"; + tag = "v"+version; + checksum = "JZAaV5ewYcm-35YA_U2BM2IcsQouZtX1BLZR0zh2vSlfEXMsT5OCtY4Gh5RJkcGy"; + }; + patches = [ "remove-early-prefix.patch" ]; + + // litArgs emits shell syntax + early = "\nexport LIT_OPTS=" + litArgs { + verbose = true; + + skipChecks = arch { + default = [ + // error: line 13: OpTypeCooperativeMatrixKHR Scope is limited to Workgroup and Subgroup + "cooperative_matrix_constant_null.spvasm", + ]; + + arm64 = [ + // error: line 13: OpTypeCooperativeMatrixKHR Scope is limited to Workgroup and Subgroup + "cooperative_matrix_constant_null.spvasm", + + // LLVM ERROR: unsupported calling convention + "DebugInfo/COFF/no-cus.ll", + "DebugInfo/Generic/2009-11-05-DeadGlobalVariable.ll", + "DebugInfo/Generic/2009-11-10-CurrentFn.ll", + "DebugInfo/Generic/2010-01-05-DbgScope.ll", + "DebugInfo/Generic/2010-03-12-llc-crash.ll", + "DebugInfo/Generic/2010-03-24-MemberFn.ll", + "DebugInfo/Generic/2010-04-19-FramePtr.ll", + "DebugInfo/Generic/2010-06-29-InlinedFnLocalVar.ll", + "DebugInfo/Generic/2010-10-01-crash.ll", + "DebugInfo/Generic/PR20038.ll", + "DebugInfo/Generic/constant-pointers.ll", + "DebugInfo/Generic/dead-argument-order.ll", + "DebugInfo/Generic/debug-info-eis-option.ll", + "DebugInfo/Generic/def-line.ll", + "DebugInfo/Generic/discriminator.ll", + "DebugInfo/Generic/dwarf-public-names.ll", + "DebugInfo/Generic/enum.ll", + "DebugInfo/Generic/func-using-decl.ll", + "DebugInfo/Generic/global.ll", + "DebugInfo/Generic/imported-name-inlined.ll", + "DebugInfo/Generic/incorrect-variable-debugloc1.ll", + "DebugInfo/Generic/inline-scopes.ll", + "DebugInfo/Generic/inlined-arguments.ll", + "DebugInfo/Generic/inlined-vars.ll", + "DebugInfo/Generic/linear-dbg-value.ll", + "DebugInfo/Generic/linkage-name-abstract.ll", + "DebugInfo/Generic/member-order.ll", + "DebugInfo/Generic/missing-abstract-variable.ll", + "DebugInfo/Generic/multiline.ll", + "DebugInfo/Generic/namespace_function_definition.ll", + "DebugInfo/Generic/namespace_inline_function_definition.ll", + "DebugInfo/Generic/noscopes.ll", + "DebugInfo/Generic/ptrsize.ll", + "DebugInfo/Generic/restrict.ll", + "DebugInfo/Generic/two-cus-from-same-file.ll", + "DebugInfo/Generic/version.ll", + "DebugInfo/LocalAddressSpace.ll", + "DebugInfo/UnknownBaseType.ll", + "DebugInfo/expr-opcode.ll", + ]; + }; + } + "\n"; + + exec = cmake { + cache = { + "CMAKE_SKIP_BUILD_RPATH": "ON"; + "BUILD_SHARED_LIBS": "ON"; + "LLVM_SPIRV_ENABLE_LIBSPIRV_DIS": "ON"; + "LLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR": "/system"; + "LLVM_EXTERNAL_LIT": "/system/bin/lit"; + "LLVM_INCLUDE_TESTS": "ON"; + }; + }; + + inputs = [ + bash, + lit, + + spirv-tools, + ]; + + runtime = [ spirv-tools ]; +} diff --git a/internal/rosa/package/spirv/remove-early-prefix.patch b/internal/rosa/package/spirv/remove-early-prefix.patch new file mode 100644 index 00000000..f184ebc7 --- /dev/null +++ b/internal/rosa/package/spirv/remove-early-prefix.patch @@ -0,0 +1,21 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c000a77e..f18f3fde 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -164,7 +164,7 @@ install( + ${LLVM_SPIRV_INCLUDE_DIRS}/LLVMSPIRVOpts.h + ${LLVM_SPIRV_INCLUDE_DIRS}/LLVMSPIRVExtensions.inc + DESTINATION +- ${CMAKE_INSTALL_PREFIX}/include/LLVMSPIRVLib ++ include/LLVMSPIRVLib + ) + + configure_file(LLVMSPIRVLib.pc.in ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc @ONLY) +@@ -172,5 +172,5 @@ install( + FILES + ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc + DESTINATION +- ${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}/pkgconfig ++ lib${LLVM_LIBDIR_SUFFIX}/pkgconfig + ) +; \ No newline at end of file diff --git a/internal/rosa/state.go b/internal/rosa/state.go index d0e2c5a3..3934fe38 100644 --- a/internal/rosa/state.go +++ b/internal/rosa/state.go @@ -516,6 +516,24 @@ func (s *S) getFrame() azalea.Frame { return }}, + // formatting helpers + + k("litArgs"): {F: func( + args azalea.FArgs, + ) (v any, set bool, err error) { + var verbose bool + var skipChecks []string + if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ + k("verbose"): &verbose, + k("skipChecks"): &skipChecks, + }); err != nil { + return + } + v = litArgs(verbose, skipChecks...) + set = true + return + }}, + // intenral/pkg built-ins k("remoteTar"): {F: func(