diff options
Diffstat (limited to 'pkgs/development/compilers/gcc')
-rw-r--r-- | pkgs/development/compilers/gcc/4.5/default.nix | 24 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/4.8/default.nix | 50 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/4.9/default.nix | 50 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/5/default.nix | 60 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/6/default.nix | 50 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/builder.sh | 12 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/snapshot/default.nix | 50 |
7 files changed, 157 insertions, 139 deletions
diff --git a/pkgs/development/compilers/gcc/4.5/default.nix b/pkgs/development/compilers/gcc/4.5/default.nix index 12e7e23e90b..19a538e613e 100644 --- a/pkgs/development/compilers/gcc/4.5/default.nix +++ b/pkgs/development/compilers/gcc/4.5/default.nix @@ -20,12 +20,12 @@ , enableMultilib ? false , name ? "gcc" , cross ? null -, binutilsCross ? null , libcCross ? null , crossStageStatic ? true , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true +, buildPlatform, hostPlatform, targetPlatform }: assert langJava -> zip != null && unzip != null @@ -224,7 +224,7 @@ stdenv.mkDerivation ({ ++ (optional langJava boehmgc) ++ (optionals langJava [zip unzip]) ++ (optionals javaAwtGtk ([gtk2 pkgconfig libart_lgpl] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (cross != null) [binutils]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) ; @@ -271,15 +271,15 @@ stdenv.mkDerivation ({ targetConfig = if cross != null then cross.config else null; crossAttrs = { - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; + AR = "${targetPlatform.config}-ar"; + LD = "${targetPlatform.config}-ld"; + CC = "${targetPlatform.config}-gcc"; + CXX = "${targetPlatform.config}-gcc"; + AR_FOR_TARGET = "${targetPlatform.config}-ar"; + LD_FOR_TARGET = "${targetPlatform.config}-ld"; + CC_FOR_TARGET = "${targetPlatform.config}-gcc"; + NM_FOR_TARGET = "${targetPlatform.config}-nm"; + CXX_FOR_TARGET = "${targetPlatform.config}-g++"; # If we are making a cross compiler, cross != null NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; dontStrip = true; @@ -311,7 +311,7 @@ stdenv.mkDerivation ({ ${if langAda then " --enable-libada" else ""} ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""} ${if cross != null then crossConfigureFlags else ""} - --target=${stdenv.cross.config} + --target=${targetPlatform.config} ''; }; diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index e6f990113cc..714554019e4 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -26,7 +26,6 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , cross ? null -, binutilsCross ? null , libcCross ? null , crossStageStatic ? true , gnat ? null @@ -34,6 +33,7 @@ , stripped ? true , gnused ? null , darwin ? null +, buildPlatform, hostPlatform, targetPlatform }: assert langJava -> zip != null && unzip != null @@ -123,12 +123,12 @@ let version = "4.8.5"; crossMingw = cross != null && cross.libc == "msvcrt"; crossDarwin = cross != null && cross.libc == "libSystem"; crossConfigureFlags = let - gccArch = stdenv.cross.gcc.arch or null; - gccCpu = stdenv.cross.gcc.cpu or null; - gccAbi = stdenv.cross.gcc.abi or null; - gccFpu = stdenv.cross.gcc.fpu or null; - gccFloat = stdenv.cross.gcc.float or null; - gccMode = stdenv.cross.gcc.mode or null; + gccArch = targetPlatform.gcc.arch or null; + gccCpu = targetPlatform.gcc.cpu or null; + gccAbi = targetPlatform.gcc.abi or null; + gccFpu = targetPlatform.gcc.fpu or null; + gccFloat = targetPlatform.gcc.float or null; + gccMode = targetPlatform.gcc.mode or null; withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; @@ -170,8 +170,8 @@ let version = "4.8.5"; 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" + - " --with-ld=${binutilsCross}/bin/${cross.config}-ld" + " --with-as=${binutils}/bin/${cross.config}-as" + + " --with-ld=${binutils}/bin/${cross.config}-ld" )) + " --enable-__cxa_atexit" + " --enable-long-long" + @@ -293,7 +293,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (cross != null) [binutils]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -382,26 +382,26 @@ stdenv.mkDerivation ({ else "install"; crossAttrs = let - xgccArch = stdenv.cross.gcc.arch or null; - xgccCpu = stdenv.cross.gcc.cpu or null; - xgccAbi = stdenv.cross.gcc.abi or null; - xgccFpu = stdenv.cross.gcc.fpu or null; - xgccFloat = stdenv.cross.gcc.float or null; + xgccArch = targetPlatform.gcc.arch or null; + xgccCpu = targetPlatform.gcc.cpu or null; + xgccAbi = targetPlatform.gcc.abi or null; + xgccFpu = targetPlatform.gcc.fpu or null; + xgccFloat = targetPlatform.gcc.float or null; xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else ""; xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else ""; xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else ""; xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else ""; xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else ""; in { - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; + AR = "${targetPlatform.config}-ar"; + LD = "${targetPlatform.config}-ld"; + CC = "${targetPlatform.config}-gcc"; + CXX = "${targetPlatform.config}-gcc"; + AR_FOR_TARGET = "${targetPlatform.config}-ar"; + LD_FOR_TARGET = "${targetPlatform.config}-ld"; + CC_FOR_TARGET = "${targetPlatform.config}-gcc"; + NM_FOR_TARGET = "${targetPlatform.config}-nm"; + CXX_FOR_TARGET = "${targetPlatform.config}-g++"; # If we are making a cross compiler, cross != null NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; dontStrip = true; @@ -431,7 +431,7 @@ stdenv.mkDerivation ({ ) } ${if langAda then " --enable-libada" else ""} - --target=${stdenv.cross.config} + --target=${targetPlatform.config} ${xwithArch} ${xwithCpu} ${xwithAbi} diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index eb03148a4b8..3bf279635aa 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -26,7 +26,6 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , cross ? null -, binutilsCross ? null , libcCross ? null , crossStageStatic ? true , gnat ? null @@ -34,6 +33,7 @@ , stripped ? true , gnused ? null , darwin ? null +, buildPlatform, hostPlatform, targetPlatform }: assert langJava -> zip != null && unzip != null @@ -125,12 +125,12 @@ let version = "4.9.4"; crossMingw = cross != null && cross.libc == "msvcrt"; crossDarwin = cross != null && cross.libc == "libSystem"; crossConfigureFlags = let - gccArch = stdenv.cross.gcc.arch or null; - gccCpu = stdenv.cross.gcc.cpu or null; - gccAbi = stdenv.cross.gcc.abi or null; - gccFpu = stdenv.cross.gcc.fpu or null; - gccFloat = stdenv.cross.gcc.float or null; - gccMode = stdenv.cross.gcc.mode or null; + gccArch = targetPlatform.gcc.arch or null; + gccCpu = targetPlatform.gcc.cpu or null; + gccAbi = targetPlatform.gcc.abi or null; + gccFpu = targetPlatform.gcc.fpu or null; + gccFloat = targetPlatform.gcc.float or null; + gccMode = targetPlatform.gcc.mode or null; withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; @@ -171,8 +171,8 @@ let version = "4.9.4"; 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" + - " --with-ld=${binutilsCross}/bin/${cross.config}-ld" + " --with-as=${binutils}/bin/${cross.config}-as" + + " --with-ld=${binutils}/bin/${cross.config}-ld" )) + " --enable-__cxa_atexit" + " --enable-long-long" + @@ -298,7 +298,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (cross != null) [binutils]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -389,26 +389,26 @@ stdenv.mkDerivation ({ else "install"; crossAttrs = let - xgccArch = stdenv.cross.gcc.arch or null; - xgccCpu = stdenv.cross.gcc.cpu or null; - xgccAbi = stdenv.cross.gcc.abi or null; - xgccFpu = stdenv.cross.gcc.fpu or null; - xgccFloat = stdenv.cross.gcc.float or null; + xgccArch = targetPlatform.gcc.arch or null; + xgccCpu = targetPlatform.gcc.cpu or null; + xgccAbi = targetPlatform.gcc.abi or null; + xgccFpu = targetPlatform.gcc.fpu or null; + xgccFloat = targetPlatform.gcc.float or null; xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else ""; xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else ""; xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else ""; xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else ""; xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else ""; in { - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; + AR = "${targetPlatform.config}-ar"; + LD = "${targetPlatform.config}-ld"; + CC = "${targetPlatform.config}-gcc"; + CXX = "${targetPlatform.config}-gcc"; + AR_FOR_TARGET = "${targetPlatform.config}-ar"; + LD_FOR_TARGET = "${targetPlatform.config}-ld"; + CC_FOR_TARGET = "${targetPlatform.config}-gcc"; + NM_FOR_TARGET = "${targetPlatform.config}-nm"; + CXX_FOR_TARGET = "${targetPlatform.config}-g++"; # If we are making a cross compiler, cross != null NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; dontStrip = true; @@ -438,7 +438,7 @@ stdenv.mkDerivation ({ ) } ${if langAda then " --enable-libada" else ""} - --target=${stdenv.cross.config} + --target=${targetPlatform.config} ${xwithArch} ${xwithCpu} ${xwithAbi} diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index 3e9104a82fb..79c5b805f45 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -26,7 +26,6 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , cross ? null -, binutilsCross ? null , libcCross ? null , crossStageStatic ? true , gnat ? null @@ -36,6 +35,7 @@ , binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null +, buildPlatform, hostPlatform, targetPlatform }: assert langJava -> zip != null && unzip != null @@ -129,12 +129,12 @@ let version = "5.4.0"; crossMingw = cross != null && cross.libc == "msvcrt"; crossDarwin = cross != null && cross.libc == "libSystem"; crossConfigureFlags = let - gccArch = stdenv.cross.gcc.arch or null; - gccCpu = stdenv.cross.gcc.cpu or null; - gccAbi = stdenv.cross.gcc.abi or null; - gccFpu = stdenv.cross.gcc.fpu or null; - gccFloat = stdenv.cross.gcc.float or null; - gccMode = stdenv.cross.gcc.mode or null; + gccArch = targetPlatform.gcc.arch or null; + gccCpu = targetPlatform.gcc.cpu or null; + gccAbi = targetPlatform.gcc.abi or null; + gccFpu = targetPlatform.gcc.fpu or null; + gccFloat = targetPlatform.gcc.float or null; + gccMode = targetPlatform.gcc.mode or null; withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; @@ -175,8 +175,8 @@ let version = "5.4.0"; else " --with-headers=${getDev libcCross}/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" + - " --with-ld=${binutilsCross}/bin/${cross.config}-ld" + " --with-as=${binutils}/bin/${cross.config}-as" + + " --with-ld=${binutils}/bin/${cross.config}-ld" )) + " --enable-__cxa_atexit" + " --enable-long-long" + @@ -237,10 +237,16 @@ stdenv.mkDerivation ({ # This should kill all the stdinc frameworks that gcc and friends like to # insert into default search paths. - prePatch = if stdenv.isDarwin then '' + prePatch = stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace gcc/config/darwin-c.c \ --replace 'if (stdinc)' 'if (0)' - '' else null; + + substituteInPlace libgcc/config/t-slibgcc-darwin \ + --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)" + + substituteInPlace libgfortran/configure \ + --replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname" + ''; postPatch = if (stdenv.isGNU @@ -308,7 +314,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (cross != null) [binutils]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -398,26 +404,26 @@ stdenv.mkDerivation ({ else "install"; crossAttrs = let - xgccArch = stdenv.cross.gcc.arch or null; - xgccCpu = stdenv.cross.gcc.cpu or null; - xgccAbi = stdenv.cross.gcc.abi or null; - xgccFpu = stdenv.cross.gcc.fpu or null; - xgccFloat = stdenv.cross.gcc.float or null; + xgccArch = targetPlatform.gcc.arch or null; + xgccCpu = targetPlatform.gcc.cpu or null; + xgccAbi = targetPlatform.gcc.abi or null; + xgccFpu = targetPlatform.gcc.fpu or null; + xgccFloat = targetPlatform.gcc.float or null; xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else ""; xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else ""; xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else ""; xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else ""; xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else ""; in { - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; + AR = "${targetPlatform.config}-ar"; + LD = "${targetPlatform.config}-ld"; + CC = "${targetPlatform.config}-gcc"; + CXX = "${targetPlatform.config}-gcc"; + AR_FOR_TARGET = "${targetPlatform.config}-ar"; + LD_FOR_TARGET = "${targetPlatform.config}-ld"; + CC_FOR_TARGET = "${targetPlatform.config}-gcc"; + NM_FOR_TARGET = "${targetPlatform.config}-nm"; + CXX_FOR_TARGET = "${targetPlatform.config}-g++"; # If we are making a cross compiler, cross != null NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; dontStrip = true; @@ -446,7 +452,7 @@ stdenv.mkDerivation ({ ) } ${if langAda then " --enable-libada" else ""} - --target=${stdenv.cross.config} + --target=${targetPlatform.config} ${xwithArch} ${xwithCpu} ${xwithAbi} diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index b4e588f6b14..57bb336ccbf 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -26,7 +26,6 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , cross ? null -, binutilsCross ? null , libcCross ? null , crossStageStatic ? true , gnat ? null @@ -36,6 +35,7 @@ , binutils ? null , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null +, buildPlatform, hostPlatform, targetPlatform }: assert langJava -> zip != null && unzip != null @@ -125,12 +125,12 @@ let version = "6.3.0"; crossMingw = cross != null && cross.libc == "msvcrt"; crossDarwin = cross != null && cross.libc == "libSystem"; crossConfigureFlags = let - gccArch = stdenv.cross.gcc.arch or null; - gccCpu = stdenv.cross.gcc.cpu or null; - gccAbi = stdenv.cross.gcc.abi or null; - gccFpu = stdenv.cross.gcc.fpu or null; - gccFloat = stdenv.cross.gcc.float or null; - gccMode = stdenv.cross.gcc.mode or null; + gccArch = targetPlatform.gcc.arch or null; + gccCpu = targetPlatform.gcc.cpu or null; + gccAbi = targetPlatform.gcc.abi or null; + gccFpu = targetPlatform.gcc.fpu or null; + gccFloat = targetPlatform.gcc.float or null; + gccMode = targetPlatform.gcc.mode or null; withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; @@ -171,8 +171,8 @@ let version = "6.3.0"; else " --with-headers=${getDev libcCross}/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" + - " --with-ld=${binutilsCross}/bin/${cross.config}-ld" + " --with-as=${binutils}/bin/${cross.config}-as" + + " --with-ld=${binutils}/bin/${cross.config}-ld" )) + " --enable-__cxa_atexit" + " --enable-long-long" + @@ -296,7 +296,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (cross != null) [binutils]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -386,26 +386,26 @@ stdenv.mkDerivation ({ else "install"; crossAttrs = let - xgccArch = stdenv.cross.gcc.arch or null; - xgccCpu = stdenv.cross.gcc.cpu or null; - xgccAbi = stdenv.cross.gcc.abi or null; - xgccFpu = stdenv.cross.gcc.fpu or null; - xgccFloat = stdenv.cross.gcc.float or null; + xgccArch = targetPlatform.gcc.arch or null; + xgccCpu = targetPlatform.gcc.cpu or null; + xgccAbi = targetPlatform.gcc.abi or null; + xgccFpu = targetPlatform.gcc.fpu or null; + xgccFloat = targetPlatform.gcc.float or null; xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else ""; xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else ""; xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else ""; xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else ""; xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else ""; in { - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; + AR = "${targetPlatform.config}-ar"; + LD = "${targetPlatform.config}-ld"; + CC = "${targetPlatform.config}-gcc"; + CXX = "${targetPlatform.config}-gcc"; + AR_FOR_TARGET = "${targetPlatform.config}-ar"; + LD_FOR_TARGET = "${targetPlatform.config}-ld"; + CC_FOR_TARGET = "${targetPlatform.config}-gcc"; + NM_FOR_TARGET = "${targetPlatform.config}-nm"; + CXX_FOR_TARGET = "${targetPlatform.config}-g++"; # If we are making a cross compiler, cross != null NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; dontStrip = true; @@ -434,7 +434,7 @@ stdenv.mkDerivation ({ ) } ${if langAda then " --enable-libada" else ""} - --target=${stdenv.cross.config} + --target=${targetPlatform.config} ${xwithArch} ${xwithCpu} ${xwithAbi} diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index de3e9ba3ef5..ee56425f00b 100644 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -212,6 +212,7 @@ postInstall() { # Move runtime libraries to $lib. moveToOutput "lib/lib*.so*" "$lib" moveToOutput "lib/lib*.la" "$lib" + moveToOutput "lib/lib*.dylib" "$lib" moveToOutput "share/gcc-*/python" "$lib" for i in "$lib"/lib/*.{la,py}; do @@ -221,6 +222,7 @@ postInstall() { if [ -n "$enableMultilib" ]; then moveToOutput "lib64/lib*.so*" "$lib" moveToOutput "lib64/lib*.la" "$lib" + moveToOutput "lib64/lib*.dylib" "$lib" for i in "$lib"/lib64/*.{la,py}; do substituteInPlace "$i" --replace "$out" "$lib" @@ -251,6 +253,16 @@ postInstall() { done fi + if type "install_name_tool"; then + for i in "$lib"/lib/*.*.dylib; do + install_name_tool -id "$i" "$i" || true + for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do + new_path=`echo "$old_path" | sed "s,$out,$lib,"` + install_name_tool -change "$old_path" "$new_path" "$i" || true + done + done + fi + # Get rid of some "fixed" header files rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux} diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index 12eb8b3a542..6b08f279790 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -26,7 +26,6 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , cross ? null -, binutilsCross ? null , libcCross ? null , crossStageStatic ? true , gnat ? null @@ -37,6 +36,7 @@ , cloog # unused; just for compat with gcc4, as we override the parameter on some places , darwin ? null , flex ? null +, buildPlatform, hostPlatform, targetPlatform }: assert langJava -> zip != null && unzip != null @@ -125,12 +125,12 @@ let version = "7-20170409"; crossMingw = cross != null && cross.libc == "msvcrt"; crossDarwin = cross != null && cross.libc == "libSystem"; crossConfigureFlags = let - gccArch = stdenv.cross.gcc.arch or null; - gccCpu = stdenv.cross.gcc.cpu or null; - gccAbi = stdenv.cross.gcc.abi or null; - gccFpu = stdenv.cross.gcc.fpu or null; - gccFloat = stdenv.cross.gcc.float or null; - gccMode = stdenv.cross.gcc.mode or null; + gccArch = targetPlatform.gcc.arch or null; + gccCpu = targetPlatform.gcc.cpu or null; + gccAbi = targetPlatform.gcc.abi or null; + gccFpu = targetPlatform.gcc.fpu or null; + gccFloat = targetPlatform.gcc.float or null; + gccMode = targetPlatform.gcc.mode or null; withArch = if gccArch != null then " --with-arch=${gccArch}" else ""; withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else ""; withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else ""; @@ -171,8 +171,8 @@ let version = "7-20170409"; else " --with-headers=${getDev libcCross}/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" + - " --with-ld=${binutilsCross}/bin/${cross.config}-ld" + " --with-as=${binutils}/bin/${cross.config}-as" + + " --with-ld=${binutils}/bin/${cross.config}-ld" )) + " --enable-__cxa_atexit" + " --enable-long-long" + @@ -296,7 +296,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) - ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (cross != null) [binutils]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -386,26 +386,26 @@ stdenv.mkDerivation ({ else "install"; crossAttrs = let - xgccArch = stdenv.cross.gcc.arch or null; - xgccCpu = stdenv.cross.gcc.cpu or null; - xgccAbi = stdenv.cross.gcc.abi or null; - xgccFpu = stdenv.cross.gcc.fpu or null; - xgccFloat = stdenv.cross.gcc.float or null; + xgccArch = targetPlatform.gcc.arch or null; + xgccCpu = targetPlatform.gcc.cpu or null; + xgccAbi = targetPlatform.gcc.abi or null; + xgccFpu = targetPlatform.gcc.fpu or null; + xgccFloat = targetPlatform.gcc.float or null; xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else ""; xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else ""; xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else ""; xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else ""; xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else ""; in { - AR = "${stdenv.cross.config}-ar"; - LD = "${stdenv.cross.config}-ld"; - CC = "${stdenv.cross.config}-gcc"; - CXX = "${stdenv.cross.config}-gcc"; - AR_FOR_TARGET = "${stdenv.cross.config}-ar"; - LD_FOR_TARGET = "${stdenv.cross.config}-ld"; - CC_FOR_TARGET = "${stdenv.cross.config}-gcc"; - NM_FOR_TARGET = "${stdenv.cross.config}-nm"; - CXX_FOR_TARGET = "${stdenv.cross.config}-g++"; + AR = "${targetPlatform.config}-ar"; + LD = "${targetPlatform.config}-ld"; + CC = "${targetPlatform.config}-gcc"; + CXX = "${targetPlatform.config}-gcc"; + AR_FOR_TARGET = "${targetPlatform.config}-ar"; + LD_FOR_TARGET = "${targetPlatform.config}-ld"; + CC_FOR_TARGET = "${targetPlatform.config}-gcc"; + NM_FOR_TARGET = "${targetPlatform.config}-nm"; + CXX_FOR_TARGET = "${targetPlatform.config}-g++"; # If we are making a cross compiler, cross != null NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else ""; dontStrip = true; @@ -434,7 +434,7 @@ stdenv.mkDerivation ({ ) } ${if langAda then " --enable-libada" else ""} - --target=${stdenv.cross.config} + --target=${targetPlatform.config} ${xwithArch} ${xwithCpu} ${xwithAbi} |