From 2d176b593b731436b4310a74c226775a16d6dee2 Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Mon, 17 May 2021 23:50:16 +0200 Subject: [PATCH] gcc*: force building a cross compiler if host and target platform differ gcc's configure system has the nasty habit (for us) of judging for itself if it is building a cross compiler (or cross compiling), but on the limited information of the build, host and target platforms' config which only contains a subset of the information we encode in `stdenv.*Platform`. The practical consequence was that prior to this change building `pkgsLLVM.buildPackages.gcc` actually fails because it refuses to use `--with-headers` with something it believes to not be a cross compiler. As a workaround we force the appropriate variable in the configure script to always be `yes` regardless of its own conditional check. At some point we probably should report this issue in some capacity, so future gcc versions don't force us into workarounds like this and acdc783418538f23cdfb671bc8fd4b1c076979bd. --- pkgs/development/compilers/gcc/10/default.nix | 2 +- pkgs/development/compilers/gcc/11/default.nix | 2 +- pkgs/development/compilers/gcc/4.8/default.nix | 2 +- pkgs/development/compilers/gcc/4.9/default.nix | 2 +- pkgs/development/compilers/gcc/6/default.nix | 2 +- pkgs/development/compilers/gcc/7/default.nix | 2 +- pkgs/development/compilers/gcc/8/default.nix | 2 +- pkgs/development/compilers/gcc/9/default.nix | 2 +- pkgs/development/compilers/gcc/common/pre-configure.nix | 9 ++++++++- 9 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/gcc/10/default.nix b/pkgs/development/compilers/gcc/10/default.nix index 2f7991a921242..aebe7b30f1a78 100644 --- a/pkgs/development/compilers/gcc/10/default.nix +++ b/pkgs/development/compilers/gcc/10/default.nix @@ -186,7 +186,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/11/default.nix b/pkgs/development/compilers/gcc/11/default.nix index 73f3d7b2a97ce..c9d8663c0c401 100644 --- a/pkgs/development/compilers/gcc/11/default.nix +++ b/pkgs/development/compilers/gcc/11/default.nix @@ -186,7 +186,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 4ed41ba3ca1ce..86dd9247f5a04 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -196,7 +196,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform langJava langGo; + inherit version targetPlatform hostPlatform langJava langGo; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 0eb0a85eaff58..b7c9e5bcc0a54 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -209,7 +209,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform langJava langGo; + inherit version targetPlatform hostPlatform langJava langGo; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 32a4ad0dd090a..069d9c18a62b5 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -232,7 +232,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform gnatboot langJava langAda langGo; + inherit version targetPlatform hostPlatform gnatboot langJava langAda langGo; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 33edc81ce539a..1f153b0fb3a3d 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -197,7 +197,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform langGo; + inherit version targetPlatform hostPlatform langGo; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index dae98afccb904..4d9e216947d49 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -183,7 +183,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform langGo; + inherit version targetPlatform hostPlatform langGo; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/9/default.nix b/pkgs/development/compilers/gcc/9/default.nix index ebe20e0cba5c4..09cf7e98db799 100644 --- a/pkgs/development/compilers/gcc/9/default.nix +++ b/pkgs/development/compilers/gcc/9/default.nix @@ -200,7 +200,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit lib; - inherit version hostPlatform gnatboot langAda langGo langJit; + inherit version targetPlatform hostPlatform gnatboot langAda langGo langJit; }; dontDisableStatic = true; diff --git a/pkgs/development/compilers/gcc/common/pre-configure.nix b/pkgs/development/compilers/gcc/common/pre-configure.nix index 1c65b4a8ba64b..d9977e0ba2f9e 100644 --- a/pkgs/development/compilers/gcc/common/pre-configure.nix +++ b/pkgs/development/compilers/gcc/common/pre-configure.nix @@ -1,4 +1,4 @@ -{ lib, version, hostPlatform +{ lib, version, hostPlatform, targetPlatform , gnatboot ? null , langAda ? false , langJava ? false @@ -58,3 +58,10 @@ lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' + lib.optionalString (hostPlatform.isDarwin && langJit) '' export STRIP='strip -x' '' + +# HACK: if host and target config are the same, but the platforms are +# actually different we need to convince the configure script that it +# is in fact building a cross compiler although it doesn't believe it. ++ lib.optionalString (targetPlatform.config == hostPlatform.config && targetPlatform != hostPlatform) '' + substituteInPlace configure --replace is_cross_compiler=no is_cross_compiler=yes +''