From 4320b1d82da1bfe1519800ae3ac35b6b59a9da56 Mon Sep 17 00:00:00 2001
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
Date: Fri, 8 Sep 2023 18:43:00 +0200
Subject: [PATCH 2/3] Use pkg-config to set fontconfig CFLAGS and LIBS

---
 configure.ac      | 16 +++++++++++++---
 src/Makefile.am   |  8 +++-----
 tests/Makefile.am |  4 ++--
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac
index 47452c5..3113db8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -81,11 +81,23 @@ AC_PROG_SED
 AM_PROG_AR
 
 # Search for pkg-config and set PKG_CONFIG to the path found, else empty.
-# PKG_PROG_PKG_CONFIG
+PKG_PROG_PKG_CONFIG
 # On debian, pkg-config does not find xaw3d. On archlinux, pkg-config
 # --libs xaw3d yields -lXaw3d -lXmu -lXt -lX11 -- but -lXmu is not
 # strictly necessary. Use hard-coded paths instead of pkg-config.
 
+# First try pkg-config, as a side-effect this might set flags that are
+# useful later, e.g., for libpng.
+dnl Under archlinux, PKG_CHECK_MODULES(FT, fontconfig) would write during
+dnl ./configure "checking for FT...", under debian the line is
+dnl "checking for fontconfig...". Stay on the comprehensible side.
+AS_IF([test "x$PKG_CONFIG" != x],
+    [PKG_CHECK_MODULES([fontconfig], [fontconfig])],
+    [fontconfig_CFLAGS='-I$(oldincludedir)/freetype2 '
+     AC_SEARCH_LIBS([FcInit], [fontconfig])])
+AC_SUBST([fontconfig_CFLAGS])
+AC_SUBST([fontconfig_LIBS])
+
 dnl Not useful for packagers.
 dnl AC_CHECK_PROG(XDG_ICON, [xdg-icon-resource], [xdg-icon-resource])
 dnl AC_CHECK_PROG(XDG_MENU, [xdg-desktop-menu], [xdg-desktop-menu])
@@ -93,8 +105,6 @@ dnl AC_CHECK_PROG(XDG_MENU, [xdg-desktop-menu], [xdg-desktop-menu])
 
 # Checks for libraries.
 AC_SEARCH_LIBS([pow], [m])dnl
-dnl AC_SEARCH_LIBS([deflate], [z])  # libz is not needed.
-AC_SEARCH_LIBS([FcInit], [fontconfig])
 
 
 # Checks for header files.
diff --git a/src/Makefile.am b/src/Makefile.am
index 3cbd5ee..73d5132 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -23,13 +23,11 @@
 # "`u' modifier ignored since `D' is the default...".
 ARFLAGS = cr
 
-# Xft #includes <ft2build.h>, not <freetype2/ft2build.h>, hence freetype2
-# must be put into the search path.
-
-AM_CPPFLAGS = -I$(oldincludedir)/freetype2 $(XCPPFLAGS) -DNDEBUG -DXFIGLIBDIR="\"$(compkeydbdir)\"" \
+AM_CPPFLAGS = $(fontconfig_CFLAGS) $(XCPPFLAGS) -DNDEBUG	\
+	-DXFIGLIBDIR="\"$(compkeydbdir)\""			\
 	-DOBJLIBDIR="\"$(pkgdatadir)/Libraries\"" -DXFIGDOCDIR="\"$(docdir)\""
 
-AM_LDFLAGS = $(XLDFLAGS)
+AM_LDFLAGS = $(fontconfig_LIBS) $(XLDFLAGS)
 
 # LIBOBJS must be placed in LDADD or xfig_LDADD - otherwise, the
 # lib-dir is not distributed
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2f529ac..c158806 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -39,9 +39,9 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
 	  echo 'm4_define([AT_PACKAGE_URL], [@PACKAGE_URL@])'; \
 	} >'$(srcdir)/package.m4'
 
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(oldincludedir)/freetype2 $(XCPPFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/src $(fontconfig_CFLAGS) $(XCPPFLAGS)
 
-AM_LDFLAGS = $(XLDFLAGS)
+AM_LDFLAGS = $(fontconfig_LIBS) $(XLDFLAGS)
 LDADD = $(top_builddir)/src/libxfig.a $(XLIBS)
 
 check_PROGRAMS = test1 test2 test3 test4
-- 
2.40.1

