diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-03-26 16:20:16 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-03-26 16:23:15 +0900 |
| commit | 2548a681e9a1e28c52805397edeccf719ec8ab45 (patch) | |
| tree | 06202347c5762d8c1e05e4cc668829e633411d2c /internal/rosa/llvm.go | |
| parent | d514d0679fcd947cd10f7ba9d0418855515c19d5 (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.go | 78 |
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 |
