From c20b6846f2ec4b1fe70d62fe99d165476aed65d0 Mon Sep 17 00:00:00 2001 From: Jude Taylor Date: Mon, 30 Nov 2015 12:54:04 -0800 Subject: [PATCH] rustc: build on darwin --- pkgs/development/compilers/llvm/3.7/llvm.nix | 6 ++++-- pkgs/development/compilers/rustc/generic.nix | 13 ++++++++----- pkgs/top-level/all-packages.nix | 6 +++++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/pkgs/development/compilers/llvm/3.7/llvm.nix b/pkgs/development/compilers/llvm/3.7/llvm.nix index ff038024d10f..060c0f3e8676 100644 --- a/pkgs/development/compilers/llvm/3.7/llvm.nix +++ b/pkgs/development/compilers/llvm/3.7/llvm.nix @@ -14,6 +14,7 @@ , compiler-rt_src , libcxxabi , debugVersion ? false +, enableSharedLibraries ? !stdenv.isDarwin }: let @@ -46,10 +47,11 @@ in stdenv.mkDerivation rec { "-DLLVM_BUILD_TESTS=ON" "-DLLVM_ENABLE_FFI=ON" "-DLLVM_ENABLE_RTTI=ON" - ] ++ stdenv.lib.optionals (!isDarwin) [ + ] ++ stdenv.lib.optional enableSharedLibraries "-DBUILD_SHARED_LIBS=ON" + ++ stdenv.lib.optional (!isDarwin) "-DLLVM_BINUTILS_INCDIR=${binutils}/include" - ] ++ stdenv.lib.optionals ( isDarwin) [ + ++ stdenv.lib.optionals ( isDarwin) [ "-DLLVM_ENABLE_LIBCXX=ON" "-DCAN_TARGET_i386=false" ]; diff --git a/pkgs/development/compilers/rustc/generic.nix b/pkgs/development/compilers/rustc/generic.nix index 9b3dca42b628..d578facad698 100644 --- a/pkgs/development/compilers/rustc/generic.nix +++ b/pkgs/development/compilers/rustc/generic.nix @@ -37,6 +37,8 @@ let version = if isRelease then name = "rustc-${version}"; + llvmShared = llvmPackages_37.llvm.override { enableSharedLibraries = true; }; + platform = if stdenv.system == "i686-linux" then "linux-i386" else if stdenv.system == "x86_64-linux" @@ -84,6 +86,8 @@ with stdenv.lib; stdenv.mkDerivation { __impureHostDeps = [ "/usr/lib/libedit.3.dylib" ]; + NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-rpath ${llvmShared}/lib"; + src = if isRelease then fetchzip { url = "http://static.rust-lang.org/dist/rustc-${version}-src.tar.gz"; @@ -119,7 +123,7 @@ with stdenv.lib; stdenv.mkDerivation { # ++ [ "--jemalloc-root=${jemalloc}/lib" ++ [ "--default-linker=${stdenv.cc}/bin/cc" "--default-ar=${stdenv.cc.binutils}/bin/ar" ] ++ optional (stdenv.cc.cc ? isClang) "--enable-clang" - ++ optional (!forceBundledLLVM) "--llvm-root=${llvmPackages_37.llvm}"; + ++ optional (!forceBundledLLVM) "--llvm-root=${llvmShared}"; inherit patches; @@ -155,11 +159,10 @@ with stdenv.lib; stdenv.mkDerivation { configureFlagsArray+=("--infodir=$out/share/info") ''; - # Procps is needed for one of the test cases - nativeBuildInputs = [ file python2 ] - ++ optionals stdenv.isLinux [ procps ]; + # ps is needed for one of the test cases + nativeBuildInputs = [ file python2 procps ]; buildInputs = [ ncurses ] - ++ optional (!forceBundledLLVM) llvmPackages_37.llvm; + ++ optional (!forceBundledLLVM) llvmShared; enableParallelBuilding = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8164085003b3..6d14317e4038 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4775,7 +4775,11 @@ let rtags = callPackage ../development/tools/rtags/default.nix {}; rustcMaster = callPackage ../development/compilers/rustc/head.nix {}; - rustc = callPackage ../development/compilers/rustc {}; + rustc = callPackage ../development/compilers/rustc { + callPackage = newScope ({ + procps = if stdenv.isDarwin then darwin.ps else procps; + }); + }; rustPlatform = rustStable;