aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--internal/rosa/llvm.go83
1 files changed, 17 insertions, 66 deletions
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index 74d0cdc9..2361371a 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -2,7 +2,6 @@ package rosa
import (
"runtime"
- "slices"
"hakurei.app/internal/pkg"
)
@@ -14,59 +13,6 @@ var llvmSource = newFromGitHub(
llvmChecksum,
)
-// llvmAttr holds the attributes that will be applied to a new [pkg.Artifact]
-// containing a LLVM variant.
-type llvmAttr struct {
- // Concatenated with default environment for PackageAttr.Env.
- env []string
- // Concatenated with generated entries for CMakeHelper.Cache.
- cmake []KV
- // Override CMakeHelper.Append.
- append []string
- // Passed through to PackageAttr.NonStage0.
- nonStage0 []pkg.Artifact
- // Concatenated with default fixup for CMakeHelper.Script.
- script string
-
- // Patch name and body pairs.
- patches []KV
-}
-
-// 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")
- }
-
- cmakeAppend := []string{"llvm"}
- if attr.append != nil {
- cmakeAppend = attr.append
- }
-
- return t.NewPackage("llvm", llvmVersion, llvmSource, &PackageAttr{
- Patches: slices.Concat(attr.patches, llvmPatches),
- NonStage0: attr.nonStage0,
- Env: attr.env,
- Flag: TExclusive,
- }, &CMakeHelper{
- Variant: variant,
-
- Cache: attr.cmake,
- Append: cmakeAppend,
- Script: attr.script,
- },
- Python,
- Perl,
- Diffutils,
- Bash,
- Gawk,
- Coreutils,
- Findutils,
-
- KernelHeaders,
- )
-}
-
func (t Toolchain) newCompilerRT() (pkg.Artifact, string) {
muslHeaders, _ := t.newMusl(true)
return t.NewPackage("llvm", llvmVersion, llvmSource, &PackageAttr{
@@ -282,22 +228,27 @@ func init() {
ID: 1830,
}
+}
- artifactsM[Libclc] = Metadata{
- f: func(t Toolchain) (pkg.Artifact, string) {
- return t.newLLVMVariant("libclc", &llvmAttr{
- cmake: []KV{
- {"CMAKE_BUILD_TYPE", "Release"},
+func (t Toolchain) newLibclc() (pkg.Artifact, string) {
+ return t.NewPackage("llvm", llvmVersion, llvmSource, nil, &CMakeHelper{
+ Variant: "libclc",
+ Append: []string{"libclc"},
- {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`},
- {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`},
+ Cache: []KV{
+ {"CMAKE_BUILD_TYPE", "Release"},
+
+ {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`},
+ {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`},
- {"LIBCLC_TARGETS_TO_BUILD", "all"},
- },
- append: []string{"libclc"},
- script: "ninja test",
- }), llvmVersion
+ {"LIBCLC_TARGETS_TO_BUILD", "all"},
},
+ Script: "ninja test",
+ }), llvmVersion
+}
+func init() {
+ artifactsM[Libclc] = Metadata{
+ f: Toolchain.newLibclc,
Name: "libclc",
Description: "an open source, BSD/MIT dual licensed implementation of the library requirements of the OpenCL C programming language",