Distro for Linux for WebAssembly
1{
2 fetch,
3 run,
4 lib,
5 config,
6 clang,
7 sysroot,
8 gnumake,
9 lld,
10 llvm,
11 clang-host,
12}:
13
14let
15 archiveVersion =
16 version:
17 let
18 fragments = lib.splitVersion version;
19 major = lib.head fragments;
20 minor = lib.concatMapStrings (lib.fixedWidthNumber 2) (lib.tail fragments);
21 in
22 major + minor + "00";
23in
24
25run
26 rec {
27 name = "sqlite3";
28 version = "3.51.0";
29
30 src = fetch.tar {
31 url = "https://sqlite.org/2025/sqlite-autoconf-${archiveVersion version}.tar.gz";
32 hash = "sha256-QuJt/dlqouaxsb5ciLCIf5lZCT9lDWk8sC65w20UbKU=";
33 };
34
35 path = [
36 clang
37 gnumake
38 lld
39 llvm
40 ];
41 }
42 ''
43 export CC_FOR_BUILD=${clang-host}/bin/clang
44 export CC=${clang}/bin/clang
45 export CFLAGS="--target=wasm32-unknown-linux-musl --sysroot=${sysroot} ${lib.optionalString config.debug "-g"} -matomics -mbulk-memory -DSQLITE_OMIT_WAL=1 -DSQLITE_MAX_MMAP_SIZE=0"
46 export LD=wasm-ld
47 export LDFLAGS="--target=wasm32-unknown-linux-musl --sysroot=${sysroot} -fuse-ld=lld"
48 export AR=llvm-ar
49
50 ./configure --host=wasm32-unknown-linux-musl --prefix=$out
51 make -j$NIX_BUILD_CORES install
52 ''