37 lines
		
	
	
		
			781 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			781 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  stdenv
 | 
						|
, lib
 | 
						|
, libfabric
 | 
						|
, mpich
 | 
						|
, pmix
 | 
						|
, gfortran
 | 
						|
, symlinkJoin
 | 
						|
}:
 | 
						|
 | 
						|
let
 | 
						|
  # pmix comes with the libraries in .out and headers in .dev
 | 
						|
  pmixAll = symlinkJoin {
 | 
						|
    name = "pmix-all";
 | 
						|
    paths = [ pmix.dev pmix.out ];
 | 
						|
  };
 | 
						|
in mpich.overrideAttrs (old: {
 | 
						|
  buildInput = old.buildInputs ++ [
 | 
						|
    libfabric
 | 
						|
    pmixAll
 | 
						|
  ];
 | 
						|
  configureFlags = [
 | 
						|
    "--enable-shared"
 | 
						|
    "--enable-sharedlib"
 | 
						|
    "--with-pm=no"
 | 
						|
    "--with-device=ch4:ofi"
 | 
						|
    "--with-pmi=pmix"
 | 
						|
    "--with-pmix=${pmixAll}"
 | 
						|
    "--with-libfabric=${libfabric}"
 | 
						|
    "--enable-g=log"
 | 
						|
  ] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [
 | 
						|
    "FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300
 | 
						|
    "FCFLAGS=-fallow-argument-mismatch"
 | 
						|
  ];
 | 
						|
  hardeningDisable = [ "all" ];
 | 
						|
})
 |