diff --git a/pkgs/mpich/default.nix b/pkgs/mpich/default.nix index 1afa9b71..11dffcd0 100644 --- a/pkgs/mpich/default.nix +++ b/pkgs/mpich/default.nix @@ -6,6 +6,12 @@ , pmix , gfortran , symlinkJoin +# Disabled when cross-compiling +# To fix cross compilation, we should fill the values in: +# https://github.com/pmodels/mpich/blob/main/maint/fcrosscompile/cross_values.txt.in +# For each arch +, enableFortran ? stdenv.hostPlatform == stdenv.buildPlatform +, perl }: let @@ -15,10 +21,13 @@ let paths = [ pmix.dev pmix.out ]; }; in mpich.overrideAttrs (old: { - buildInput = old.buildInputs ++ [ + buildInputs = old.buildInputs ++ [ libfabric pmixAll ]; + nativeBuildInputs = old.nativeBuildInputs ++ [ + perl + ]; configureFlags = [ "--enable-shared" "--enable-sharedlib" @@ -31,7 +40,18 @@ in mpich.overrideAttrs (old: { ] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [ "FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300 "FCFLAGS=-fallow-argument-mismatch" + ] ++ lib.optionals (!enableFortran) [ + "--disable-fortran" ]; + + preFixup = '' + # Ensure the default compilers are the ones mpich was built with + sed -i 's:CC="gcc":CC=${stdenv.cc}/bin/gcc:' $out/bin/mpicc + sed -i 's:CXX="g++":CXX=${stdenv.cc}/bin/g++:' $out/bin/mpicxx + '' + lib.optionalString enableFortran '' + sed -i 's:FC="gfortran":FC=${gfortran}/bin/gfortran:' $out/bin/mpifort + ''; + hardeningDisable = [ "all" ]; meta = old.meta // {