aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/glslang.go
blob: e9ca6aa3691c551e57714974835f7551f691846e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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,
	})
}