1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
package llvm-project {
description = "LLVM monorepo with Rosa OS patches";
anitya = 1830;
version# = "23.1.0";
output = remoteGitHub {
suffix = "llvm/llvm-project";
tag = "llvmorg-"+version;
checksum = "wgirRNAhU9451qsZn4FXcaIButgRNZWb4kb8pQwERyF1PGc-iJQVewr6xGk7ctNj";
};
patches = [
"increase-stack-size-unconditional.patch",
"add-rosa-vendor.patch",
"xfail-broken-tests.patch",
"path-system-include.patch",
"path-system-libraries.patch",
];
}
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";
};
test = nil;
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;
exclusive = true;
exec = cmake {
append = [ "runtimes" ];
cache = {
"ENABLE_LINKER_BUILD_ID": "ON";
// libc++ not yet available
"CMAKE_CXX_COMPILER_WORKS": "ON";
"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_RUNTIMES": "'libunwind;libcxx;libcxxabi'";
"LIBUNWIND_ENABLE_ASSERTIONS": "OFF";
"LIBUNWIND_USE_COMPILER_RT": "ON";
"LIBCXX_HAS_MUSL_LIBC": "ON";
"LIBCXX_USE_COMPILER_RT": "ON";
"LIBCXX_CXX_ABI": "libcxxabi";
"LIBCXX_ENABLE_STATIC_ABI_LIBRARY": "OFF";
"LIBCXX_HARDENING_MODE": "fast";
"LIBCXX_HAS_ATOMIC_LIB": "OFF";
"LIBCXXABI_USE_COMPILER_RT": "ON";
"LIBCXXABI_USE_LLVM_UNWINDER": "ON";
"LIBCXXABI_ENABLE_STATIC_UNWINDER": "OFF";
"LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL": "OFF";
"LLVM_ENABLE_ZLIB": "FORCE_ON";
"LLVM_ENABLE_ZSTD": "FORCE_ON";
"LLVM_ENABLE_LIBXML2": "OFF";
};
test = nil;
};
inputs = [
python-early,
zlib,
zstd,
early-compiler-rt,
kernel-headers,
];
runtime = [ early-compiler-rt ];
}
|