ESMF package: fix netcdf static libs and variant combinations (#39738)

Add "snapshot" variant for identifying UFS WM support
This commit is contained in:
Dom Heinzeller 2023-09-20 11:28:52 -06:00 committed by GitHub
parent e16ca49036
commit 31fe78e378
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -76,12 +76,20 @@ class Esmf(MakefilePackage):
)
variant("debug", default=False, description="Build with debugging symbols and options enabled")
variant("shared", default=True, description="Build shared library")
# 'esmf_os', 'esmf_comm', 'esmf_pio' variants allow override values for their corresponding
# build environment variables. Documentation, including valid values, can be found at
# https://earthsystemmodeling.org/docs/release/latest/ESMF_usrdoc/node10.html#SECTION000105000000000000000
variant("esmf_os", default="auto", description="Override for ESMF_OS variable")
variant("esmf_comm", default="auto", description="Override for ESMF_COMM 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
depends_on("mpi", when="+mpi")
@ -90,12 +98,12 @@ class Esmf(MakefilePackage):
depends_on("netcdf-fortran@3.6:", when="+netcdf")
depends_on("parallel-netcdf@1.2.0:", when="+pnetcdf")
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.0:8.3.99+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.0:8.4.99+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.0:+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+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+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:+external-parallelio~mpi")
depends_on("cmake@3.5.2:", type="build", when="~external-parallelio")
# Testing dependencies
@ -241,7 +249,7 @@ def setup_build_environment(self, env):
if (
self.compiler.name in ["gcc", "clang", "apple-clang"]
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")
@ -268,6 +276,9 @@ def setup_build_environment(self, env):
if "+mpi" in spec:
if "^cray-mpich" in self.spec:
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:
env.set("ESMF_COMM", "mvapich2")
elif "^mpich" in spec:
@ -327,7 +338,7 @@ def setup_build_environment(self, env):
netcdfc = spec["netcdf-c"]
if netcdfc.satisfies("~shared"):
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)
###################