summary refs log tree commit diff
path: root/pkgs/build-support/cc-wrapper
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2020-07-06 00:22:19 -0400
committerMatthew Bauer <mjbauer95@gmail.com>2020-07-06 00:22:19 -0400
commitf42aa7e1d7ac4fb1050b73b296912fa7c7b927c2 (patch)
tree2af5d9df2d15c8d6a6f51bfcadd4900dd5762412 /pkgs/build-support/cc-wrapper
parent4855aa62fa13052fb1a3daea68971503ab07a744 (diff)
downloadnixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.tar
nixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.tar.gz
nixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.tar.bz2
nixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.tar.lz
nixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.tar.xz
nixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.tar.zst
nixpkgs-f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2.zip
cc-wrapper: set FC when langFortran is on
We need to set FC so that CMake and other tools can find the fortran
compiler. Also we need to limit the hardening flags since fortify and
format don’t work with fortran.

Fixes #88449
Diffstat (limited to 'pkgs/build-support/cc-wrapper')
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix5
-rw-r--r--pkgs/build-support/cc-wrapper/fortran-hook.sh11
2 files changed, 14 insertions, 2 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index da16a23f9df..b79aac37a33 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -214,6 +214,7 @@ stdenv.mkDerivation {
       wrap ${targetPrefix}gfortran $wrapper $ccPath/${targetPrefix}gfortran
       ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}g77
       ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}f77
+      export named_fc=${targetPrefix}gfortran
     ''
 
     + optionalString cc.langJava or false ''
@@ -232,8 +233,8 @@ stdenv.mkDerivation {
 
   setupHooks = [
     ../setup-hooks/role.bash
-    ./setup-hook.sh
-  ];
+  ] ++ stdenv.lib.optional (cc.langC or true) ./setup-hook.sh
+    ++ stdenv.lib.optional (cc.langFortran or false) ./fortran-hook.sh;
 
   postFixup =
     ''
diff --git a/pkgs/build-support/cc-wrapper/fortran-hook.sh b/pkgs/build-support/cc-wrapper/fortran-hook.sh
new file mode 100644
index 00000000000..d72f314c01c
--- /dev/null
+++ b/pkgs/build-support/cc-wrapper/fortran-hook.sh
@@ -0,0 +1,11 @@
+getTargetRole
+getTargetRoleWrapper
+
+export FC${role_post}=@named_fc@
+
+# If unset, assume the default hardening flags.
+# These are different for fortran.
+: ${NIX_HARDENING_ENABLE="stackprotector pic strictoverflow relro bindnow"}
+export NIX_HARDENING_ENABLE
+
+unset -v role_post