aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/package/llvm
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-10-22 01:56:23 +0900
committerOphestra <cat@gensokyo.uk>2026-10-22 11:10:01 +0900
commit9dfbf95db02054204defbe422099c02b790a19fc (patch)
treef8c318ebfc5c824b2eb5e7a8aac3b835ee05a4ed /internal/rosa/package/llvm
parent29f86b3446c9fe35d2a359df45471abdaa35cea4 (diff)
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 <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/package/llvm')
-rw-r--r--internal/rosa/package/llvm/package.az52
1 files changed, 43 insertions, 9 deletions
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,
+ ];
}