summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Richert <alexander.richert@noaa.gov>2024-07-02 14:06:53 -0700
committerGitHub <noreply@github.com>2024-07-02 14:06:53 -0700
commitfd0baca222e9edf4ae170c7b9c256e07b4fd3b4d (patch)
tree7bef3cc3240b509b07630caacffcdbb0ae445236
parentd2fc0d6a350732b5efa02070dca5db4b372717e0 (diff)
downloadspack-fd0baca222e9edf4ae170c7b9c256e07b4fd3b4d.tar.gz
spack-fd0baca222e9edf4ae170c7b9c256e07b4fd3b4d.tar.bz2
spack-fd0baca222e9edf4ae170c7b9c256e07b4fd3b4d.tar.xz
spack-fd0baca222e9edf4ae170c7b9c256e07b4fd3b4d.zip
fontconfig: add pic variant and support static deps (#44884)
* fontconfig: add pic variant; allow static dependencies * Revise fontconfig to clean up flags * Revise fontconfig to remove unnecessary flag * Update fontconfig * update fontconfig logic for static deps
-rw-r--r--var/spack/repos/builtin/packages/fontconfig/package.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py
index e829b60b46..9754571129 100644
--- a/var/spack/repos/builtin/packages/fontconfig/package.py
+++ b/var/spack/repos/builtin/packages/fontconfig/package.py
@@ -33,6 +33,8 @@ class Fontconfig(AutotoolsPackage):
depends_on("uuid", when="@2.13.1:")
depends_on("python@3:", type="build", when="@2.13.93:")
+ variant("pic", default=False, description="Enable position-independent code (PIC)")
+
def patch(self):
"""Make test/run-test.sh compatible with dash"""
filter_file("SIGINT SIGTERM SIGABRT EXIT", "2 15 6 0", "test/run-test.sh")
@@ -45,8 +47,29 @@ class Fontconfig(AutotoolsPackage):
def configure_args(self):
font_path = join_path(self.spec["font-util"].prefix, "share", "fonts")
+ args = ["--enable-libxml2", "--disable-docs", f"--with-default-fonts={font_path}"]
+ ldflags = []
+ libs = []
+ deps = []
+ if self.spec["bzip2"].satisfies("~shared"):
+ deps.append("bzip2")
+ if not self.spec["libpng"].satisfies("libs=shared"):
+ deps.append("libpng")
+ if self.spec["libxml2"].satisfies("~shared"):
+ deps.append("libxml-2.0")
+ if deps:
+ pc = which("pkg-config")
+ for lib in deps:
+ ldflags.append(pc(lib, "--static", "--libs-only-L", output=str).strip())
+ libs.append(pc(lib, "--static", "--libs-only-l", output=str).strip())
+ args.append("LDFLAGS=%s" % " ".join(ldflags))
+ args.append("LIBS=%s" % " ".join(libs))
+
+ if self.spec.satisfies("+pic"):
+ args.append(f"CFLAGS={self.compiler.cc_pic_flag}")
+ args.append(f"FFLAGS={self.compiler.f77_pic_flag}")
- return ["--enable-libxml2", "--disable-docs", f"--with-default-fonts={font_path}"]
+ return args
@run_after("install")
def system_fonts(self):