diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index cf67d880a2cf..7e6c4a5fe4ff 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -32,7 +32,7 @@ , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true -, gnused ? null +, CF ? null }: assert langJava -> zip != null && unzip != null @@ -47,8 +47,8 @@ assert cloog != null -> isl != null; # LTO needs libelf and zlib. assert libelf != null -> zlib != null; -# Make sure we get GNU sed. -assert stdenv.isDarwin -> gnused != null; +# Make sure we get CoreFoundation +assert stdenv.isDarwin -> CF != null; # The go frontend is written in c++ assert langGo -> langCC; @@ -290,10 +290,6 @@ stdenv.mkDerivation ({ ++ (optionals (cross != null) [binutilsCross]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) - - # The builder relies on GNU sed (for instance, Darwin's `sed' fails with - # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. - ++ (optional stdenv.isDarwin gnused) ; NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl"; @@ -304,14 +300,11 @@ stdenv.mkDerivation ({ export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" '' + stdenv.lib.optionalString stdenv.isDarwin '' - if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then - configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include) - makeFlagsArray+=( \ - CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \ - CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ - FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ - ) - fi + configureFlagsArray+=( + --with-sysroot="${stdenv.libc}" + --with-native-system-header-dir=/include + CFLAGS_FOR_BUILD= + ) ''; dontDisableStatic = true; @@ -480,10 +473,10 @@ stdenv.mkDerivation ({ ++ optionals javaAwtGtk [ gmp mpfr ] ++ optional (libpthread != null) libpthread))); - EXTRA_TARGET_CFLAGS = - if cross != null && libcCross != null + extraFlags = + (if cross != null && libcCross != null then "-idirafter ${libcCross}/include" - else null; + else "") + optionalString stdenv.isDarwin " -F${CF}/Library/Frameworks"; EXTRA_TARGET_LDFLAGS = if cross != null && libcCross != null diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index dd77c67a023e..ee38fadf418b 100644 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -23,8 +23,11 @@ if test "$noSysDirs" = "1"; then # Figure out what extra flags to pass to the gcc compilers # being generated to make sure that they use our glibc. - extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)" - extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)" + extraFlags="$(cat $NIX_CC/nix-support/libc-cflags) ${extraFlags}" + extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags)" + if [ -e "$NIX_CC/nix-support/libc-ldflags-before" ]; then + extraLDFlags+=" $(cat $NIX_CC/nix-support/libc-ldflags-before)" + fi # Use *real* header files, otherwise a limits.h is generated # that does not include Glibc's limits.h (notably missing diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7bbca479b1a4..1ed60e94358e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3849,6 +3849,8 @@ let isl = isl_0_11; cloog = cloog_0_18_0; + + inherit (darwin) CF; })); gcc5 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/5 {