summary refs log tree commit diff
path: root/pkgs/development/compilers/gcc/common/pre-configure.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/gcc/common/pre-configure.nix')
-rw-r--r--pkgs/development/compilers/gcc/common/pre-configure.nix11
1 files changed, 11 insertions, 0 deletions
diff --git a/pkgs/development/compilers/gcc/common/pre-configure.nix b/pkgs/development/compilers/gcc/common/pre-configure.nix
index 5cb2f186fd1..32e203ee491 100644
--- a/pkgs/development/compilers/gcc/common/pre-configure.nix
+++ b/pkgs/development/compilers/gcc/common/pre-configure.nix
@@ -3,12 +3,14 @@
 , version, buildPlatform, hostPlatform, targetPlatform
 , gnat-bootstrap ? null
 , langAda ? false
+, langFortran
 , langJava ? false
 , langJit ? false
 , langGo
 , withoutTargetLibc
 , enableShared
 , enableMultilib
+, pkgsBuildTarget
 }:
 
 assert langJava -> lib.versionOlder version "7";
@@ -27,6 +29,15 @@ in lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) ''
   export PATH=${gnat-bootstrap}/bin:$PATH
 ''
 
+# For a cross-built native compiler, i.e. build!=(host==target), the
+# bundled libgfortran needs a gfortran which can run on the
+# buildPlatform and emit code for the targetPlatform.  The compiler
+# which is built alongside gfortran in this configuration doesn't
+# meet that need: it runs on the hostPlatform.
++ lib.optionalString (langFortran && (with stdenv; buildPlatform != hostPlatform && hostPlatform == targetPlatform)) ''
+  export GFORTRAN_FOR_TARGET=${pkgsBuildTarget.gfortran}/bin/${stdenv.targetPlatform.config}-gfortran
+''
+
 # On x86_64-darwin, the gnat-bootstrap bootstrap compiler that we need to build a
 # native GCC with Ada support emits assembly that is accepted by the Clang
 # integrated assembler, but not by the GNU assembler in cctools-port that Nix