summaryrefslogtreecommitdiff
path: root/pkgs/development/compilers/llvm/7/clang/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/llvm/7/clang/default.nix')
-rw-r--r--pkgs/development/compilers/llvm/7/clang/default.nix24
1 files changed, 18 insertions, 6 deletions
diff --git a/pkgs/development/compilers/llvm/7/clang/default.nix b/pkgs/development/compilers/llvm/7/clang/default.nix
index 4ab13441e36f..187602ef361e 100644
--- a/pkgs/development/compilers/llvm/7/clang/default.nix
+++ b/pkgs/development/compilers/llvm/7/clang/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, fetch, cmake, libxml2, llvm, version, clang-tools-extra_src, python3, lld
+{ lib, stdenv, fetch, cmake, libxml2, libllvm, version, clang-tools-extra_src, python3
+, buildLlvmTools
, fixDarwinDylibNames
, enableManpages ? false
, enablePolly ? false # TODO: get this info from llvm (passthru?)
@@ -23,17 +24,21 @@ let
++ lib.optional enableManpages python3.pkgs.sphinx
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
- buildInputs = [ libxml2 llvm lld ];
+ buildInputs = [ libxml2 libllvm ];
cmakeFlags = [
"-DCMAKE_CXX_FLAGS=-std=c++11"
"-DLLVM_ENABLE_RTTI=ON"
+ "-DLLVM_CONFIG_PATH=${libllvm.dev}/bin/llvm-config${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "-native"}"
] ++ lib.optionals enableManpages [
"-DCLANG_INCLUDE_DOCS=ON"
"-DLLVM_ENABLE_SPHINX=ON"
"-DSPHINX_OUTPUT_MAN=ON"
"-DSPHINX_OUTPUT_HTML=OFF"
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
+ ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+ "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
+ "-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen"
] ++ lib.optionals enablePolly [
"-DWITH_POLLY=ON"
"-DLINK_POLLY_INTO_TOOLS=ON"
@@ -43,6 +48,10 @@ let
./purity.patch
# make clang -xhip use $PATH to find executables
./HIP-use-PATH-7.patch
+ # Backport for the `--unwindlib=[libgcc|compiler-rt]` flag, which is
+ # needed for our bootstrapping to not interfere with C.
+ ./unwindlib.patch
+ ./gnu-install-dirs.patch
];
postPatch = ''
@@ -59,12 +68,12 @@ let
--replace "NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB" FALSE
'';
- outputs = [ "out" "lib" "python" ];
+ outputs = [ "out" "lib" "dev" "python" ];
# Clang expects to find LLVMgold in its own prefix
postInstall = ''
- if [ -e ${llvm}/lib/LLVMgold.so ]; then
- ln -sv ${llvm}/lib/LLVMgold.so $out/lib
+ if [ -e ${libllvm.lib}/lib/LLVMgold.so ]; then
+ ln -sv ${libllvm.lib}/lib/LLVMgold.so $lib/lib
fi
ln -sv $out/bin/clang $out/bin/cpp
@@ -81,11 +90,14 @@ let
fi
mv $out/share/clang/*.py $python/share/clang
rm $out/bin/c-index-test
+
+ mkdir -p $dev/bin
+ cp bin/clang-tblgen $dev/bin
'';
passthru = {
isClang = true;
- inherit llvm;
+ inherit libllvm;
};
meta = {