diff options
-rw-r--r-- | pkgs/development/compilers/gcc/4.5/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/4.8/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/4.9/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/5/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/6/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/7/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/snapshot/default.nix | 6 | ||||
-rw-r--r-- | pkgs/os-specific/gnu/default.nix | 4 | ||||
-rw-r--r-- | pkgs/stdenv/adapters.nix | 13 | ||||
-rw-r--r-- | pkgs/stdenv/cross/default.nix | 2 | ||||
-rw-r--r-- | pkgs/stdenv/linux/default.nix | 8 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 24 | ||||
-rw-r--r-- | pkgs/top-level/release-cross.nix | 2 |
13 files changed, 56 insertions, 39 deletions
diff --git a/pkgs/development/compilers/gcc/4.5/default.nix b/pkgs/development/compilers/gcc/4.5/default.nix index bec2aab017ea..5bad03d30252 100644 --- a/pkgs/development/compilers/gcc/4.5/default.nix +++ b/pkgs/development/compilers/gcc/4.5/default.nix @@ -20,7 +20,7 @@ , enableMultilib ? false , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -213,7 +213,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs profiledCompiler staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs profiledCompiler staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 5b9d368c457b..72e37f18a178 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -26,7 +26,7 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -284,7 +284,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 8990302eea2e..d7684a61a2ac 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -26,7 +26,7 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -280,7 +280,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index 7ddc52592ffd..d1c76b6097ea 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -26,7 +26,7 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -298,7 +298,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 25940420e9a9..2c8a9696e693 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -26,7 +26,7 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -292,7 +292,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 6dcd36eb3ea2..064f2ab00d47 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -26,7 +26,7 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -294,7 +294,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index 46fcc53b3c46..696417a49566 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -26,7 +26,7 @@ , enablePlugin ? true # whether to support user-supplied plug-ins , name ? "gcc" , libcCross ? null -, crossStageStatic ? true +, crossStageStatic ? false , gnat ? null , libpthread ? null, libpthreadCross ? null # required for GNU/Hurd , stripped ? true @@ -281,7 +281,9 @@ stdenv.mkDerivation ({ '' else null; - inherit noSysDirs staticCompiler langJava crossStageStatic + # TODO(@Ericson2314): Make passthru instead. Weird to avoid mass rebuild, + crossStageStatic = targetPlatform == hostPlatform || crossStageStatic; + inherit noSysDirs staticCompiler langJava libcCross crossMingw; nativeBuildInputs = [ texinfo which gettext ] diff --git a/pkgs/os-specific/gnu/default.nix b/pkgs/os-specific/gnu/default.nix index fb3796394e81..478040132b82 100644 --- a/pkgs/os-specific/gnu/default.nix +++ b/pkgs/os-specific/gnu/default.nix @@ -2,7 +2,7 @@ args@{ fetchgit, stdenv, autoconf, automake, automake111x, libtool , texinfo, glibcCross, hurdPartedCross, libuuid, samba -, gccCrossStageStatic, gccCrossStageFinal +, gccCrossStageStatic, gcc , forceSystem, newScope, platform, config , targetPlatform, buildPlatform , overrides ? {} @@ -28,7 +28,7 @@ let automake = automake111x; headersOnly = false; cross = assert targetPlatform != buildPlatform; targetPlatform; - gccCross = gccCrossStageFinal; + gccCross = gcc; }; hurdCrossIntermediate = forcedNativePackages.callPackage ./hurd { diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index ac382927b1b9..25ee9adfd9d9 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -59,17 +59,18 @@ rec { makeStdenvCross = { stdenv , cc , buildPlatform, hostPlatform, targetPlatform + , # Prior overrides are surely not valid as packages built + # with this run on a different platform, so disable by + # default. + overrides ? _: _: {} } @ overrideArgs: let stdenv = overrideArgs.stdenv.override { inherit buildPlatform hostPlatform targetPlatform - cc; + cc overrides; allowedRequisites = null; - - # Overrides are surely not valid as packages built with this run on a - # different platform. - overrides = _: _: {}; + extraBuildInputs = [ ]; # Old ones run on wrong platform }; in stdenv // { mkDerivation = @@ -105,7 +106,7 @@ rec { # without proper `file` command, libtool sometimes fails # to recognize 64-bit DLLs ++ stdenv.lib.optional (hostPlatform.config == "x86_64-w64-mingw32") pkgs.file - ++ stdenv.lib.optional (hostPlatform.config == "aarch64-linux-gnu") pkgs.updateAutotoolsGnuConfigScriptsHook + ++ stdenv.lib.optional hostPlatform.isAarch64 pkgs.updateAutotoolsGnuConfigScriptsHook ; # Cross-linking dynamic libraries, every buildInput should diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix index c83714d01f2c..8197510eeecc 100644 --- a/pkgs/stdenv/cross/default.nix +++ b/pkgs/stdenv/cross/default.nix @@ -35,7 +35,7 @@ in bootStages ++ [ targetPlatform = crossSystem; cc = if crossSystem.useiOSCross or false then buildPackages.darwin.ios-cross - else buildPackages.gccCrossStageFinal; + else buildPackages.gcc; }; }) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index fab1985b9765..e79ec48e9f42 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -219,7 +219,7 @@ in }; extraNativeBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++ # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64. - lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook; + lib.optional localSystem.isAarch64 prevStage.updateAutotoolsGnuConfigScriptsHook; }) @@ -251,7 +251,7 @@ in }; extraNativeBuildInputs = [ prevStage.patchelf prevStage.xz ] ++ # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64. - lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook; + lib.optional localSystem.isAarch64 prevStage.updateAutotoolsGnuConfigScriptsHook; }) # Construct the final stdenv. It uses the Glibc and GCC, and adds @@ -281,7 +281,7 @@ in extraNativeBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++ # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64. - lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook; + lib.optional localSystem.isAarch64 prevStage.updateAutotoolsGnuConfigScriptsHook; cc = prevStage.gcc; @@ -312,7 +312,7 @@ in glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders gcc gcc.cc gcc.cc.lib gcc.expand-response-params ] - ++ lib.optionals (system == "aarch64-linux") + ++ lib.optionals localSystem.isAarch64 [ prevStage.updateAutotoolsGnuConfigScriptsHook prevStage.gnu-config ]; overrides = self: super: { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ddf72018c135..daefa076f825 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5381,6 +5381,7 @@ with pkgs; gambit = callPackage ../development/compilers/gambit { }; gerbil = callPackage ../development/compilers/gerbil { }; + gccFun = callPackage ../development/compilers/gcc/6; gcc = gcc6; gcc-unwrapped = gcc.cc; @@ -5429,6 +5430,8 @@ with pkgs; cc = buildPackages.gccCrossStageStatic; }; + # The GCC used to build libc for the target platform. Normal gccs will be + # built with, and use, that cross-compiled libc. gccCrossStageStatic = assert targetPlatform != buildPlatform; let libcCross1 = if targetPlatform.libc == "msvcrt" then __targetPackages.windows.mingw_w64_headers @@ -5436,12 +5439,18 @@ with pkgs; else null; in wrapCCWith { name = "gcc-cross-wrapper"; - cc = gcc.cc.override { + cc = gccFun { + # copy-pasted + inherit noSysDirs; + # PGO seems to speed up compilation by gcc by ~10%, see #445 discussion + profiledCompiler = with stdenv; (!isDarwin && (isi686 || isx86_64)); + isl = if !stdenv.isDarwin then isl_0_14 else null; + + # just for stage static crossStageStatic = true; langCC = false; libcCross = libcCross1; enableShared = false; - # Why is this needed? }; libc = libcCross1; }; @@ -5453,14 +5462,6 @@ with pkgs; libc = windows.mingw_headers2; }; - gccCrossStageFinal = assert targetPlatform != buildPlatform; wrapCCWith { - name = "gcc-cross-wrapper"; - cc = gcc.cc.override { - crossStageStatic = false; - }; - libc = libcCross; - }; - gcc45 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.5 { inherit noSysDirs; texinfo = texinfo4; @@ -6225,8 +6226,9 @@ with pkgs; ccWrapperFun = callPackage ../build-support/cc-wrapper; wrapCC = cc: wrapCCWith { + name = lib.optionalString (targetPlatform != hostPlatform) "gcc-cross-wrapper"; inherit cc; - inherit (stdenv.cc) libc; + libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc; }; # legacy version, used for gnat bootstrapping wrapGCC-old = baseGCC: callPackage ../build-support/gcc-wrapper-old { diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix index 94c1e6c7ad2e..62f7134616bf 100644 --- a/pkgs/top-level/release-cross.nix +++ b/pkgs/top-level/release-cross.nix @@ -19,7 +19,7 @@ let }; gnuCommon = lib.recursiveUpdate common { - buildPackages.gccCrossStageFinal = nativePlatforms; + buildPackages.gcc = nativePlatforms; coreutils = nativePlatforms; }; |