Merge pull request #21554 from gebner/emscripten-wrapped

emscriptenfastcomp: build using cmake and use cc-wrapper

authored by Gabriel Ebner and committed by GitHub c6ec873a 494d695b

+45 -24
+28 -20
pkgs/development/compilers/emscripten-fastcomp/default.nix
··· 1 - { stdenv, fetchFromGitHub, python }: 1 + { stdenv, fetchFromGitHub, cmake, python, ... }: 2 2 3 3 let 4 - rev = "1.36.4"; 4 + rev = "1.37.1"; 5 + gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; 5 6 in 6 - 7 7 stdenv.mkDerivation rec { 8 8 name = "emscripten-fastcomp-${rev}"; 9 9 10 - srcFC = fetchFromGitHub { 10 + src = fetchFromGitHub { 11 11 owner = "kripken"; 12 12 repo = "emscripten-fastcomp"; 13 - sha256 = "0838rl0n9hyq5dd0gmj5rvigbmk5mhrhzyjk0zd8mjs2mk8z510l"; 13 + sha256 = "08jci6h73j4pcd6iq5r4zn8c6qpd6qxc7xivxh3iama9hghmxyk9"; 14 14 inherit rev; 15 15 }; 16 16 17 17 srcFL = fetchFromGitHub { 18 18 owner = "kripken"; 19 19 repo = "emscripten-fastcomp-clang"; 20 - sha256 = "169hfabamv3jmf88flhl4scwaxdh24196gwpz3sdb26lzcns519q"; 20 + sha256 = "053svm8vnsma61jzzr8n1224brmjw4pzvklh572bm1p7yg32chaw"; 21 21 inherit rev; 22 22 }; 23 23 24 - buildInputs = [ python ]; 25 - buildCommand = '' 26 - cp -as ${srcFC} $TMPDIR/src 27 - chmod +w $TMPDIR/src/tools 28 - cp -as ${srcFL} $TMPDIR/src/tools/clang 29 - 30 - chmod +w $TMPDIR/src 31 - mkdir $TMPDIR/src/build 32 - cd $TMPDIR/src/build 33 - 34 - ../configure --enable-optimized --disable-assertions --enable-targets=host,js 35 - make 36 - cp -a Release/bin $out 24 + nativeBuildInputs = [ cmake python ]; 25 + preConfigure = '' 26 + cp -Lr ${srcFL} tools/clang 27 + chmod +w -R tools/clang 37 28 ''; 29 + cmakeFlags = [ 30 + "-DCMAKE_BUILD_TYPE=Release" 31 + "-DLLVM_TARGETS_TO_BUILD='X86;JSBackend'" 32 + "-DLLVM_INCLUDE_EXAMPLES=OFF" 33 + "-DLLVM_INCLUDE_TESTS=OFF" 34 + # "-DCLANG_INCLUDE_EXAMPLES=OFF" 35 + "-DCLANG_INCLUDE_TESTS=OFF" 36 + ] ++ (stdenv.lib.optional stdenv.isLinux 37 + # necessary for clang to find crtend.o 38 + "-DGCC_INSTALL_PREFIX=${gcc}" 39 + ); 40 + enableParallelBuilding = true; 41 + 42 + passthru = { 43 + isClang = true; 44 + inherit gcc; 45 + }; 38 46 39 47 meta = with stdenv.lib; { 40 48 homepage = https://github.com/kripken/emscripten-fastcomp; 41 - description = "Emscripten llvm"; 49 + description = "Emscripten LLVM"; 42 50 platforms = platforms.all; 43 51 maintainers = with maintainers; [ qknight matthewbauer ]; 44 52 license = stdenv.lib.licenses.ncsa;
+5 -3
pkgs/development/compilers/emscripten/default.nix
··· 1 1 { stdenv, fetchFromGitHub, emscriptenfastcomp, python, nodejs, closurecompiler, jre }: 2 2 3 3 let 4 - rev = "1.36.4"; 4 + rev = "1.37.1"; 5 5 appdir = "share/emscripten"; 6 6 in 7 7 ··· 11 11 src = fetchFromGitHub { 12 12 owner = "kripken"; 13 13 repo = "emscripten"; 14 - sha256 = "1c9592i891z1v9rp4a4lnsp14nwiqfxnh37g6xwwjd1bqx7x4hn7"; 14 + sha256 = "0xl8lv0ihxsnwnhma3i34pkbz0v1yyc93ac6mdqmzv6fx2wczm04"; 15 15 inherit rev; 16 16 }; 17 17 ··· 23 23 sed -i -e "s,EM_CONFIG = '~/.emscripten',EM_CONFIG = '$out/${appdir}/config'," $out/${appdir}/tools/shared.py 24 24 sed -i -e 's,^.*did not see a source tree above the LLVM.*$, return True,' $out/${appdir}/tools/shared.py 25 25 sed -i -e 's,def check_sanity(force=False):,def check_sanity(force=False):\n return,' $out/${appdir}/tools/shared.py 26 + # fixes cmake support 27 + sed -i -e "s/print \('emcc (Emscript.*\)/sys.stderr.write(\1); sys.stderr.flush()/g" $out/${appdir}/emcc.py 26 28 mkdir $out/bin 27 29 ln -s $out/${appdir}/{em++,em-config,emar,embuilder.py,emcc,emcmake,emconfigure,emlink.py,emmake,emranlib,emrun,emscons} $out/bin 28 30 29 31 echo "EMSCRIPTEN_ROOT = '$out/${appdir}'" > $out/${appdir}/config 30 - echo "LLVM_ROOT = '${emscriptenfastcomp}'" >> $out/${appdir}/config 32 + echo "LLVM_ROOT = '${emscriptenfastcomp}/bin'" >> $out/${appdir}/config 31 33 echo "PYTHON = '${python}/bin/python'" >> $out/${appdir}/config 32 34 echo "NODE_JS = '${nodejs}/bin/node'" >> $out/${appdir}/config 33 35 echo "JS_ENGINES = [NODE_JS]" >> $out/${appdir}/config
+12 -1
pkgs/top-level/all-packages.nix
··· 1555 1555 1556 1556 emscripten = callPackage ../development/compilers/emscripten { }; 1557 1557 1558 - emscriptenfastcomp = callPackage ../development/compilers/emscripten-fastcomp { }; 1558 + emscriptenfastcomp-unwrapped = callPackage ../development/compilers/emscripten-fastcomp { }; 1559 + emscriptenfastcomp-wrapped = wrapCC emscriptenfastcomp-unwrapped; 1560 + emscriptenfastcomp = symlinkJoin { 1561 + name = "emscriptenfastcomp"; 1562 + paths = [ emscriptenfastcomp-wrapped emscriptenfastcomp-unwrapped ]; 1563 + preferLocalBuild = false; 1564 + allowSubstitutes = true; 1565 + postBuild = '' 1566 + # replace unwrapped clang-3.9 binary by wrapper 1567 + ln -sf $out/bin/clang $out/bin/clang-[0-9]* 1568 + ''; 1569 + }; 1559 1570 1560 1571 emscriptenPackages = recurseIntoAttrs (callPackage ./emscripten-packages.nix { }); 1561 1572