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< 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"},