aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/llvm.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-26 16:20:16 +0900
committerOphestra <cat@gensokyo.uk>2026-03-26 16:23:15 +0900
commit2548a681e9a1e28c52805397edeccf719ec8ab45 (patch)
tree06202347c5762d8c1e05e4cc668829e633411d2c /internal/rosa/llvm.go
parentd514d0679fcd947cd10f7ba9d0418855515c19d5 (diff)
internal/rosa: key-value type
This type is used very frequently. The new type is much easier to type and can receive helper methods eventually if needed. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/llvm.go')
-rw-r--r--internal/rosa/llvm.go78
1 files changed, 41 insertions, 37 deletions
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index b654d20a..eca68989 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -19,7 +19,7 @@ type llvmAttr struct {
// Concatenated with default environment for PackageAttr.Env.
env []string
// Concatenated with generated entries for CMakeHelper.Cache.
- cmake [][2]string
+ cmake []KV
// Override CMakeHelper.Append.
append []string
// Passed through to PackageAttr.NonStage0.
@@ -30,7 +30,7 @@ type llvmAttr struct {
script string
// Patch name and body pairs.
- patches [][2]string
+ patches []KV
}
const (
@@ -94,43 +94,45 @@ func (t Toolchain) newLLVMVariant(variant string, attr *llvmAttr) pkg.Artifact {
var script string
- cache := [][2]string{
+ cache := []KV{
{"CMAKE_BUILD_TYPE", "Release"},
{"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`},
{"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`},
}
if len(projects) > 0 {
- cache = append(cache,
- [2]string{"LLVM_ENABLE_PROJECTS", `"${ROSA_LLVM_PROJECTS}"`})
+ cache = append(cache, []KV{
+ {"LLVM_ENABLE_PROJECTS", `"${ROSA_LLVM_PROJECTS}"`},
+ }...)
}
if len(runtimes) > 0 {
- cache = append(cache,
- [2]string{"LLVM_ENABLE_RUNTIMES", `"${ROSA_LLVM_RUNTIMES}"`})
+ cache = append(cache, []KV{
+ {"LLVM_ENABLE_RUNTIMES", `"${ROSA_LLVM_RUNTIMES}"`},
+ }...)
}
cmakeAppend := []string{"llvm"}
if attr.append != nil {
cmakeAppend = attr.append
} else {
- cache = append(cache,
- [2]string{"LLVM_ENABLE_LIBCXX", "ON"},
- [2]string{"LLVM_USE_LINKER", "lld"},
+ cache = append(cache, []KV{
+ {"LLVM_ENABLE_LIBCXX", "ON"},
+ {"LLVM_USE_LINKER", "lld"},
- [2]string{"LLVM_INSTALL_BINUTILS_SYMLINKS", "ON"},
- [2]string{"LLVM_INSTALL_CCTOOLS_SYMLINKS", "ON"},
+ {"LLVM_INSTALL_BINUTILS_SYMLINKS", "ON"},
+ {"LLVM_INSTALL_CCTOOLS_SYMLINKS", "ON"},
- [2]string{"LLVM_LIT_ARGS", "'--verbose'"},
- )
+ {"LLVM_LIT_ARGS", "'--verbose'"},
+ }...)
}
if attr.flags&llvmProjectClang != 0 {
- cache = append(cache,
- [2]string{"CLANG_DEFAULT_LINKER", "lld"},
- [2]string{"CLANG_DEFAULT_CXX_STDLIB", "libc++"},
- [2]string{"CLANG_DEFAULT_RTLIB", "compiler-rt"},
- [2]string{"CLANG_DEFAULT_UNWINDLIB", "libunwind"},
- )
+ cache = append(cache, []KV{
+ {"CLANG_DEFAULT_LINKER", "lld"},
+ {"CLANG_DEFAULT_CXX_STDLIB", "libc++"},
+ {"CLANG_DEFAULT_RTLIB", "compiler-rt"},
+ {"CLANG_DEFAULT_UNWINDLIB", "libunwind"},
+ }...)
}
if attr.flags&llvmProjectLld != 0 {
script += `
@@ -139,25 +141,27 @@ ln -s ld.lld /work/system/bin/ld
}
if attr.flags&llvmRuntimeCompilerRT != 0 {
if attr.append == nil {
- cache = append(cache,
- [2]string{"COMPILER_RT_USE_LLVM_UNWINDER", "ON"})
+ cache = append(cache, []KV{
+ {"COMPILER_RT_USE_LLVM_UNWINDER", "ON"},
+ }...)
}
}
if attr.flags&llvmRuntimeLibunwind != 0 {
- cache = append(cache,
- [2]string{"LIBUNWIND_USE_COMPILER_RT", "ON"})
+ cache = append(cache, []KV{
+ {"LIBUNWIND_USE_COMPILER_RT", "ON"},
+ }...)
}
if attr.flags&llvmRuntimeLibcxx != 0 {
- cache = append(cache,
- [2]string{"LIBCXX_HAS_MUSL_LIBC", "ON"},
- [2]string{"LIBCXX_USE_COMPILER_RT", "ON"},
- )
+ cache = append(cache, []KV{
+ {"LIBCXX_HAS_MUSL_LIBC", "ON"},
+ {"LIBCXX_USE_COMPILER_RT", "ON"},
+ }...)
}
if attr.flags&llvmRuntimeLibcxxABI != 0 {
- cache = append(cache,
- [2]string{"LIBCXXABI_USE_COMPILER_RT", "ON"},
- [2]string{"LIBCXXABI_USE_LLVM_UNWINDER", "ON"},
- )
+ cache = append(cache, []KV{
+ {"LIBCXXABI_USE_COMPILER_RT", "ON"},
+ {"LIBCXXABI_USE_LLVM_UNWINDER", "ON"},
+ }...)
}
return t.NewPackage("llvm", llvmVersion, pkg.NewHTTPGetTar(
@@ -208,7 +212,7 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) {
panic("unsupported target " + runtime.GOARCH)
}
- minimalDeps := [][2]string{
+ minimalDeps := []KV{
{"LLVM_ENABLE_ZLIB", "OFF"},
{"LLVM_ENABLE_ZSTD", "OFF"},
{"LLVM_ENABLE_LIBXML2", "OFF"},
@@ -222,7 +226,7 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) {
env: stage0ExclConcat(t, []string{},
"LDFLAGS="+earlyLDFLAGS(false),
),
- cmake: [][2]string{
+ cmake: []KV{
// libc++ not yet available
{"CMAKE_CXX_COMPILER_TARGET", ""},
@@ -272,7 +276,7 @@ ln -s \
"LDFLAGS="+earlyLDFLAGS(false),
),
flags: llvmRuntimeLibunwind | llvmRuntimeLibcxx | llvmRuntimeLibcxxABI,
- cmake: slices.Concat([][2]string{
+ cmake: slices.Concat([]KV{
// libc++ not yet available
{"CMAKE_CXX_COMPILER_WORKS", "ON"},
@@ -293,7 +297,7 @@ ln -s \
"CXXFLAGS="+earlyCXXFLAGS(),
"LDFLAGS="+earlyLDFLAGS(false),
),
- cmake: slices.Concat([][2]string{
+ cmake: slices.Concat([]KV{
{"LLVM_TARGETS_TO_BUILD", target},
{"CMAKE_CROSSCOMPILING", "OFF"},
{"CXX_SUPPORTS_CUSTOM_LINKER", "ON"},
@@ -310,7 +314,7 @@ ln -s clang++ /work/system/bin/c++
ninja check-all
`,
- patches: slices.Concat([][2]string{
+ patches: slices.Concat([]KV{
{"add-rosa-vendor", `diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 9c83abeeb3b1..5acfe5836a23 100644
--- a/llvm/include/llvm/TargetParser/Triple.h