internal/rosa/llvm: remove project/runtime helper
All checks were successful
Test / Create distribution (push) Successful in 2m48s
Test / Sandbox (push) Successful in 7m21s
Test / ShareFS (push) Successful in 8m34s
Test / Sandbox (race detector) (push) Successful in 9m6s
Test / Hakurei (race detector) (push) Successful in 10m14s
Test / Hakurei (push) Successful in 3m30s
Test / Flake checks (push) Successful in 2m54s
All checks were successful
Test / Create distribution (push) Successful in 2m48s
Test / Sandbox (push) Successful in 7m21s
Test / ShareFS (push) Successful in 8m34s
Test / Sandbox (race detector) (push) Successful in 9m6s
Test / Hakurei (race detector) (push) Successful in 10m14s
Test / Hakurei (push) Successful in 3m30s
Test / Flake checks (push) Successful in 2m54s
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>
This commit is contained in:
@@ -3,8 +3,6 @@ package rosa
|
|||||||
import (
|
import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"hakurei.app/internal/pkg"
|
"hakurei.app/internal/pkg"
|
||||||
@@ -20,9 +18,6 @@ var llvmSource = newFromGitHub(
|
|||||||
// llvmAttr holds the attributes that will be applied to a new [pkg.Artifact]
|
// llvmAttr holds the attributes that will be applied to a new [pkg.Artifact]
|
||||||
// containing a LLVM variant.
|
// containing a LLVM variant.
|
||||||
type llvmAttr struct {
|
type llvmAttr struct {
|
||||||
// Enabled projects and runtimes.
|
|
||||||
pr int
|
|
||||||
|
|
||||||
// Concatenated with default environment for PackageAttr.Env.
|
// Concatenated with default environment for PackageAttr.Env.
|
||||||
env []string
|
env []string
|
||||||
// Concatenated with generated entries for CMakeHelper.Cache.
|
// Concatenated with generated entries for CMakeHelper.Cache.
|
||||||
@@ -38,86 +33,12 @@ type llvmAttr struct {
|
|||||||
patches []KV
|
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.
|
// newLLVMVariant returns a [pkg.Artifact] containing a LLVM variant.
|
||||||
func (t Toolchain) newLLVMVariant(variant string, attr *llvmAttr) pkg.Artifact {
|
func (t Toolchain) newLLVMVariant(variant string, attr *llvmAttr) pkg.Artifact {
|
||||||
if attr == nil {
|
if attr == nil {
|
||||||
panic("LLVM attr must be non-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"}
|
cmakeAppend := []string{"llvm"}
|
||||||
if attr.append != nil {
|
if attr.append != nil {
|
||||||
cmakeAppend = attr.append
|
cmakeAppend = attr.append
|
||||||
@@ -126,19 +47,14 @@ func (t Toolchain) newLLVMVariant(variant string, attr *llvmAttr) pkg.Artifact {
|
|||||||
return t.NewPackage("llvm", llvmVersion, llvmSource, &PackageAttr{
|
return t.NewPackage("llvm", llvmVersion, llvmSource, &PackageAttr{
|
||||||
Patches: slices.Concat(attr.patches, llvmPatches),
|
Patches: slices.Concat(attr.patches, llvmPatches),
|
||||||
NonStage0: attr.nonStage0,
|
NonStage0: attr.nonStage0,
|
||||||
|
Env: attr.env,
|
||||||
Env: slices.Concat([]string{
|
Flag: TExclusive,
|
||||||
"ROSA_LLVM_PROJECTS=" + strings.Join(projects, ";"),
|
|
||||||
"ROSA_LLVM_RUNTIMES=" + strings.Join(runtimes, ";"),
|
|
||||||
}, attr.env),
|
|
||||||
|
|
||||||
Flag: TExclusive,
|
|
||||||
}, &CMakeHelper{
|
}, &CMakeHelper{
|
||||||
Variant: variant,
|
Variant: variant,
|
||||||
|
|
||||||
Cache: slices.Concat(cache, attr.cmake),
|
Cache: attr.cmake,
|
||||||
Append: cmakeAppend,
|
Append: cmakeAppend,
|
||||||
Script: script + attr.script,
|
Script: attr.script,
|
||||||
},
|
},
|
||||||
Python,
|
Python,
|
||||||
Perl,
|
Perl,
|
||||||
@@ -184,6 +100,11 @@ func (t Toolchain) newLLVM() (musl, compilerRT, runtimes, clang pkg.Artifact) {
|
|||||||
"LDFLAGS="+earlyLDFLAGS(false),
|
"LDFLAGS="+earlyLDFLAGS(false),
|
||||||
),
|
),
|
||||||
cmake: []KV{
|
cmake: []KV{
|
||||||
|
{"CMAKE_BUILD_TYPE", "Release"},
|
||||||
|
|
||||||
|
{"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`},
|
||||||
|
{"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`},
|
||||||
|
|
||||||
// libc++ not yet available
|
// libc++ not yet available
|
||||||
{"CMAKE_CXX_COMPILER_TARGET", ""},
|
{"CMAKE_CXX_COMPILER_TARGET", ""},
|
||||||
|
|
||||||
@@ -232,8 +153,13 @@ ln -s \
|
|||||||
env: stage0ExclConcat(t, []string{},
|
env: stage0ExclConcat(t, []string{},
|
||||||
"LDFLAGS="+earlyLDFLAGS(false),
|
"LDFLAGS="+earlyLDFLAGS(false),
|
||||||
),
|
),
|
||||||
pr: llvmRuntimeLibunwind | llvmRuntimeLibcxx | llvmRuntimeLibcxxABI,
|
|
||||||
cmake: slices.Concat([]KV{
|
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"},
|
{"LIBUNWIND_USE_COMPILER_RT", "ON"},
|
||||||
{"LIBCXX_HAS_MUSL_LIBC", "ON"},
|
{"LIBCXX_HAS_MUSL_LIBC", "ON"},
|
||||||
{"LIBCXX_USE_COMPILER_RT", "ON"},
|
{"LIBCXX_USE_COMPILER_RT", "ON"},
|
||||||
@@ -254,13 +180,18 @@ ln -s \
|
|||||||
})
|
})
|
||||||
|
|
||||||
clang = t.newLLVMVariant("clang", &llvmAttr{
|
clang = t.newLLVMVariant("clang", &llvmAttr{
|
||||||
pr: llvmProjectClang | llvmProjectLld,
|
|
||||||
env: stage0ExclConcat(t, []string{},
|
env: stage0ExclConcat(t, []string{},
|
||||||
"CFLAGS="+earlyCFLAGS,
|
"CFLAGS="+earlyCFLAGS,
|
||||||
"CXXFLAGS="+earlyCXXFLAGS(),
|
"CXXFLAGS="+earlyCXXFLAGS(),
|
||||||
"LDFLAGS="+earlyLDFLAGS(false),
|
"LDFLAGS="+earlyLDFLAGS(false),
|
||||||
),
|
),
|
||||||
cmake: slices.Concat([]KV{
|
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_ENABLE_LIBCXX", "ON"},
|
||||||
{"LLVM_USE_LINKER", "lld"},
|
{"LLVM_USE_LINKER", "lld"},
|
||||||
|
|
||||||
@@ -335,6 +266,11 @@ func init() {
|
|||||||
f: func(t Toolchain) (pkg.Artifact, string) {
|
f: func(t Toolchain) (pkg.Artifact, string) {
|
||||||
return t.newLLVMVariant("libclc", &llvmAttr{
|
return t.newLLVMVariant("libclc", &llvmAttr{
|
||||||
cmake: []KV{
|
cmake: []KV{
|
||||||
|
{"CMAKE_BUILD_TYPE", "Release"},
|
||||||
|
|
||||||
|
{"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`},
|
||||||
|
{"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`},
|
||||||
|
|
||||||
{"LIBCLC_TARGETS_TO_BUILD", "all"},
|
{"LIBCLC_TARGETS_TO_BUILD", "all"},
|
||||||
},
|
},
|
||||||
append: []string{"libclc"},
|
append: []string{"libclc"},
|
||||||
|
|||||||
Reference in New Issue
Block a user