diff options
author | Gabriel Ebner <gebner@gebner.org> | 2020-08-29 14:14:20 +0200 |
---|---|---|
committer | Gabriel Ebner <gebner@gebner.org> | 2020-08-29 14:14:57 +0200 |
commit | ad330434031519fd5dd7e52f32d7d8a30f36a4db (patch) | |
tree | fbae5d90fce9b05363e5193c5250346b4d8160b7 /pkgs/development/compilers/emscripten/default.nix | |
parent | fc0f11e3d533fadbb7d2330b3d3b50bd4eae298e (diff) |
emscripten: precompile libraries for wasm2c
Diffstat (limited to 'pkgs/development/compilers/emscripten/default.nix')
-rw-r--r-- | pkgs/development/compilers/emscripten/default.nix | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix index 0b43017aa120f..ac13f95593054 100644 --- a/pkgs/development/compilers/emscripten/default.nix +++ b/pkgs/development/compilers/emscripten/default.nix @@ -61,6 +61,10 @@ stdenv.mkDerivation rec { sed -i "s|^EMXX =.*|EMXX='$out/bin/em++'|" tools/shared.py sed -i "s|^EMAR =.*|EMAR='$out/bin/emar'|" tools/shared.py sed -i "s|^EMRANLIB =.*|EMRANLIB='$out/bin/emranlib'|" tools/shared.py + + # The tests use the C compiler to compile generated C code, + # use the wrapped compiler + sed -i 's/shared.CLANG_CC/"cc"/' tests/runner.py ''; installPhase = '' @@ -77,16 +81,23 @@ stdenv.mkDerivation rec { --set PYTHON ${python3}/bin/python done - # precompile libc in all four variants: - # wasm, wasm-pic, wasm-lto, wasm-lto-pic + # precompile libc (etc.) in all variants: + pushd $TMPDIR + echo 'int main() { return 42; }' >test.c + for LTO in -flto ""; do + # wasm2c doesn't work with PIC + $out/bin/emcc -s WASM2C -s STANDALONE_WASM $LTO test.c + + for RELOCATABLE in "" "-s RELOCATABLE"; do + $out/bin/emcc $RELOCATABLE $LTO test.c + done + done + popd + export PYTHON=${python3}/bin/python export NODE_PATH=${nodeModules}/node_modules pushd $appdir - for lto in wasm2 wasmlto2; do - for pic in test_hello_world test_relocatable_void_function; do - python tests/runner.py $lto.$pic - done - done + python tests/runner.py test_hello_world popd ''; |