diff --git a/pkgs/development/compilers/emscripten-fastcomp/default.nix b/pkgs/development/compilers/emscripten-fastcomp/default.nix index f35ca26584f1..e543f799495f 100644 --- a/pkgs/development/compilers/emscripten-fastcomp/default.nix +++ b/pkgs/development/compilers/emscripten-fastcomp/default.nix @@ -1,54 +1,22 @@ -{ stdenv, fetchFromGitHub, cmake, python, ... }: - +{ newScope, stdenv, wrapCC, wrapCCWith, symlinkJoin }: let - rev = "1.37.16"; - gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; -in -stdenv.mkDerivation rec { - name = "emscripten-fastcomp-${rev}"; + callPackage = newScope (self // {inherit stdenv;}); - src = fetchFromGitHub { - owner = "kripken"; - repo = "emscripten-fastcomp"; - sha256 = "0wj9sc0gciaiidcjv6wb0qn6ks06xds7q34351masc7qpvd217by"; - inherit rev; + self = { + emscriptenfastcomp-unwrapped = callPackage ./emscripten-fastcomp.nix {}; + emscriptenfastcomp-wrapped = wrapCCWith stdenv.cc.libc '' + # hardening flags break WASM support + cat > $out/nix-support/add-hardening.sh + '' self.emscriptenfastcomp-unwrapped; + emscriptenfastcomp = symlinkJoin { + name = "emscriptenfastcomp"; + paths = [ self.emscriptenfastcomp-wrapped self.emscriptenfastcomp-unwrapped ]; + preferLocalBuild = false; + allowSubstitutes = true; + postBuild = '' + # replace unwrapped clang-3.9 binary by wrapper + ln -sf $out/bin/clang $out/bin/clang-[0-9]* + ''; + }; }; - - srcFL = fetchFromGitHub { - owner = "kripken"; - repo = "emscripten-fastcomp-clang"; - sha256 = "1akdgxzxhzjbhp4d14ajcrp9jrf39x004a726ly2gynqc185l4j7"; - inherit rev; - }; - - nativeBuildInputs = [ cmake python ]; - preConfigure = '' - cp -Lr ${srcFL} tools/clang - chmod +w -R tools/clang - ''; - cmakeFlags = [ - "-DCMAKE_BUILD_TYPE=Release" - "-DLLVM_TARGETS_TO_BUILD='X86;JSBackend'" - "-DLLVM_INCLUDE_EXAMPLES=OFF" - "-DLLVM_INCLUDE_TESTS=OFF" - # "-DCLANG_INCLUDE_EXAMPLES=OFF" - "-DCLANG_INCLUDE_TESTS=OFF" - ] ++ (stdenv.lib.optional stdenv.isLinux - # necessary for clang to find crtend.o - "-DGCC_INSTALL_PREFIX=${gcc}" - ); - enableParallelBuilding = true; - - passthru = { - isClang = true; - inherit gcc; - }; - - meta = with stdenv.lib; { - homepage = https://github.com/kripken/emscripten-fastcomp; - description = "Emscripten LLVM"; - platforms = platforms.all; - maintainers = with maintainers; [ qknight matthewbauer ]; - license = stdenv.lib.licenses.ncsa; - }; -} +in self diff --git a/pkgs/development/compilers/emscripten-fastcomp/emscripten-fastcomp.nix b/pkgs/development/compilers/emscripten-fastcomp/emscripten-fastcomp.nix new file mode 100644 index 000000000000..f35ca26584f1 --- /dev/null +++ b/pkgs/development/compilers/emscripten-fastcomp/emscripten-fastcomp.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, cmake, python, ... }: + +let + rev = "1.37.16"; + gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; +in +stdenv.mkDerivation rec { + name = "emscripten-fastcomp-${rev}"; + + src = fetchFromGitHub { + owner = "kripken"; + repo = "emscripten-fastcomp"; + sha256 = "0wj9sc0gciaiidcjv6wb0qn6ks06xds7q34351masc7qpvd217by"; + inherit rev; + }; + + srcFL = fetchFromGitHub { + owner = "kripken"; + repo = "emscripten-fastcomp-clang"; + sha256 = "1akdgxzxhzjbhp4d14ajcrp9jrf39x004a726ly2gynqc185l4j7"; + inherit rev; + }; + + nativeBuildInputs = [ cmake python ]; + preConfigure = '' + cp -Lr ${srcFL} tools/clang + chmod +w -R tools/clang + ''; + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DLLVM_TARGETS_TO_BUILD='X86;JSBackend'" + "-DLLVM_INCLUDE_EXAMPLES=OFF" + "-DLLVM_INCLUDE_TESTS=OFF" + # "-DCLANG_INCLUDE_EXAMPLES=OFF" + "-DCLANG_INCLUDE_TESTS=OFF" + ] ++ (stdenv.lib.optional stdenv.isLinux + # necessary for clang to find crtend.o + "-DGCC_INSTALL_PREFIX=${gcc}" + ); + enableParallelBuilding = true; + + passthru = { + isClang = true; + inherit gcc; + }; + + meta = with stdenv.lib; { + homepage = https://github.com/kripken/emscripten-fastcomp; + description = "Emscripten LLVM"; + platforms = platforms.all; + maintainers = with maintainers; [ qknight matthewbauer ]; + license = stdenv.lib.licenses.ncsa; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e2c7ac55350e..659bf3b30d54 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1823,21 +1823,9 @@ with pkgs; emscripten = callPackage ../development/compilers/emscripten { }; - emscriptenfastcomp-unwrapped = callPackage ../development/compilers/emscripten-fastcomp { }; - emscriptenfastcomp-wrapped = wrapCCWith stdenv.cc.libc '' - # hardening flags break WASM support - cat > $out/nix-support/add-hardening.sh - '' emscriptenfastcomp-unwrapped; - emscriptenfastcomp = symlinkJoin { - name = "emscriptenfastcomp"; - paths = [ emscriptenfastcomp-wrapped emscriptenfastcomp-unwrapped ]; - preferLocalBuild = false; - allowSubstitutes = true; - postBuild = '' - # replace unwrapped clang-3.9 binary by wrapper - ln -sf $out/bin/clang $out/bin/clang-[0-9]* - ''; - }; + emscriptenfastcompPackages = callPackage ../development/compilers/emscripten-fastcomp { }; + + emscriptenfastcomp = emscriptenfastcompPackages.emscriptenfastcomp; emscriptenPackages = recurseIntoAttrs (callPackage ./emscripten-packages.nix { });