about summary refs log tree commit diff
path: root/pkgs/stdenv/cross/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/stdenv/cross/default.nix')
-rw-r--r--pkgs/stdenv/cross/default.nix49
1 files changed, 29 insertions, 20 deletions
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index 1cbbfeb6d2025..de7ae432f360a 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -41,25 +41,43 @@ in lib.init bootStages ++ [
       if crossSystem.isStatic
       then buildPackages.stdenvAdapters.makeStatic
       else lib.id;
+    stdenvNoCC = adaptStdenv (buildPackages.stdenv.override (old: rec {
+      buildPlatform = localSystem;
+      hostPlatform = crossSystem;
+      targetPlatform = crossSystem;
+
+      # Prior overrides are surely not valid as packages built with this run on
+      # a different platform, and so are disabled.
+      overrides = _: _: {};
+      extraBuildInputs = [ ]; # Old ones run on wrong platform
+      allowedRequisites = null;
+
+      cc = null;
+      hasCC = false;
+
+      extraNativeBuildInputs = old.extraNativeBuildInputs
+        ++ lib.optionals
+             (hostPlatform.isLinux && !buildPlatform.isLinux)
+             [ buildPackages.patchelf ]
+        ++ lib.optional
+             (let f = p: !p.isx86 || builtins.elem p.libc [ "musl" "wasilibc" "relibc" ] || p.isiOS || p.isGenode;
+               in f hostPlatform && !(f buildPlatform) )
+             buildPackages.updateAutotoolsGnuConfigScriptsHook
+        ;
+    }));
   in {
     inherit config;
     overlays = overlays ++ crossOverlays;
     selfBuild = false;
+    inherit stdenvNoCC;
     stdenv = let
-      baseStdenv = adaptStdenv (buildPackages.stdenv.override (old: rec {
-        buildPlatform = localSystem;
-        hostPlatform = crossSystem;
-        targetPlatform = crossSystem;
-
-        # Prior overrides are surely not valid as packages built with this run on
-        # a different platform, and so are disabled.
-        overrides = _: _: {};
+      inherit (stdenvNoCC) hostPlatform targetPlatform;
+      baseStdenv = stdenvNoCC.override {
         extraBuildInputs = [ ] # Old ones run on wrong platform
            ++ lib.optionals hostPlatform.isDarwin [ buildPackages.targetPackages.darwin.apple_sdk.frameworks.CoreFoundation ]
            ;
-        allowedRequisites = null;
 
-        hasCC = !targetPlatform.isGhcjs;
+        hasCC = !stdenvNoCC.targetPlatform.isGhcjs;
 
         cc = if crossSystem.useiOSPrebuilt or false
                then buildPackages.darwin.iosSdkPkgs.clang
@@ -77,16 +95,7 @@ in lib.init bootStages ++ [
                then buildPackages.llvmPackages.clang
              else buildPackages.gcc;
 
-        extraNativeBuildInputs = old.extraNativeBuildInputs
-          ++ lib.optionals
-               (hostPlatform.isLinux && !buildPlatform.isLinux)
-               [ buildPackages.patchelf ]
-          ++ lib.optional
-               (let f = p: !p.isx86 || builtins.elem p.libc [ "musl" "wasilibc" "relibc" ] || p.isiOS || p.isGenode;
-                 in f hostPlatform && !(f buildPlatform) )
-               buildPackages.updateAutotoolsGnuConfigScriptsHook
-          ;
-      }));
+      };
     in if config ? replaceCrossStdenv then config.replaceCrossStdenv { inherit buildPackages baseStdenv; } else baseStdenv;
   })