1{ emscriptenVersion, stdenv, fetchFromGitHub, cmake, python, gtest, ... }:
2
3let
4 rev = emscriptenVersion;
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 = "04j698gmp686b5lricjakm5hyh2z2kh28m1ffkghmkyz4zkzmx98";
14 inherit rev;
15 };
16
17 srcFL = fetchFromGitHub {
18 owner = "kripken";
19 repo = "emscripten-fastcomp-clang";
20 sha256 = "1ici51mmpgg80xk3y8f376nbbfak6rz27qdy98l8lxkrymklp5g5";
21 inherit rev;
22 };
23
24 nativeBuildInputs = [ cmake python gtest ];
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=ON"
34 #"-DLLVM_CONFIG=${llvm}/bin/llvm-config"
35 "-DLLVM_BUILD_TESTS=ON"
36 "-DCLANG_INCLUDE_TESTS=ON"
37 ] ++ (stdenv.lib.optional stdenv.isLinux
38 # necessary for clang to find crtend.o
39 "-DGCC_INSTALL_PREFIX=${gcc}"
40 );
41 enableParallelBuilding = true;
42
43 passthru = {
44 isClang = true;
45 inherit gcc;
46 };
47
48 meta = with stdenv.lib; {
49 homepage = https://github.com/kripken/emscripten-fastcomp;
50 description = "Emscripten LLVM";
51 platforms = platforms.all;
52 maintainers = with maintainers; [ qknight matthewbauer ];
53 license = stdenv.lib.licenses.ncsa;
54 };
55}