This repository has no description
1{
2 fetch,
3 run,
4
5 clang,
6 clang-tblgen,
7 cmake,
8 lld,
9 llvm,
10 sysroot,
11 ninja,
12 python3,
13}:
14
15run
16 rec {
17 name = "clang";
18 # renovate: datasource=github-releases name=llvm/llvm-project
19 version = "19.1.7";
20 src = fetch.tar {
21 url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-project-${version}.src.tar.xz";
22 hash = "sha256-gkAf6nt50AeAQ/dZi4NShNZlCnW5PmS292Hqe2MJdQE=";
23 };
24 path = [
25 clang
26 clang-tblgen
27 cmake
28 lld
29 llvm
30 ninja
31 python3
32 ];
33 }
34 ''
35 (cd clang && patch -p1 <${./clang-add-wasm-linux-target.patch})
36 patch -p1 <${./llvm-remove-mmap-fork.patch}
37
38 cmake -S llvm -B build -G Ninja \
39 -DWASM=ON \
40 -DCMAKE_BUILD_TYPE=Release \
41 -DCMAKE_C_COMPILER_TARGET=wasm32-unknown-linux-musl \
42 -DCMAKE_C_COMPILER_WORKS=ON \
43 -DCMAKE_C_FLAGS="--sysroot=${sysroot}" \
44 -DCMAKE_CXX_COMPILER_TARGET=wasm32-unknown-linux-musl \
45 -DCMAKE_CXX_COMPILER_WORKS=ON \
46 -DCMAKE_CXX_FLAGS="--sysroot=${sysroot} -stdlib=libc++" \
47 -DCMAKE_INSTALL_PREFIX=$out \
48 -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF \
49 -DCMAKE_SKIP_BUILD_RPATH=ON \
50 -DCMAKE_SKIP_INSTALL_RPATH=ON \
51 -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
52 -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld --sysroot=${sysroot} -Wl,--allow-undefined" \
53 -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld --sysroot=${sysroot} -Wl,--allow-undefined" \
54 -DCMAKE_SYSROOT=${sysroot} \
55 -DDEFAULT_SYSROOT=${sysroot} \
56 -DLLVM_ENABLE_PROJECTS=clang \
57 -DLLVM_ENABLE_LIBCXX=ON \
58 -DBUILD_SHARED_LIBS=OFF \
59 -DLLVM_BUILD_LLVM_DYLIB=OFF \
60 -DLLVM_LINK_LLVM_DYLIB=OFF \
61 -DCLANG_LINK_CLANG_DYLIB=OFF \
62 -DLIBCLANG_BUILD_STATIC=ON \
63 -DLLVM_ENABLE_PIC=OFF \
64 -DLLVM_ENABLE_RUNTIMES="" \
65 -DLLVM_INCLUDE_BENCHMARKS=OFF \
66 -DLLVM_INCLUDE_TESTS=OFF \
67 -DLLVM_INCLUDE_DOCS=OFF \
68 -DLLVM_BUILD_UTILS=OFF \
69 -DLLVM_TOOL_LLVM_EXEGESIS_BUILD=OFF \
70 -DCLANG_INCLUDE_TESTS=OFF \
71 -DCLANG_INCLUDE_DOCS=OFF \
72 -DCLANG_TABLEGEN=${clang-tblgen}/bin/clang-tblgen \
73 -DCLANG_TABLEGEN_EXE=${clang-tblgen}/bin/clang-tblgen \
74 -DLLVM_TABLEGEN=${llvm}/bin/llvm-tblgen \
75 -DLLVM_TABLEGEN_EXE=${llvm}/bin/llvm-tblgen \
76 -DLLVM_NATIVE_TOOL_DIR=${llvm}/bin \
77 -DLLVM_HOST_TRIPLE=wasm32-unknown-linux-musl \
78 -DLLVM_TARGET_ARCH=wasm32 \
79 -DLLVM_TARGETS_TO_BUILD="WebAssembly" \
80 -DLLVM_USE_LINKER=lld
81
82 cmake --build build --target install -j$NIX_BUILD_CORES
83 ln -s $out/bin/clang $out/bin/cc
84 ln -s $out/bin/clang++ $out/bin/c++
85 ''