about summary refs log tree commit diff
path: root/nixpkgs/pkgs/build-support/cc-wrapper
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2020-07-06 00:22:19 -0400
committerAlyssa Ross <hi@alyssa.is>2020-11-27 13:27:44 +0000
commit32685ea77322d817341b893df667f095aceda28a (patch)
tree1873adc6769e2ba1b6c5e14d00ebc7daa523cffc /nixpkgs/pkgs/build-support/cc-wrapper
parent67e86db39ea4c52733c8231269d0b3b529b89660 (diff)
downloadnixlib-32685ea77322d817341b893df667f095aceda28a.tar
nixlib-32685ea77322d817341b893df667f095aceda28a.tar.gz
nixlib-32685ea77322d817341b893df667f095aceda28a.tar.bz2
nixlib-32685ea77322d817341b893df667f095aceda28a.tar.lz
nixlib-32685ea77322d817341b893df667f095aceda28a.tar.xz
nixlib-32685ea77322d817341b893df667f095aceda28a.tar.zst
nixlib-32685ea77322d817341b893df667f095aceda28a.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

(cherry picked from commit f42aa7e1d7ac4fb1050b73b296912fa7c7b927c2)
Diffstat (limited to 'nixpkgs/pkgs/build-support/cc-wrapper')
-rw-r--r--nixpkgs/pkgs/build-support/cc-wrapper/default.nix5
-rw-r--r--nixpkgs/pkgs/build-support/cc-wrapper/fortran-hook.sh11
2 files changed, 14 insertions, 2 deletions
diff --git a/nixpkgs/pkgs/build-support/cc-wrapper/default.nix b/nixpkgs/pkgs/build-support/cc-wrapper/default.nix
index 4f3680f2197c..6ee287e287bc 100644
--- a/nixpkgs/pkgs/build-support/cc-wrapper/default.nix
+++ b/nixpkgs/pkgs/build-support/cc-wrapper/default.nix
@@ -209,6 +209,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 ''
@@ -227,8 +228,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 =
     # Ensure flags files exists, as some other programs cat them. (That these
diff --git a/nixpkgs/pkgs/build-support/cc-wrapper/fortran-hook.sh b/nixpkgs/pkgs/build-support/cc-wrapper/fortran-hook.sh
new file mode 100644
index 000000000000..d72f314c01ce
--- /dev/null
+++ b/nixpkgs/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