From 020e3aa4fec74cf72bb853b854bba66e96302ea9 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Mon, 26 Oct 2026 02:55:38 +0900 Subject: internal/rosa: LLVM-specific arch name This is different from linuxArch for PowerPC. While the alternative usually works fine, compiling compiler-rt builtins produces no output with linuxArch. The musl installation also uses this name. Signed-off-by: Ophestra --- internal/rosa/go.go | 6 +++--- internal/rosa/meson.go | 2 +- internal/rosa/package/go.az | 2 +- internal/rosa/package/llvm/package.az | 11 ----------- internal/rosa/package/musl/package.az | 2 +- internal/rosa/package/python/package.az | 6 +++--- internal/rosa/package/tamago.az | 2 +- internal/rosa/package/toybox.az | 8 ++++---- internal/rosa/rosa.go | 25 ++++++++++++++++++++----- internal/rosa/state.go | 2 ++ 10 files changed, 36 insertions(+), 30 deletions(-) (limited to 'internal') diff --git a/internal/rosa/go.go b/internal/rosa/go.go index fb588724..dac77aa7 100644 --- a/internal/rosa/go.go +++ b/internal/rosa/go.go @@ -131,7 +131,7 @@ echo \ "YtrDka402BOAEwywx03Vz4QlVwoBiguJHzG7PuythMCPHXS8CVMLvzmvgEbu4Tzu", []string{"CGO_ENABLED=0"}, ` sed -i \ - 's,/lib/ld-musl-`+t.linuxArch()+`.so.1,/system/bin/linker,' \ + 's,/lib/ld-musl-`+t.llvmArch()+`.so.1,/system/bin/linker,' \ cmd/link/internal/`+t.arch+`/obj.go rm \ @@ -149,7 +149,7 @@ echo \ "wcI32bl1tkqbgcelGtGWPI4RtlEddd-PTd76Eb-k7nXA5LbE9yTNdIL9QSOOxMOs", []string{"CGO_ENABLED=0"}, ` sed -i \ - 's,/lib/ld-musl-`+t.linuxArch()+`.so.1,/system/bin/linker,' \ + 's,/lib/ld-musl-`+t.llvmArch()+`.so.1,/system/bin/linker,' \ cmd/link/internal/`+t.arch+`/obj.go `, go121, ) @@ -159,7 +159,7 @@ sed -i \ checksum, []string{"CGO_ENABLED=0"}, ` sed -i \ - 's,/lib/ld-musl-`+t.linuxArch()+`.so.1,/system/bin/linker,' \ + 's,/lib/ld-musl-`+t.llvmArch()+`.so.1,/system/bin/linker,' \ cmd/link/internal/`+t.arch+`/obj.go rm \ diff --git a/internal/rosa/meson.go b/internal/rosa/meson.go index 33cbb70a..d1e8b232 100644 --- a/internal/rosa/meson.go +++ b/internal/rosa/meson.go @@ -54,7 +54,7 @@ func (*MesonHelper) paths(t Toolchain) []pkg.ExecPath { return nil } - arch, mesonArch, target := t.Arch(), t.linuxArch(), t.triple() + arch, mesonArch, target := t.Arch(), t.llvmArch(), t.triple() return []pkg.ExecPath{pkg.Path( AbsSystem.Append("mfile"), false, pkg.NewFile("mfile-"+arch, []byte(`# meson env2mfile diff --git a/internal/rosa/package/go.az b/internal/rosa/package/go.az index a6b1ff05..8b5abed4 100644 --- a/internal/rosa/package/go.az +++ b/internal/rosa/package/go.az @@ -28,7 +28,7 @@ cd /work/system/go/src/ chmod -R +w .. sed -i \ - 's,/lib/ld-musl-`+linuxArch+`.so.1,/system/bin/linker,' \ + 's,/lib/ld-musl-`+llvmArch+`.so.1,/system/bin/linker,' \ cmd/link/internal/`+arch+`/obj.go rm \ diff --git a/internal/rosa/package/llvm/package.az b/internal/rosa/package/llvm/package.az index 8502b558..6b02d6e9 100644 --- a/internal/rosa/package/llvm/package.az +++ b/internal/rosa/package/llvm/package.az @@ -21,9 +21,7 @@ package early-builtins { description = "early LLVM runtime: compiler-rt (builtins)"; source = llvm-project; - exclusive = true; libc = false; - exec = cmake { append = [ "compiler-rt/lib/builtins" ]; cache = { @@ -50,7 +48,6 @@ package early-compiler-rt { description = "early LLVM runtime: compiler-rt"; source = llvm-project; - exclusive = true; libc = false; early = ` LLVM_VERSION_MAJOR="$(CLICOLOR_FORCE= cmake -P /dev/stdin <<< ' @@ -94,13 +91,6 @@ mkdir -p "/work/system/lib/clang/$LLVM_VERSION_MAJOR/lib/" ln -s \ '../../../`+triple+`' \ "/work/system/lib/clang/$LLVM_VERSION_MAJOR/lib/" - -ln -s \ - "clang_rt.crtbegin-`+linuxArch+`.o" \ - '/work/system/lib/`+triple+`/crtbeginS.o' -ln -s \ - "clang_rt.crtend-`+linuxArch+`.o" \ - '/work/system/lib/`+triple+`/crtendS.o' `; }; @@ -118,7 +108,6 @@ package early-runtimes { description = "early LLVM runtimes: libunwind, libcxx, libcxxabi"; source = llvm-project; - exclusive = true; exec = cmake { append = [ "runtimes" ]; cache = { diff --git a/internal/rosa/package/musl/package.az b/internal/rosa/package/musl/package.az index 91f7b47b..fac7c781 100644 --- a/internal/rosa/package/musl/package.az +++ b/internal/rosa/package/musl/package.az @@ -57,7 +57,7 @@ package musl { check = nil; postInstall = ` mkdir -p /work/system/bin -COMPAT_LINKER_NAME="ld-musl-` + linuxArch + `.so.1" +COMPAT_LINKER_NAME="ld-musl-`+llvmArch+`.so.1" ln -vs ../lib/libc.so /work/system/bin/linker ln -vs ../lib/libc.so /work/system/bin/ldd ln -vs libc.so "/work/system/lib/${COMPAT_LINKER_NAME}" diff --git a/internal/rosa/package/python/package.az b/internal/rosa/package/python/package.az index 657ef546..873f438e 100644 --- a/internal/rosa/package/python/package.az +++ b/internal/rosa/package/python/package.az @@ -49,8 +49,8 @@ package python { }, // _ctypes appears to infer something from the linker name - "LDFLAGS=-Wl,--dynamic-linker=/system/lib/" + - "ld-musl-" + linuxArch + ".so.1", + "LDFLAGS=-Wl,--dynamic-linker=/system/lib/"+ + "ld-musl-"+llvmArch+".so.1", ]; exec = make { @@ -120,7 +120,7 @@ package python-early { // _ctypes appears to infer something from the linker name "LDFLAGS=-Wl,--dynamic-linker=/system/lib/" + - "ld-musl-" + linuxArch + ".so.1", + "ld-musl-"+llvmArch+".so.1", ]; exec = make { diff --git a/internal/rosa/package/tamago.az b/internal/rosa/package/tamago.az index e0c25719..627823bd 100644 --- a/internal/rosa/package/tamago.az +++ b/internal/rosa/package/tamago.az @@ -27,7 +27,7 @@ cd /work/system/tamago/src chmod -R +w .. sed -i \ - 's,/lib/ld-musl-` + linuxArch + `.so.1,/system/bin/linker,' \ + 's,/lib/ld-musl-`+llvmArch+`.so.1,/system/bin/linker,' \ cmd/link/internal/` + arch + `/obj.go rm \ diff --git a/internal/rosa/package/toybox.az b/internal/rosa/package/toybox.az index c2b8fb53..2c695ad0 100644 --- a/internal/rosa/package/toybox.az +++ b/internal/rosa/package/toybox.az @@ -92,11 +92,11 @@ chmod +w /bin/ ln -rs "$(which bash)" /bin/ || true if [ -n "${CC+x}" ]; then - echo '#!/bin/sh' > '/system/bin/`+linuxArch+`-cc' - echo "exec $CC "'"$@"' >> '/system/bin/`+linuxArch+`-cc' - chmod +x '/system/bin/`+linuxArch+`-cc' + echo '#!/bin/sh' > '/system/bin/`+llvmArch+`-cc' + echo "exec $CC "'"$@"' >> '/system/bin/`+llvmArch+`-cc' + chmod +x '/system/bin/`+llvmArch+`-cc' unset CC - export CROSS_COMPILE=`+linuxArch+`- + export CROSS_COMPILE=`+llvmArch+`- fi chmod +w kconfig tests diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go index 5f487bb7..c730127b 100644 --- a/internal/rosa/rosa.go +++ b/internal/rosa/rosa.go @@ -60,24 +60,39 @@ func linuxArch(arch string) string { return "x86_64" case "arm64": return "aarch64" - case "riscv64": - return "riscv64" + + case "ppc64le", "riscv64": + return arch default: panic("unsupported target " + arch) } } +// llvmArch returns the LLVM target-triple-specific name corresponding to arch. +func llvmArch(arch string) string { + switch arch { + case "ppc64le": + return "powerpc64le" + + default: + return linuxArch(arch) + } +} + // linuxArch returns the architecture name used by linux corresponding to arch. -func (s *S) linuxArch() string { return linuxArch(s.arch) } +func (s *S) linuxArch() string { return linuxArch(s.Arch()) } + +// llvmArch returns the LLVM target-triple-specific name corresponding to arch. +func (s *S) llvmArch() string { return llvmArch(s.Arch()) } // triple returns the Rosa OS host triple corresponding to arch. func triple(arch string) string { - return linuxArch(arch) + "-rosa-linux-musl" + return llvmArch(arch) + "-rosa-linux-musl" } // triple returns the Rosa OS target triple corresponding to arch. -func (s *S) triple() string { return triple(s.arch) } +func (s *S) triple() string { return triple(s.Arch()) } // earlyLDFLAGS returns LDFLAGS corresponding to triplet. func (s *S) earlyLDFLAGS(static bool) string { diff --git a/internal/rosa/state.go b/internal/rosa/state.go index caaea3e9..fb7fa4f8 100644 --- a/internal/rosa/state.go +++ b/internal/rosa/state.go @@ -531,10 +531,12 @@ func (s *S) getFrame() azalea.Frame { k("hostTriple"): triple(native), k("hostArch"): native, k("hostLinuxArch"): linuxArch(native), + k("hostLLVMArch"): llvmArch(native), k("triple"): s.triple(), k("arch"): s.arch, k("linuxArch"): s.linuxArch(), + k("llvmArch"): s.llvmArch(), k("earlyLDFLAGS"): s.earlyLDFLAGS(false), k("jobsE"): jobsE, -- cgit v1.3.1