diff --git a/pkgs/applications/audio/faust/faust2.nix b/pkgs/applications/audio/faust/faust2.nix index 4759f228e35..612a3dab99f 100644 --- a/pkgs/applications/audio/faust/faust2.nix +++ b/pkgs/applications/audio/faust/faust2.nix @@ -37,7 +37,8 @@ let inherit src; - buildInputs = [ makeWrapper llvm emscripten openssl libsndfile pkgconfig libmicrohttpd vim ]; + nativeBuildInputs = [ makeWrapper pkgconfig vim ]; + buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd ]; passthru = { @@ -53,6 +54,20 @@ let # correct system. unset system sed -e "232s/LLVM_STATIC_LIBS/LLVMLIBS/" -i compiler/Makefile.unix + + # The makefile sets LLVM_ depending on the current llvm + # version, but the detection code is quite brittle. + # + # Failing to properly detect the llvm version means that the macro + # LLVM_VERSION ends up being the raw output of `llvm-config --version`, while + # the code assumes that it's set to a symbol like `LLVM_35`. Two problems result: + # * :0:1: error: macro names must be identifiers.; and + # * a bunch of undefined reference errors due to conditional definitions relying on + # LLVM_XY being defined. + # + # For now, fix this by 1) pinning the llvm version; 2) manually setting LLVM_VERSION + # to something the makefile will recognize. + sed '52iLLVM_VERSION=3.7.0' -i compiler/Makefile.unix ''; # Remove most faust2appl scripts since they won't run properly diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e27510f5bb8..155d3348f8b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15897,7 +15897,9 @@ let faust1 = callPackage ../applications/audio/faust/faust1.nix { }; - faust2 = callPackage ../applications/audio/faust/faust2.nix { }; + faust2 = callPackage ../applications/audio/faust/faust2.nix { + llvm = llvm_37; + }; faust2alqt = callPackage ../applications/audio/faust/faust2alqt.nix { };