internal/rosa/llvm: migrate libclc
All checks were successful
Test / Create distribution (push) Successful in 1m19s
Test / Sandbox (push) Successful in 3m20s
Test / Hakurei (push) Successful in 4m32s
Test / ShareFS (push) Successful in 4m42s
Test / Sandbox (race detector) (push) Successful in 5m55s
Test / Hakurei (race detector) (push) Successful in 7m3s
Test / Flake checks (push) Successful in 1m27s
All checks were successful
Test / Create distribution (push) Successful in 1m19s
Test / Sandbox (push) Successful in 3m20s
Test / Hakurei (push) Successful in 4m32s
Test / ShareFS (push) Successful in 4m42s
Test / Sandbox (race detector) (push) Successful in 5m55s
Test / Hakurei (race detector) (push) Successful in 7m3s
Test / Flake checks (push) Successful in 1m27s
This eliminates newLLVMVariant. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -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"},
|
||||
|
||||
{"LIBCLC_TARGETS_TO_BUILD", "all"},
|
||||
},
|
||||
append: []string{"libclc"},
|
||||
script: "ninja test",
|
||||
}), llvmVersion
|
||||
{"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`},
|
||||
{"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`},
|
||||
|
||||
{"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",
|
||||
|
||||
Reference in New Issue
Block a user