summary refs log tree commit diff
path: root/pkgs/stdenv/cross
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/stdenv/cross')
-rw-r--r--pkgs/stdenv/cross/default.nix55
1 files changed, 34 insertions, 21 deletions
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index 10e2a7663563..728424c0a7af 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -1,35 +1,48 @@
-{ lib, allPackages
+{ lib
 , system, platform, crossSystem, config
 }:
 
-rec {
-  vanillaStdenv = (import ../. {
-    inherit lib allPackages system platform;
+let
+  bootStages = import ../. {
+    inherit lib system platform;
     crossSystem = null;
     # Ignore custom stdenvs when cross compiling for compatability
     config = builtins.removeAttrs config [ "replaceStdenv" ];
-  }) // {
-    # Needed elsewhere as a hacky way to pass the target
-    cross = crossSystem;
   };
 
-  # For now, this is just used to build the native stdenv. Eventually, it should
-  # be used to build compilers and other such tools targeting the cross
+in bootStages ++ [
+
+  # Build Packages.
+  #
+  # For now, this is just used to build the native stdenv. Eventually, it
+  # should be used to build compilers and other such tools targeting the cross
   # platform. Then, `forceNativeDrv` can be removed.
-  buildPackages = allPackages {
+  (vanillaPackages: {
     inherit system platform crossSystem config;
     # It's OK to change the built-time dependencies
     allowCustomOverrides = true;
-    stdenv = vanillaStdenv;
-  };
+    stdenv = vanillaPackages.stdenv // {
+      # Needed elsewhere as a hacky way to pass the target
+      cross = crossSystem;
+    };
+  })
 
-  stdenvCross = buildPackages.makeStdenvCross
-    buildPackages.stdenv crossSystem
-    buildPackages.binutilsCross buildPackages.gccCrossStageFinal;
+  # Run packages
+  (buildPackages: {
+    inherit system platform crossSystem config;
+    stdenv = if crossSystem.useiOSCross or false
+      then let
+          inherit (buildPackages.darwin.ios-cross {
+              prefix = crossSystem.config;
+              inherit (crossSystem) arch;
+              simulator = crossSystem.isiPhoneSimulator or false; })
+            cc binutils;
+        in buildPackages.makeStdenvCross
+          buildPackages.stdenv crossSystem
+          binutils cc
+      else buildPackages.makeStdenvCross
+        buildPackages.stdenv crossSystem
+        buildPackages.binutilsCross buildPackages.gccCrossStageFinal;
+  })
 
-  stdenvCrossiOS = let
-    inherit (buildPackages.darwin.ios-cross { prefix = crossSystem.config; inherit (crossSystem) arch; simulator = crossSystem.isiPhoneSimulator or false; }) cc binutils;
-  in buildPackages.makeStdenvCross
-    buildPackages.stdenv crossSystem
-    binutils cc;
-}
+]