diff options
Diffstat (limited to 'pkgs/development/compilers/gcc/4.8/default.nix')
-rw-r--r-- | pkgs/development/compilers/gcc/4.8/default.nix | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 6810b52574c6..42fd4bec2ebc 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -70,7 +70,8 @@ let version = "4.8.5"; # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. ++ optional langAda ../gnat-cflags.patch - ++ optional langFortran ../gfortran-driving.patch; + ++ optional langFortran ../gfortran-driving.patch + ++ optional stdenv.isDarwin ../gfortran-darwin-NXConstStr.patch; javaEcj = fetchurl { # The `$(top_srcdir)/ecj.jar' file is automatically picked up at @@ -164,8 +165,8 @@ let version = "4.8.5"; " --disable-libatomic " + # libatomic requires libc " --disable-decimal-float" # libdecnumber requires libc else - (if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot" - else " --with-headers=${libcCross}/include") + + (if crossDarwin then " --with-sysroot=${libcCross.out}/share/sysroot" + else " --with-headers=${libcCross.dev}/include") + # Ensure that -print-prog-name is able to find the correct programs. (stdenv.lib.optionalString (crossMingw || crossDarwin) ( " --with-as=${binutilsCross}/bin/${cross.config}-as" + @@ -197,7 +198,7 @@ let version = "4.8.5"; stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final"; crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else ""; - bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips; + bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips && !stdenv.isDarwin; in @@ -255,9 +256,9 @@ stdenv.mkDerivation ({ sed -i "${gnu_h}" \ -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g' - echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..." + echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..." sed -i "${gnu_h}" \ - -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g' + -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g' '' else if cross != null || stdenv.cc.libc != null then # On NixOS, use the right path to the dynamic linker instead of @@ -271,7 +272,7 @@ stdenv.mkDerivation ({ grep -q LIBC_DYNAMIC_LINKER "$header" || continue echo " fixing \`$header'..." sed -i "$header" \ - -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g' + -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' done '' else null; @@ -304,15 +305,6 @@ stdenv.mkDerivation ({ export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" 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 ''; dontDisableStatic = true; @@ -415,6 +407,7 @@ stdenv.mkDerivation ({ ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""} --with-gmp=${gmp.crossDrv} --with-mpfr=${mpfr.crossDrv} + --with-mpc=${libmpc.crossDrv} --disable-libstdcxx-pch --without-included-gettext --with-system-zlib @@ -482,15 +475,28 @@ stdenv.mkDerivation ({ ++ optional (libpthread != null) libpthread))); EXTRA_TARGET_CFLAGS = - if cross != null && libcCross != null - then "-idirafter ${libcCross}/include" + if cross != null && libcCross != null then [ + "-idirafter ${libcCross.dev}/include" + ] + ++ optionals (! crossStageStatic) [ + "-B${libcCross.out}/lib" + ] else null; EXTRA_TARGET_LDFLAGS = - if cross != null && libcCross != null - then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" + - (optionalString (libpthreadCross != null) - " -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}") + if cross != null && libcCross != null then [ + "-Wl,-L${libcCross.out}/lib" + ] + ++ (if crossStageStatic then [ + "-B${libcCross.out}/lib" + ] else [ + "-Wl,-rpath,${libcCross.out}/lib" + "-Wl,-rpath-link,${libcCross.out}/lib" + ]) + ++ optionals (libpthreadCross != null) [ + "-L${libpthreadCross}/lib" + "-Wl,${libpthreadCross.TARGET_LDFLAGS}" + ] else null; passthru = |