diff options
author | Ashwin Kumar Karnad <46030335+iamashwin99@users.noreply.github.com> | 2024-01-09 02:51:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-08 17:51:21 -0800 |
commit | 5b64c550486bcef598797d482e07ff6499901523 (patch) | |
tree | 5f4e8c9f91ab9a76f66471db6f297fb506b9cf50 | |
parent | adef1460b4690d8d5e23dc83738fe8a62dcce800 (diff) | |
download | spack-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
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) |