diff --git a/pkgs/development/compilers/llvm/default.nix b/pkgs/development/compilers/llvm/default.nix index c98005417c94..fc308f4e61cc 100644 --- a/pkgs/development/compilers/llvm/default.nix +++ b/pkgs/development/compilers/llvm/default.nix @@ -1,17 +1,20 @@ -{ stdenv, fetchurl, gcc, flex, perl, libtool, groff -, buildClang ? false }: +{ stdenv, fetchurl, perl, groff, buildClang ? false }: let version = "2.9"; in stdenv.mkDerivation ({ name = "llvm-${version}"; + CC = if stdenv.gcc ? clang then "clang" else "gcc"; + + CXX = if stdenv.gcc ? clang then "clang++" else "g++"; + src = fetchurl { url = "http://llvm.org/releases/${version}/llvm-${version}.tgz"; sha256 = "0y9pgdakn3n0vf8zs6fjxjw6972nyw4rkfwwza6b8a3ll77kc4k6"; }; - buildInputs = [ gcc flex perl groff ]; + buildInputs = [ perl groff ]; configureFlags = [ "--enable-optimized" "--enable-shared" "--disable-static" ]; @@ -51,13 +54,13 @@ stdenv.mkDerivation ({ # Set up the header file paths preConfigure = '' - sed -i -e 's,C_INCLUDE_PATH,"${gcc.libc}/include/",' \ + sed -i -e 's,C_INCLUDE_PATH,"${stdenv.gcc.libc}/include/",' \ -e 's,CPP_HOST,"${triplet}",' \ - -e 's,CPP_INCLUDE_PATH,"${gcc.gcc}/include/c++/${gcc.gcc.version}",' \ + -e 's,CPP_INCLUDE_PATH,"${stdenv.gcc.gcc}/include/c++/${stdenv.gcc.gcc.version}",' \ tools/clang/lib/Frontend/InitHeaderSearch.cpp ''; - passthru = { gcc = gcc.gcc; }; + passthru = { gcc = stdenv.gcc.gcc; }; meta = { homepage = http://clang.llvm.org/; diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 3e596c4ef0ea..311d967c0a34 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -11,6 +11,7 @@ rec { # Override the compiler in stdenv for specific packages. overrideGCC = stdenv: gcc: stdenv // { mkDerivation = args: stdenv.mkDerivation (args // { NIX_GCC = gcc; }); + inherit gcc; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3660c152a169..ba131ccf4762 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1640,7 +1640,12 @@ let ccl = builderDefsPackage ../development/compilers/ccl {}; - clang = wrapClang (llvm.override { buildClang = true; }); + clangBoot = wrapClang (llvm.override { buildClang = true; }); + + clang = wrapClang (llvm.override { buildClang = true; stdenv = stdenvAdapters.overrideGCC stdenv clangBoot; }); + + #Use this instead of stdenv to build with clang + clangStdenv = stdenvAdapters.overrideGCC stdenv clang; clangSVN = llvmSVN.override { buildClang = true;