aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-04-14 00:03:23 +0900
committerOphestra <cat@gensokyo.uk>2026-04-14 00:03:23 +0900
commit38c639e35c4af6310ea15ea125db904a61d30793 (patch)
tree75a935d2d2d2f340502cf3762fd275ad9363d257 /internal
parentb2cb13e94cc07a82bd4bec32b19eb5d802e4607c (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.go116
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"},