summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/zlib-ng/package.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/zlib-ng/package.py b/var/spack/repos/builtin/packages/zlib-ng/package.py
index 26cdcb7c28..2a5675ab15 100644
--- a/var/spack/repos/builtin/packages/zlib-ng/package.py
+++ b/var/spack/repos/builtin/packages/zlib-ng/package.py
@@ -36,6 +36,11 @@ class ZlibNg(AutotoolsPackage, CMakePackage):
variant("compat", default=True, description="Enable compatibility API")
variant("opt", default=True, description="Enable optimizations")
+ variant("shared", default=True, description="Build shared library")
+ variant("pic", default=True, description="Enable position-independent code (PIC)")
+
+ conflicts("+shared~pic")
+
variant("new_strategies", default=True, description="Enable new deflate strategies")
provides("zlib-api", when="+compat")
@@ -58,7 +63,14 @@ class ZlibNg(AutotoolsPackage, CMakePackage):
@property
def libs(self):
name = "libz" if self.spec.satisfies("+compat") else "libz-ng"
- return find_libraries(name, root=self.prefix, recursive=True, shared=True)
+ return find_libraries(
+ name, root=self.prefix, recursive=True, shared=self.spec.satisfies("+shared")
+ )
+
+ def flag_handler(self, name, flags):
+ if name == "cflags" and self.spec.satisfies("+pic build_system=autotools"):
+ flags.append(self.compiler.cc_pic_flag)
+ return (flags, None, None)
class AutotoolsBuilder(autotools.AutotoolsBuilder):
@@ -68,6 +80,8 @@ class AutotoolsBuilder(autotools.AutotoolsBuilder):
args.append("--zlib-compat")
if self.spec.satisfies("~opt"):
args.append("--without-optimizations")
+ if self.spec.satisfies("~shared"):
+ args.append("--static")
if self.spec.satisfies("~new_strategies"):
args.append("--without-new-strategies")
return args
@@ -78,5 +92,7 @@ class CMakeBuilder(cmake.CMakeBuilder):
return [
self.define_from_variant("ZLIB_COMPAT", "compat"),
self.define_from_variant("WITH_OPTIM", "opt"),
+ self.define("BUILD_SHARED_LIBS", self.spec.satisfies("+shared")),
+ self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
self.define_from_variant("WITH_NEW_STRATEGIES", "new_strategies"),
]