From 78383fb6e8ddae008851c219ded72be6dbb3f99a Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 14 Apr 2026 02:40:13 +0900 Subject: [PATCH] internal/rosa/llvm: migrate libclc This eliminates newLLVMVariant. Signed-off-by: Ophestra --- internal/rosa/llvm.go | 83 +++++++++---------------------------------- 1 file 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"}, - {"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",