From ad330434031519fd5dd7e52f32d7d8a30f36a4db Mon Sep 17 00:00:00 2001 From: Gabriel Ebner Date: Sat, 29 Aug 2020 14:14:20 +0200 Subject: [PATCH] emscripten: precompile libraries for wasm2c --- .../compilers/emscripten/default.nix | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix index 0b43017aa120..ac13f9559305 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 '';