Distro for Linux for WebAssembly
1# basic build dependencies from nixpkgs for cross compilation
2
3{ pkgs, wasmpkgs }:
4
5let
6 llvm = pkgs.llvmPackages_19;
7 clang = llvm.clang-unwrapped.overrideAttrs (attrs: {
8 patches = attrs.patches or [ ] ++ [ ./packages/clang/clang-add-wasm-linux-target.patch ];
9 });
10in
11
12{
13 clang-no-compiler-rt = clang;
14 clang = pkgs.runCommandNoCCLocal "clang" { } ''
15 cp -r ${clang} $out
16 chmod -R +w $out
17 ln -s $out/bin/clang $out/bin/cc
18 ln -s $out/bin/clang++ $out/bin/c++
19
20 cp -r ${clang.lib}/lib/clang $out/lib/
21 chmod -R +w $out/lib/clang
22
23 mkdir -p $out/lib/clang/19/lib/wasm32 $out/lib/clang/19/lib/wasm32-unknown $out/lib/clang/19/lib/wasm32-unknown-linux-musl
24 cp ${wasmpkgs.compiler-rt}/libclang_rt.builtins-wasm32.a $out/lib/clang/19/lib/wasm32/libclang_rt.builtins.a
25 cp ${wasmpkgs.compiler-rt}/libclang_rt.builtins-wasm32.a $out/lib/clang/19/lib/wasm32-unknown/libclang_rt.builtins.a
26 cp ${wasmpkgs.compiler-rt}/libclang_rt.builtins-wasm32.a $out/lib/clang/19/lib/wasm32-unknown-linux-musl/libclang_rt.builtins.a
27 '';
28 clang-host = llvm.clang;
29 clang-tblgen = llvm.clang-unwrapped.dev;
30 inherit (llvm) lld;
31 inherit (pkgs)
32 bash
33 busybox
34 bc
35 bison
36 cmake
37 curl
38 esbuild
39 findutils
40 flex
41 gnumake
42 ninja
43 perl
44 python3
45 rsync
46 wabt
47 ;
48 llvm = llvm.libllvm;
49}