ESMF package: fix netcdf static libs and variant combinations (#39738)
Add "snapshot" variant for identifying UFS WM support
This commit is contained in:
parent
e16ca49036
commit
31fe78e378
@ -76,12 +76,20 @@ class Esmf(MakefilePackage):
|
|||||||
)
|
)
|
||||||
variant("debug", default=False, description="Build with debugging symbols and options enabled")
|
variant("debug", default=False, description="Build with debugging symbols and options enabled")
|
||||||
variant("shared", default=True, description="Build shared library")
|
variant("shared", default=True, description="Build shared library")
|
||||||
|
|
||||||
# 'esmf_os', 'esmf_comm', 'esmf_pio' variants allow override values for their corresponding
|
# 'esmf_os', 'esmf_comm', 'esmf_pio' variants allow override values for their corresponding
|
||||||
# build environment variables. Documentation, including valid values, can be found at
|
# build environment variables. Documentation, including valid values, can be found at
|
||||||
# https://earthsystemmodeling.org/docs/release/latest/ESMF_usrdoc/node10.html#SECTION000105000000000000000
|
# https://earthsystemmodeling.org/docs/release/latest/ESMF_usrdoc/node10.html#SECTION000105000000000000000
|
||||||
variant("esmf_os", default="auto", description="Override for ESMF_OS variable")
|
variant("esmf_os", default="auto", description="Override for ESMF_OS variable")
|
||||||
variant("esmf_comm", default="auto", description="Override for ESMF_COMM variable")
|
variant("esmf_comm", default="auto", description="Override for ESMF_COMM variable")
|
||||||
variant("esmf_pio", default="auto", description="Override for ESMF_PIO variable")
|
variant("esmf_pio", default="auto", description="Override for ESMF_PIO variable")
|
||||||
|
# Set the 'snapshot' variant any time a beta snapshot is used in order to obtain
|
||||||
|
# correct module name behavior for MAPL.
|
||||||
|
variant(
|
||||||
|
"snapshot",
|
||||||
|
default="none",
|
||||||
|
description="Named variant for snapshots versions (e.g., 'b09')",
|
||||||
|
)
|
||||||
|
|
||||||
# Optional dependencies
|
# Optional dependencies
|
||||||
depends_on("mpi", when="+mpi")
|
depends_on("mpi", when="+mpi")
|
||||||
@ -90,12 +98,12 @@ class Esmf(MakefilePackage):
|
|||||||
depends_on("netcdf-fortran@3.6:", when="+netcdf")
|
depends_on("netcdf-fortran@3.6:", when="+netcdf")
|
||||||
depends_on("parallel-netcdf@1.2.0:", when="+pnetcdf")
|
depends_on("parallel-netcdf@1.2.0:", when="+pnetcdf")
|
||||||
depends_on("xerces-c@3.1.0:", when="+xerces")
|
depends_on("xerces-c@3.1.0:", when="+xerces")
|
||||||
depends_on("parallelio@2.5.7: +mpi", when="@8.3.0:8.3.99+external-parallelio+mpi")
|
depends_on("parallelio@2.5.7: +mpi", when="@8.3+external-parallelio+mpi")
|
||||||
depends_on("parallelio@2.5.7: ~mpi", when="@8.3.0:8.3.99+external-parallelio~mpi")
|
depends_on("parallelio@2.5.7: ~mpi", when="@8.3+external-parallelio~mpi")
|
||||||
depends_on("parallelio@2.5.9: +mpi", when="@8.4.0:8.4.99+external-parallelio+mpi")
|
depends_on("parallelio@2.5.9: +mpi", when="@8.4+external-parallelio+mpi")
|
||||||
depends_on("parallelio@2.5.9: ~mpi", when="@8.4.0:8.4.99+external-parallelio~mpi")
|
depends_on("parallelio@2.5.9: ~mpi", when="@8.4+external-parallelio~mpi")
|
||||||
depends_on("parallelio@2.5.10: +mpi", when="@8.5.0:+external-parallelio+mpi")
|
depends_on("parallelio@2.5.10: +mpi", when="@8.5:+external-parallelio+mpi")
|
||||||
depends_on("parallelio@2.5.10: ~mpi", when="@8.5.0:+external-parallelio~mpi")
|
depends_on("parallelio@2.5.10: ~mpi", when="@8.5:+external-parallelio~mpi")
|
||||||
depends_on("cmake@3.5.2:", type="build", when="~external-parallelio")
|
depends_on("cmake@3.5.2:", type="build", when="~external-parallelio")
|
||||||
|
|
||||||
# Testing dependencies
|
# Testing dependencies
|
||||||
@ -241,7 +249,7 @@ def setup_build_environment(self, env):
|
|||||||
if (
|
if (
|
||||||
self.compiler.name in ["gcc", "clang", "apple-clang"]
|
self.compiler.name in ["gcc", "clang", "apple-clang"]
|
||||||
and gfortran_major_version >= 10
|
and gfortran_major_version >= 10
|
||||||
and self.spec.satisfies("@:8.2.99")
|
and (self.spec.satisfies("@:8.2.99") or self.spec.satisfies("@8.3.0b09"))
|
||||||
):
|
):
|
||||||
env.set("ESMF_F90COMPILEOPTS", "-fallow-argument-mismatch")
|
env.set("ESMF_F90COMPILEOPTS", "-fallow-argument-mismatch")
|
||||||
|
|
||||||
@ -268,6 +276,9 @@ def setup_build_environment(self, env):
|
|||||||
if "+mpi" in spec:
|
if "+mpi" in spec:
|
||||||
if "^cray-mpich" in self.spec:
|
if "^cray-mpich" in self.spec:
|
||||||
env.set("ESMF_COMM", "mpi")
|
env.set("ESMF_COMM", "mpi")
|
||||||
|
# https://github.com/jcsda/spack-stack/issues/517
|
||||||
|
if self.spec.satisfies("@:8.4.1"):
|
||||||
|
env.set("ESMF_CXXLINKLIBS", "-lmpifort -lmpi")
|
||||||
elif "^mvapich2" in spec:
|
elif "^mvapich2" in spec:
|
||||||
env.set("ESMF_COMM", "mvapich2")
|
env.set("ESMF_COMM", "mvapich2")
|
||||||
elif "^mpich" in spec:
|
elif "^mpich" in spec:
|
||||||
@ -327,7 +338,7 @@ def setup_build_environment(self, env):
|
|||||||
netcdfc = spec["netcdf-c"]
|
netcdfc = spec["netcdf-c"]
|
||||||
if netcdfc.satisfies("~shared"):
|
if netcdfc.satisfies("~shared"):
|
||||||
nc_config = which(os.path.join(netcdfc.prefix.bin, "nc-config"))
|
nc_config = which(os.path.join(netcdfc.prefix.bin, "nc-config"))
|
||||||
nc_flags = nc_config("--libs", output=str).strip()
|
nc_flags = nc_config("--static", "--libs", output=str).strip()
|
||||||
env.set("ESMF_NETCDF_LIBS", nc_flags)
|
env.set("ESMF_NETCDF_LIBS", nc_flags)
|
||||||
|
|
||||||
###################
|
###################
|
||||||
|
Loading…
Reference in New Issue
Block a user