diff options
-rw-r--r-- | var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py index 882742ed32..867fb1440a 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py @@ -122,7 +122,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage): variant( "generic-names", default=False, - description="Use generic names, e.g mpicc instead of mpiicc", + description="Use generic names, e.g mpicc instead of mpiicx", + ) + variant( + "classic-names", + default=False, + description="Use classic compiler names, e.g mpiicc instead of mpiicx", ) variant( "external-libfabric", default=False, description="Enable external libfabric dependency" @@ -130,6 +135,7 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage): depends_on("libfabric", when="+external-libfabric", type=("link", "run")) provides("mpi@:3.1") + conflicts("+generic-names +classic-names") @property def mpiexec(self): @@ -150,17 +156,24 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage): else: return () - def setup_dependent_package(self, module, dep_spec): + def wrapper_names(self): if "+generic-names" in self.spec: - self.spec.mpicc = join_path(self.component_prefix.bin, "mpicc") - self.spec.mpicxx = join_path(self.component_prefix.bin, "mpicxx") - self.spec.mpif77 = join_path(self.component_prefix.bin, "mpif77") - self.spec.mpifc = join_path(self.component_prefix.bin, "mpifc") + return ["mpicc", "mpicxx", "mpif77", "mpif90", "mpifc"] + elif "+classic-names" in self.spec: + return ["mpiicc", "mpiicpc", "mpiifort", "mpiifort", "mpiifort"] else: - self.spec.mpicc = join_path(self.component_prefix.bin, "mpiicx") - self.spec.mpicxx = join_path(self.component_prefix.bin, "mpiicpx") - self.spec.mpif77 = join_path(self.component_prefix.bin, "mpiifx") - self.spec.mpifc = join_path(self.component_prefix.bin, "mpiifx") + return ["mpiicx", "mpiicpx", "mpiifx", "mpiifx", "mpiifx"] + + def wrapper_paths(self): + return [self.component_prefix.bin.join(name) for name in self.wrapper_names()] + + def setup_dependent_package(self, module, dep_spec): + wrappers = self.wrapper_paths() + self.spec.mpicc = wrappers[0] + self.spec.mpicxx = wrappers[1] + self.spec.mpif77 = wrappers[2] + # no self.spec.mpif90 + self.spec.mpifc = wrappers[4] def setup_dependent_build_environment(self, env, dependent_spec): dependent_module = dependent_spec.package.module @@ -171,18 +184,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage): env.set("I_MPI_FC", dependent_module.spack_fc) # Set compiler wrappers for dependent build stage - if "+generic-names" in self.spec: - env.set("MPICC", join_path(self.component_prefix.bin, "mpicc")) - env.set("MPICXX", join_path(self.component_prefix.bin, "mpicxx")) - env.set("MPIF77", join_path(self.component_prefix.bin, "mpif77")) - env.set("MPIF90", join_path(self.component_prefix.bin, "mpif90")) - env.set("MPIFC", join_path(self.component_prefix.bin, "mpifc")) - else: - env.set("MPICC", join_path(self.component_prefix.bin, "mpiicx")) - env.set("MPICXX", join_path(self.component_prefix.bin, "mpiicpx")) - env.set("MPIF77", join_path(self.component_prefix.bin, "mpiifx")) - env.set("MPIF90", join_path(self.component_prefix.bin, "mpiifx")) - env.set("MPIFC", join_path(self.component_prefix.bin, "mpiifx")) + wrappers = self.wrapper_paths() + env.set("MPICC", wrappers[0]) + env.set("MPICXX", wrappers[1]) + env.set("MPIF77", wrappers[2]) + env.set("MPIF90", wrappers[3]) + env.set("MPIFC", wrappers[4]) env.set("I_MPI_ROOT", self.component_prefix) |