diff options
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/palace/package.py | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/var/spack/repos/builtin/packages/palace/package.py b/var/spack/repos/builtin/packages/palace/package.py index f0625ead18..176b358472 100644 --- a/var/spack/repos/builtin/packages/palace/package.py +++ b/var/spack/repos/builtin/packages/palace/package.py @@ -17,16 +17,12 @@ class Palace(CMakePackage): maintainers("sebastiangrimberg") version("develop", branch="main") + version("0.12.0", tag="v0.12.0", commit="8c192071206466638d5818048ee712e1fada386f") version("0.11.2", tag="v0.11.2", commit="6c3aa5f84a934a6ddd58022b2945a1bdb5fa329d") - variant("shared", default=True, description="Enables the build of shared libraries") + variant("shared", default=True, description="Build shared libraries") variant("int64", default=False, description="Use 64 bit integers") - variant("openmp", default=False, description="Use OpenMP") - variant( - "gslib", - default=True, - description="Build with GSLIB library for high-order field interpolation", - ) + variant("openmp", default=False, description="Use OpenMP for shared-memory parallelism") variant( "superlu-dist", default=True, description="Build with SuperLU_DIST sparse direct solver" ) @@ -34,9 +30,16 @@ class Palace(CMakePackage): variant("mumps", default=False, description="Build with MUMPS sparse direct solver") variant("slepc", default=True, description="Build with SLEPc eigenvalue solver") variant("arpack", default=False, description="Build with ARPACK eigenvalue solver") + variant("libxsmm", default=True, description="Build with LIBXSMM backend for libCEED") + variant("magma", default=True, description="Build with MAGMA backend for libCEED") + variant( + "gslib", + default=True, + description="Build with GSLIB library for high-order field interpolation", + ) # Dependencies - depends_on("cmake@3.13:", type="build") + depends_on("cmake@3.21:", type="build") depends_on("pkgconfig", type="build") depends_on("mpi") depends_on("zlib-api") @@ -95,8 +98,19 @@ class Palace(CMakePackage): depends_on("arpack-ng+shared", when="+shared") depends_on("arpack-ng~shared", when="~shared") - # Palace always builds its own internal MFEM, GSLIB + with when("+libxsmm"): + depends_on("libxsmm@main") + depends_on("libxsmm+shared", when="+shared") + depends_on("libxsmm~shared", when="~shared") + + with when("+magma"): + depends_on("magma") + depends_on("magma+shared", when="+shared") + depends_on("magma~shared", when="~shared") + + # Palace always builds its own internal MFEM, libCEED, and GSLIB conflicts("mfem") + conflicts("libceed") conflicts("gslib") # More dependency variant conflicts @@ -109,12 +123,14 @@ class Palace(CMakePackage): self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("PALACE_WITH_64BIT_INT", "int64"), self.define_from_variant("PALACE_WITH_OPENMP", "openmp"), - self.define_from_variant("PALACE_WITH_GSLIB", "gslib"), self.define_from_variant("PALACE_WITH_SUPERLU", "superlu-dist"), self.define_from_variant("PALACE_WITH_STRUMPACK", "strumpack"), self.define_from_variant("PALACE_WITH_MUMPS", "mumps"), self.define_from_variant("PALACE_WITH_SLEPC", "slepc"), self.define_from_variant("PALACE_WITH_ARPACK", "arpack"), + self.define_from_variant("PALACE_WITH_LIBXSMM", "libxsmm"), + self.define_from_variant("PALACE_WITH_MAGMA", "magma"), + self.define_from_variant("PALACE_WITH_GSLIB", "gslib"), self.define("PALACE_BUILD_EXTERNAL_DEPS", False), ] @@ -134,6 +150,12 @@ class Palace(CMakePackage): if "+mumps" in self.spec: args += [self.define("MUMPS_REQUIRED_PACKAGES", "LAPACK;BLAS;MPI;MPI_Fortran")] + # Allow internal libCEED build to find LIBXSMM, MAGMA + if "+libxsmm" in self.spec: + args += [self.define("LIBXSMM_DIR", self.spec["libxsmm"].prefix)] + if "+magma" in self.spec: + args += [self.define("MAGMA_DIR", self.spec["magma"].prefix)] + return args def install(self, spec, prefix): |