1{ stdenv, fetchFromGitHub, cmake, python, ... }:
2
3let
4 rev = "1.37.16";
5 gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc;
6in
7stdenv.mkDerivation rec {
8 name = "emscripten-fastcomp-${rev}";
9
10 src = fetchFromGitHub {
11 owner = "kripken";
12 repo = "emscripten-fastcomp";
13 sha256 = "0wj9sc0gciaiidcjv6wb0qn6ks06xds7q34351masc7qpvd217by";
14 inherit rev;
15 };
16
17 srcFL = fetchFromGitHub {
18 owner = "kripken";
19 repo = "emscripten-fastcomp-clang";
20 sha256 = "1akdgxzxhzjbhp4d14ajcrp9jrf39x004a726ly2gynqc185l4j7";
21 inherit rev;
22 };
23
24 nativeBuildInputs = [ cmake python ];
25 preConfigure = ''
26 cp -Lr ${srcFL} tools/clang
27 chmod +w -R tools/clang
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 };
46
47 meta = with stdenv.lib; {
48 homepage = https://github.com/kripken/emscripten-fastcomp;
49 description = "Emscripten LLVM";
50 platforms = platforms.all;
51 maintainers = with maintainers; [ qknight matthewbauer ];
52 license = stdenv.lib.licenses.ncsa;
53 };
54}