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

This eliminates newLLVMVariant.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-04-14 02:40:13 +09:00
parent e97f6a393f
commit 78383fb6e8

View File

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