[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
This commit is contained in:
Ashwin Kumar Karnad 2024-01-09 02:51:21 +01:00 committed by GitHub
parent adef1460b4
commit 5b64c55048
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 0 deletions

View File

@ -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 @@ def configure_args(self):
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)

View File

@ -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 @@ def configure_args(self):
"--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)

View File

@ -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 @@ def configure_args(self):
"--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)

View File

@ -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 @@ def configure_args(self):
"--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")

View File

@ -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 @@ def configure_args(self):
"--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)

View File

@ -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 @@ def configure_args(self):
"--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)

View File

@ -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 @@ def configure_args(self):
"--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)