From c822ff9aca0a3f176bf325daa73c2b9e810f896d Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sat, 18 Jul 2026 23:56:05 +0900 Subject: [PATCH] internal/rosa: migrate early-compiler-rt to azalea Had to do the cmake hack for now due to evaluator limitation with inherited version. Signed-off-by: Ophestra --- internal/rosa/llvm.go | 63 -------------------------- internal/rosa/package/llvm/package.az | 65 +++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 63 deletions(-) diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go index 9228da83..9568b5aa 100644 --- a/internal/rosa/llvm.go +++ b/internal/rosa/llvm.go @@ -48,69 +48,6 @@ func litArgs(verbose bool, skipChecks ...string) string { } func init() { - native.MustRegister("early-compiler-rt", func(t Toolchain) (*Metadata, pkg.Artifact) { - meta := Metadata{ - Name: "early-compiler-rt", - Description: "early LLVM runtime: compiler-rt", - - Dependencies: P{_musl}, - } - _meta, source := t.MustLoad(_llvmSource) - meta.Version = _meta.Version - major, _, _ := strings.Cut(meta.Version, ".") - return &meta, t.NewPackage("early-compiler-rt", meta.Version, source, &PackageAttr{ - Flag: TExclusive, - }, &CMakeHelper{ - Append: []string{"compiler-rt"}, - - Cache: []KV{ - {"ENABLE_LINKER_BUILD_ID", "ON"}, - - // libc++ not yet available - {"CMAKE_CXX_COMPILER_TARGET", ""}, - - {"LLVM_HOST_TRIPLE", `"${ROSA_TRIPLE}"`}, - {"LLVM_DEFAULT_TARGET_TRIPLE", `"${ROSA_TRIPLE}"`}, - {"LLVM_ENABLE_RTTI", "ON"}, - {"LLVM_BUILD_LLVM_DYLIB", "ON"}, - {"LLVM_LINK_LLVM_DYLIB", "ON"}, - {"LLVM_ENABLE_PER_TARGET_RUNTIME_DIR", "ON"}, - - {"COMPILER_RT_BUILD_BUILTINS", "ON"}, - {"COMPILER_RT_DEFAULT_TARGET_ONLY", "ON"}, - {"COMPILER_RT_USE_BUILTINS_LIBRARY", "ON"}, - {"COMPILER_RT_SANITIZERS_TO_BUILD", "asan"}, - {"COMPILER_RT_BUILD_GWP_ASAN", "OFF"}, - - // does not work without libunwind - {"COMPILER_RT_BUILD_CTX_PROFILE", "OFF"}, - {"COMPILER_RT_BUILD_LIBFUZZER", "OFF"}, - {"COMPILER_RT_BUILD_MEMPROF", "OFF"}, - {"COMPILER_RT_BUILD_PROFILE", "OFF"}, - {"COMPILER_RT_BUILD_XRAY", "OFF"}, - }, - SkipTest: true, - Script: ` -mkdir -p "/work/system/lib/clang/` + major + `/lib/" -ln -s \ - "../../../${ROSA_TRIPLE}" \ - "/work/system/lib/clang/` + major + `/lib/" - -ln -s \ - "clang_rt.crtbegin-` + t.linuxArch() + `.o" \ - "/work/system/lib/${ROSA_TRIPLE}/crtbeginS.o" -ln -s \ - "clang_rt.crtend-` + t.linuxArch() + `.o" \ - "/work/system/lib/${ROSA_TRIPLE}/crtendS.o" -`, - }, - _pythonEarly, - - _muslHeaders, - _kernelHeaders, - ) - }) - native.MustRegister("llvm", func(t Toolchain) (*Metadata, pkg.Artifact) { meta := Metadata{ Name: "llvm", diff --git a/internal/rosa/package/llvm/package.az b/internal/rosa/package/llvm/package.az index feefeba8..352dca53 100644 --- a/internal/rosa/package/llvm/package.az +++ b/internal/rosa/package/llvm/package.az @@ -17,6 +17,71 @@ package llvm-project { ]; } +package early-compiler-rt { + description = "early LLVM runtime: compiler-rt"; + source = llvm-project; + + exclusive = true; + early = ` +LLVM_VERSION_MAJOR="$(cmake -P /dev/stdin <<< ' +include(cmake/Modules/LLVMVersion.cmake) +message(NOTICE "${LLVM_VERSION_MAJOR}") +' 2>&1)" +`; + exec = cmake { + append = [ "compiler-rt" ]; + cache = { + "ENABLE_LINKER_BUILD_ID": "ON"; + + // libc++ not yet available + "CMAKE_CXX_COMPILER_TARGET": ""; + + "LLVM_HOST_TRIPLE": `"${ROSA_TRIPLE}"`; + "LLVM_DEFAULT_TARGET_TRIPLE": `"${ROSA_TRIPLE}"`; + "LLVM_ENABLE_RTTI": "ON"; + "LLVM_BUILD_LLVM_DYLIB": "ON"; + "LLVM_LINK_LLVM_DYLIB": "ON"; + "LLVM_ENABLE_PER_TARGET_RUNTIME_DIR": "ON"; + + "COMPILER_RT_BUILD_BUILTINS": "ON"; + "COMPILER_RT_DEFAULT_TARGET_ONLY": "ON"; + "COMPILER_RT_USE_BUILTINS_LIBRARY": "ON"; + "COMPILER_RT_SANITIZERS_TO_BUILD": "asan"; + "COMPILER_RT_BUILD_GWP_ASAN": "OFF"; + + // does not work without libunwind + "COMPILER_RT_BUILD_CTX_PROFILE": "OFF"; + "COMPILER_RT_BUILD_LIBFUZZER": "OFF"; + "COMPILER_RT_BUILD_MEMPROF": "OFF"; + "COMPILER_RT_BUILD_PROFILE": "OFF"; + "COMPILER_RT_BUILD_XRAY": "OFF"; + }; + skipTest = true; + postInstall = ` +mkdir -p "/work/system/lib/clang/$LLVM_VERSION_MAJOR/lib/" +ln -s \ + "../../../${ROSA_TRIPLE}" \ + "/work/system/lib/clang/$LLVM_VERSION_MAJOR/lib/" + +ln -s \ + "clang_rt.crtbegin-`+linuxArch+`.o" \ + "/work/system/lib/${ROSA_TRIPLE}/crtbeginS.o" +ln -s \ + "clang_rt.crtend-`+linuxArch+`.o" \ + "/work/system/lib/${ROSA_TRIPLE}/crtendS.o" +`; + }; + + inputs = [ + python-early, + + musl-headers, + kernel-headers, + ]; + + runtime = [ musl ]; +} + package early-runtimes { description = "early LLVM runtimes: libunwind, libcxx, libcxxabi"; source = llvm-project;