at 18.09-beta 2.9 kB view raw
1{ emscriptenVersion, stdenv, fetchFromGitHub, emscriptenfastcomp, python, nodejs, closurecompiler 2, jre, binaryen, enableWasm ? true , cmake 3}: 4 5let 6 rev = emscriptenVersion; 7 appdir = "share/emscripten"; 8 binaryenVersioned = binaryen.override { emscriptenRev = rev; }; 9in 10 11stdenv.mkDerivation { 12 name = "emscripten-${rev}"; 13 14 src = fetchFromGitHub { 15 owner = "kripken"; 16 repo = "emscripten"; 17 sha256 = "02p0cp86vd1mydlpq544xbydggpnrq9dhbxx7h08j235frjm5cdc"; 18 inherit rev; 19 }; 20 21 buildInputs = [ nodejs cmake python ]; 22 23 buildCommand = '' 24 mkdir -p $out/${appdir} 25 cp -r $src/* $out/${appdir} 26 chmod -R +w $out/${appdir} 27 grep -rl '^#!/usr.*python' $out/${appdir} | xargs sed -i -s 's@^#!/usr.*python.*@#!${python}/bin/python@' 28 sed -i -e "s,EM_CONFIG = '~/.emscripten',EM_CONFIG = '$out/${appdir}/config'," $out/${appdir}/tools/shared.py 29 sed -i -e 's,^.*did not see a source tree above the LLVM.*$, return True,' $out/${appdir}/tools/shared.py 30 sed -i -e 's,def check_sanity(force=False):,def check_sanity(force=False):\n return,' $out/${appdir}/tools/shared.py 31 # fixes cmake support 32 sed -i -e "s/print \('emcc (Emscript.*\)/sys.stderr.write(\1); sys.stderr.flush()/g" $out/${appdir}/emcc.py 33 mkdir $out/bin 34 ln -s $out/${appdir}/{em++,em-config,emar,embuilder.py,emcc,emcmake,emconfigure,emlink.py,emmake,emranlib,emrun,emscons} $out/bin 35 36 echo "EMSCRIPTEN_ROOT = '$out/${appdir}'" > $out/${appdir}/config 37 echo "LLVM_ROOT = '${emscriptenfastcomp}/bin'" >> $out/${appdir}/config 38 echo "PYTHON = '${python}/bin/python'" >> $out/${appdir}/config 39 echo "NODE_JS = '${nodejs}/bin/node'" >> $out/${appdir}/config 40 echo "JS_ENGINES = [NODE_JS]" >> $out/${appdir}/config 41 echo "COMPILER_ENGINE = NODE_JS" >> $out/${appdir}/config 42 echo "CLOSURE_COMPILER = '${closurecompiler}/share/java/closure-compiler-v${closurecompiler.version}.jar'" >> $out/${appdir}/config 43 echo "JAVA = '${jre}/bin/java'" >> $out/${appdir}/config 44 # to make the test(s) below work 45 echo "SPIDERMONKEY_ENGINE = []" >> $out/${appdir}/config 46 '' 47 + stdenv.lib.optionalString enableWasm '' 48 echo "BINARYEN_ROOT = '${binaryenVersioned}'" >> $out/share/emscripten/config 49 '' 50 + 51 '' 52 echo "--------------- running test -----------------" 53 # quick hack to get the test working 54 HOME=$TMPDIR 55 cp $out/${appdir}/config $HOME/.emscripten 56 export PATH=$PATH:$out/bin 57 58 #export EMCC_DEBUG=2 59 ${python}/bin/python $src/tests/runner.py test_hello_world 60 echo "--------------- /running test -----------------" 61 ''; 62 63 meta = with stdenv.lib; { 64 homepage = https://github.com/kripken/emscripten; 65 description = "An LLVM-to-JavaScript Compiler"; 66 platforms = platforms.all; 67 maintainers = with maintainers; [ qknight matthewbauer ]; 68 license = licenses.ncsa; 69 }; 70}