summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshwin Kumar Karnad <46030335+iamashwin99@users.noreply.github.com>2024-01-09 02:51:21 +0100
committerGitHub <noreply@github.com>2024-01-08 17:51:21 -0800
commit5b64c550486bcef598797d482e07ff6499901523 (patch)
tree5f4e8c9f91ab9a76f66471db6f297fb506b9cf50
parentadef1460b4690d8d5e23dc83738fe8a62dcce800 (diff)
downloadspack-5b64c550486bcef598797d482e07ff6499901523.tar.gz
spack-5b64c550486bcef598797d482e07ff6499901523.tar.bz2
spack-5b64c550486bcef598797d482e07ff6499901523.tar.xz
spack-5b64c550486bcef598797d482e07ff6499901523.zip
[bigdft] Enable building dynamic libraries (#41562)
* bigdft: Add support for building shared libraries * bigdft: reformat with black * bigdft: use spec.satisfies instead of searching in spec
-rw-r--r--var/spack/repos/builtin/packages/bigdft-atlab/package.py14
-rw-r--r--var/spack/repos/builtin/packages/bigdft-chess/package.py5
-rw-r--r--var/spack/repos/builtin/packages/bigdft-core/package.py5
-rw-r--r--var/spack/repos/builtin/packages/bigdft-futile/package.py5
-rw-r--r--var/spack/repos/builtin/packages/bigdft-libabinit/package.py5
-rw-r--r--var/spack/repos/builtin/packages/bigdft-psolver/package.py5
-rw-r--r--var/spack/repos/builtin/packages/bigdft-spred/package.py5
7 files changed, 44 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/bigdft-atlab/package.py b/var/spack/repos/builtin/packages/bigdft-atlab/package.py
index a3955589e1..af1500f4c0 100644
--- a/var/spack/repos/builtin/packages/bigdft-atlab/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-atlab/package.py
@@ -21,6 +21,9 @@ class BigdftAtlab(AutotoolsPackage):
variant("mpi", default=True, description="Enable MPI support")
variant("openmp", default=True, description="Enable OpenMP support")
variant("openbabel", default=False, description="Enable detection of openbabel compilation")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
depends_on("autoconf", type="build")
depends_on("automake", type="build")
@@ -39,20 +42,31 @@ class BigdftAtlab(AutotoolsPackage):
prefix = self.prefix
fcflags = []
+ cflags = []
+ cxxflags = []
+
if "+openmp" in spec:
fcflags.append(self.compiler.openmp_flag)
+ if spec.satisfies("+shared"):
+ fcflags.append("-fPIC")
+ cflags.append("-fPIC")
+ cxxflags.append("-fPIC")
if self.spec.satisfies("%gcc@10:"):
fcflags.append("-fallow-argument-mismatch")
args = [
"FCFLAGS=%s" % " ".join(fcflags),
+ "CFLAGS=%s" % " ".join(cflags),
+ "CXXFLAGS=%s" % " ".join(cxxflags),
"--with-futile-libs=%s" % spec["bigdft-futile"].libs.ld_flags,
"--with-futile-incs=%s" % spec["bigdft-futile"].headers.include_flags + "/futile",
"--with-moduledir=%s" % prefix.include,
"--prefix=%s" % prefix,
"--without-etsf-io",
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+mpi" in spec:
args.append("CC=%s" % spec["mpi"].mpicc)
diff --git a/var/spack/repos/builtin/packages/bigdft-chess/package.py b/var/spack/repos/builtin/packages/bigdft-chess/package.py
index 361e3e6587..5ff540f7c8 100644
--- a/var/spack/repos/builtin/packages/bigdft-chess/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-chess/package.py
@@ -23,6 +23,9 @@ class BigdftChess(AutotoolsPackage, CudaPackage):
variant("openmp", default=True, description="Enable OpenMP support")
variant("scalapack", default=True, description="Enable SCALAPACK support")
variant("ntpoly", default=False, description="Option to use NTPoly")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
# variant('minpack', default=False, description='Give the link-line for MINPACK')
depends_on("autoconf", type="build")
@@ -73,6 +76,8 @@ class BigdftChess(AutotoolsPackage, CudaPackage):
"--prefix=%s" % prefix,
"--without-etsf-io",
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+mpi" in spec:
args.append("CC=%s" % spec["mpi"].mpicc)
diff --git a/var/spack/repos/builtin/packages/bigdft-core/package.py b/var/spack/repos/builtin/packages/bigdft-core/package.py
index e29ab9a2ac..90146355ee 100644
--- a/var/spack/repos/builtin/packages/bigdft-core/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-core/package.py
@@ -23,6 +23,9 @@ class BigdftCore(AutotoolsPackage, CudaPackage):
variant("openmp", default=True, description="Enable OpenMP support")
variant("scalapack", default=True, description="Enable SCALAPACK support")
variant("openbabel", default=False, description="Enable detection of openbabel compilation")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
depends_on("autoconf", type="build")
depends_on("automake", type="build")
@@ -87,6 +90,8 @@ class BigdftCore(AutotoolsPackage, CudaPackage):
"--prefix=%s" % prefix,
"--without-etsf-io",
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+mpi" in spec:
args.append("CC=%s" % spec["mpi"].mpicc)
diff --git a/var/spack/repos/builtin/packages/bigdft-futile/package.py b/var/spack/repos/builtin/packages/bigdft-futile/package.py
index 3bce94cd52..3894c503de 100644
--- a/var/spack/repos/builtin/packages/bigdft-futile/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-futile/package.py
@@ -24,6 +24,9 @@ class BigdftFutile(AutotoolsPackage, CudaPackage):
variant("mpi", default=True, description="Enable MPI support")
variant("openmp", default=True, description="Enable OpenMP support")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
depends_on("autoconf", type="build")
depends_on("automake", type="build")
@@ -59,6 +62,8 @@ class BigdftFutile(AutotoolsPackage, CudaPackage):
"--with-pyyaml-path=%s" % pyyaml,
"--prefix=%s" % prefix,
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+openmp" in spec:
args.append("--with-openmp")
diff --git a/var/spack/repos/builtin/packages/bigdft-libabinit/package.py b/var/spack/repos/builtin/packages/bigdft-libabinit/package.py
index 6d14ea46f4..8a514181ae 100644
--- a/var/spack/repos/builtin/packages/bigdft-libabinit/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-libabinit/package.py
@@ -26,6 +26,9 @@ class BigdftLibabinit(AutotoolsPackage):
depends_on("libtool", type="build")
variant("mpi", default=True, description="Enable MPI support")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
depends_on("python@3.0:", type=("build", "run"))
@@ -56,6 +59,8 @@ class BigdftLibabinit(AutotoolsPackage):
"--with-moduledir=%s" % prefix.include,
"--prefix=%s" % prefix,
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+mpi" in spec:
args.append("CC=%s" % spec["mpi"].mpicc)
diff --git a/var/spack/repos/builtin/packages/bigdft-psolver/package.py b/var/spack/repos/builtin/packages/bigdft-psolver/package.py
index 4655c754b2..b97a5fee0d 100644
--- a/var/spack/repos/builtin/packages/bigdft-psolver/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-psolver/package.py
@@ -23,6 +23,9 @@ class BigdftPsolver(AutotoolsPackage, CudaPackage):
variant("mpi", default=True, description="Enable MPI support")
variant("openmp", default=True, description="Enable OpenMP support")
variant("scalapack", default=True, description="Enable SCALAPACK support")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
depends_on("autoconf", type="build")
depends_on("automake", type="build")
@@ -69,6 +72,8 @@ class BigdftPsolver(AutotoolsPackage, CudaPackage):
"--prefix=%s" % prefix,
"--without-etsf-io",
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+mpi" in spec:
args.append("CC=%s" % spec["mpi"].mpicc)
diff --git a/var/spack/repos/builtin/packages/bigdft-spred/package.py b/var/spack/repos/builtin/packages/bigdft-spred/package.py
index c95da03a98..c0e02da236 100644
--- a/var/spack/repos/builtin/packages/bigdft-spred/package.py
+++ b/var/spack/repos/builtin/packages/bigdft-spred/package.py
@@ -26,6 +26,9 @@ class BigdftSpred(AutotoolsPackage):
variant("mpi", default=True, description="Enable MPI support")
variant("openmp", default=True, description="Enable OpenMP support")
variant("scalapack", default=True, description="Enable SCALAPACK support")
+ variant(
+ "shared", default=True, description="Build shared libraries"
+ ) # Not default in bigdft, but is typically the default expectation
depends_on("python@3.0:", type=("build", "run"))
@@ -72,6 +75,8 @@ class BigdftSpred(AutotoolsPackage):
"--with-moduledir=%s" % prefix.include,
"--prefix=%s" % prefix,
]
+ if spec.satisfies("+shared"):
+ args.append("--enable-dynamic-libraries")
if "+mpi" in spec:
args.append("CC=%s" % spec["mpi"].mpicc)