diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-14 00:03:23 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-14 00:03:23 +0900 |
| commit | 38c639e35c4af6310ea15ea125db904a61d30793 (patch) | |
| tree | 75a935d2d2d2f340502cf3762fd275ad9363d257 /internal | |
| parent | b2cb13e94cc07a82bd4bec32b19eb5d802e4607c (diff) | |
internal/rosa/llvm: remove project/runtime helper
More remnants from early days, these are not reusable at all but that was not known at the time.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/rosa/llvm.go | 116 |
1 files changed, 26 insertions, 90 deletions
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go index 3d6766f5..773aec52 100644 --- a/internal/rosa/llvm.go +++ b/internal/rosa/llvm.go @@ -3,8 +3,6 @@ package rosa import ( "runtime" "slices" - "strconv" - "strings" "sync" "hakurei.app/internal/pkg" @@ -20,9 +18,6 @@ var llvmSource = newFromGitHub( // llvmAttr holds the attributes that will be applied to a new [pkg.Artifact] // containing a LLVM variant. type llvmAttr struct { - // Enabled projects and runtimes. - pr int - // Concatenated with default environment for PackageAttr.Env. env []string // Concatenated with generated entries for CMakeHelper.Cache. @@ -38,86 +33,12 @@ type llvmAttr struct { patches []KV } -const ( - llvmProjectClang = 1 << iota - llvmProjectLld - - llvmProjectAll = 1<<iota - 1 - - llvmRuntimeCompilerRT = 1 << iota - llvmRuntimeLibunwind - llvmRuntimeLibc - llvmRuntimeLibcxx - llvmRuntimeLibcxxABI - llvmRuntimeLibclc - - llvmAll = 1<<iota - 1 - llvmRuntimeAll = llvmAll - (2 * llvmProjectAll) - 1 -) - -// llvmFlagName resolves a llvmAttr.flags project or runtime flag to its name. -func llvmFlagName(flag int) string { - switch flag { - case llvmProjectClang: - return "clang" - case llvmProjectLld: - return "lld" - - case llvmRuntimeCompilerRT: - return "compiler-rt" - case llvmRuntimeLibunwind: - return "libunwind" - case llvmRuntimeLibc: - return "libc" - case llvmRuntimeLibcxx: - return "libcxx" - case llvmRuntimeLibcxxABI: - return "libcxxabi" - case llvmRuntimeLibclc: - return "libclc" - - default: - panic("invalid flag " + strconv.Itoa(flag)) - } -} - // newLLVMVariant returns a [pkg.Artifact] containing a LLVM variant. func (t Toolchain) newLLVMVariant(variant string, attr *llvmAttr) pkg.Artifact { if attr == nil { panic("LLVM attr must be non-nil") } - var projects, runtimes []string - for i := 1; i < llvmProjectAll; i <<= 1 { - if attr.pr&i != 0 { - projects = append(projects, llvmFlagName(i)) - } - } - for i := (llvmProjectAll + 1) << 1; i < llvmRuntimeAll; i <<= 1 { - if attr.pr&i != 0 { - runtimes = append(runtimes, llvmFlagName(i)) - } - } - - var script 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, []KV{ - {"LLVM_ENABLE_PROJECTS", `"${ROSA_LLVM_PROJECTS}"`}, - }...) - } - if len(runtimes) > 0 { - cache = append(cache, []KV{ - {"LLVM_ENABLE_RUNTIMES", `"${ROSA_LLVM_RUNTIMES}"`}, - }...) - } - cmakeAppend := []string{"llvm"} if attr.append != nil { cmakeAppend = attr.append @@ -126,19 +47,14 @@ func (t Toolchain) newLLVMVariant(variant string, attr *llvmAttr) pkg.Artifact { return t.NewPackage("llvm", llvmVersion, llvmSource, &PackageAttr{ Patches: slices.Concat(attr.patches, llvmPatches), NonStage0: attr.nonStage0, - - Env: slices.Concat([]string{ - "ROSA_LLVM_PROJECTS=" + strings.Join(projects, ";"), - "ROSA_LLVM_RUNTIMES=" + strings.Join(runtimes, ";"), - }, attr.env), - - Flag: TExclusive, + Env: attr.env, + Flag: TExclusive, }, &CMakeHelper{ Variant: variant, - Cache: slices.Concat(cache, attr.cmake), + Cache: attr.cmake, Append: cmakeAppend, - Script: script + attr.script, + Script: attr.script, }, Python, Perl, @@ -184,6 +100,11 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) { "LDFLAGS="+earlyLDFLAGS(false), ), cmake: []KV{ + {"CMAKE_BUILD_TYPE", "Release"}, + + {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`}, + // libc++ not yet available {"CMAKE_CXX_COMPILER_TARGET", ""}, @@ -232,8 +153,13 @@ ln -s \ env: stage0ExclConcat(t, []string{}, "LDFLAGS="+earlyLDFLAGS(false), ), - pr: llvmRuntimeLibunwind | llvmRuntimeLibcxx | llvmRuntimeLibcxxABI, cmake: slices.Concat([]KV{ + {"CMAKE_BUILD_TYPE", "Release"}, + + {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LLVM_ENABLE_RUNTIMES", "'libunwind;libcxx;libcxxabi'"}, + {"LIBUNWIND_USE_COMPILER_RT", "ON"}, {"LIBCXX_HAS_MUSL_LIBC", "ON"}, {"LIBCXX_USE_COMPILER_RT", "ON"}, @@ -254,13 +180,18 @@ ln -s \ }) clang = t.newLLVMVariant("clang", &llvmAttr{ - pr: llvmProjectClang | llvmProjectLld, env: stage0ExclConcat(t, []string{}, "CFLAGS="+earlyCFLAGS, "CXXFLAGS="+earlyCXXFLAGS(), "LDFLAGS="+earlyLDFLAGS(false), ), cmake: slices.Concat([]KV{ + {"CMAKE_BUILD_TYPE", "Release"}, + + {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LLVM_ENABLE_PROJECTS", "'clang;lld'"}, + {"LLVM_ENABLE_LIBCXX", "ON"}, {"LLVM_USE_LINKER", "lld"}, @@ -335,6 +266,11 @@ func init() { f: func(t Toolchain) (pkg.Artifact, string) { return t.newLLVMVariant("libclc", &llvmAttr{ cmake: []KV{ + {"CMAKE_BUILD_TYPE", "Release"}, + + {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`}, + {"LIBCLC_TARGETS_TO_BUILD", "all"}, }, append: []string{"libclc"}, |
