From 9dfbf95db02054204defbe422099c02b790a19fc Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 22 Oct 2026 01:56:23 +0900 Subject: internal/rosa: initial cross-compilation support This successfully cross-compiles the toolchain. More work is needed to support cross-compilation on all native helpers and existing packages. Signed-off-by: Ophestra --- internal/rosa/package/llvm/package.az | 52 +++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 9 deletions(-) (limited to 'internal/rosa/package/llvm') diff --git a/internal/rosa/package/llvm/package.az b/internal/rosa/package/llvm/package.az index 631228be..02cea79a 100644 --- a/internal/rosa/package/llvm/package.az +++ b/internal/rosa/package/llvm/package.az @@ -17,13 +17,41 @@ package llvm-project { ]; } +package early-builtins { + description = "early LLVM runtime: compiler-rt (builtins)"; + source = llvm-project; + + exclusive = true; + + exec = cmake { + append = [ "compiler-rt/lib/builtins" ]; + cache = { + "LLVM_HOST_TRIPLE": triple; + "LLVM_ENABLE_RTTI": "ON"; + "LLVM_BUILD_LLVM_DYLIB": "ON"; + "LLVM_LINK_LLVM_DYLIB": "ON"; + "LLVM_ENABLE_PER_TARGET_RUNTIME_DIR": "ON"; + + "COMPILER_RT_DEFAULT_TARGET_ONLY": "ON"; + }; + test = nil; + }; + + tools = [ python-early ]; + + inputs = [ + musl-headers, + kernel-headers, + ]; +} + package early-compiler-rt { description = "early LLVM runtime: compiler-rt"; source = llvm-project; exclusive = true; early = ` -LLVM_VERSION_MAJOR="$(cmake -P /dev/stdin <<< ' +LLVM_VERSION_MAJOR="$(CLICOLOR_FORCE= cmake -P /dev/stdin <<< ' include(cmake/Modules/LLVMVersion.cmake) message(NOTICE "${LLVM_VERSION_MAJOR}") ' 2>&1)" @@ -36,6 +64,9 @@ message(NOTICE "${LLVM_VERSION_MAJOR}") // libc++ not yet available "CMAKE_CXX_COMPILER_TARGET": ""; + // musl not yet available + "CMAKE_TRY_COMPILE_TARGET_TYPE": "STATIC_LIBRARY"; + "LLVM_HOST_TRIPLE": triple; "LLVM_ENABLE_RTTI": "ON"; "LLVM_BUILD_LLVM_DYLIB": "ON"; @@ -45,15 +76,15 @@ message(NOTICE "${LLVM_VERSION_MAJOR}") "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_SANITIZERS": "OFF"; "COMPILER_RT_BUILD_LIBFUZZER": "OFF"; "COMPILER_RT_BUILD_MEMPROF": "OFF"; "COMPILER_RT_BUILD_PROFILE": "OFF"; "COMPILER_RT_BUILD_XRAY": "OFF"; + "COMPILER_RT_BUILD_ORC": "OFF"; }; test = nil; postInstall = ` @@ -71,14 +102,14 @@ ln -s \ `; }; - inputs = [ - python-early, + tools = [ python-early ]; + inputs = [ musl-headers, kernel-headers, ]; - runtime = [ musl ]; + cross = [ early-builtins ]; } package early-runtimes { @@ -120,14 +151,17 @@ package early-runtimes { test = nil; }; - inputs = [ - python-early, + tools = [ python-early ]; + inputs = [ zlib, zstd, early-compiler-rt, kernel-headers, ]; - runtime = [ early-compiler-rt ]; + runtime = [ + musl, + early-compiler-rt, + ]; } -- cgit v1.3.1