From 7f4889f34872b9e3c29101e5441f6ba0409e2bdb Mon Sep 17 00:00:00 2001
From: Jon Trulson <jon@radscan.com>
Date: Sun, 5 Jan 2020 17:49:02 -0700
Subject: [PATCH] freetype: redo the way we detect and use

We (configure) relies on freetype-config existing and telling us what
the proper includes and libs are.
---
 cde/configure.ac                 | 58 ++++++++++++++++++++++----------
 cde/lib/DtWidget/Makefile.am     | 14 +++-----
 cde/programs/dtfile/Makefile.am  |  9 ++---
 cde/programs/dtlogin/Makefile.am |  8 ++---
 4 files changed, 54 insertions(+), 35 deletions(-)

diff --git a/cde/configure.ac b/cde/configure.ac
index 6173479b..c7b5dc1f 100644
--- a/cde/configure.ac
+++ b/cde/configure.ac
@@ -65,9 +65,10 @@ OSMAJORVERSION=4
 OSMINORVERSION=15
 
 dnl locations of libs/includes if not in 'standard' places like on
-dnl linux
-MOTIF_LIB=""
-MOTIF_INC=""
+dnl linux (/usr/...).  We build these up based on where X11 is, and
+dnl other things as we go along.
+EXTRA_LIBS=""
+EXTRA_INCS=""
 
 case "${host_os}" in
 	linux*)
@@ -122,12 +123,13 @@ AM_CONDITIONAL([HPUX], [test "$build_hpux" = "yes"])
 dnl Add osmajor/minor version to cppflags.
 OSVERSION="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION"
 
-dnl set CSRG_BASED define for the BSD's
+dnl set CSRG_BASED define for the BSD's.  Also, they use /usr/local
+dnl for a lot of things, so add that to the INCS and LIBS
 if test "$bsd" = "yes"
 then
         SOURCE_CPP_DEFINES="${SOURCE_CPP_DEFINES} -DCSRG_BASED"
-        MOTIF_LIB="-L/usr/local/lib"
-        MOTIF_INC="-I/usr/local/include -I/usr/X11R6/include/freetype2 -I/usr/local/include/freetype2"
+        EXTRA_INCS="-I/usr/local/include ${EXTRA_INCS}"
+        EXTRA_LIBS="-L/usr/local/lib ${EXTRA_LIBS}"
 fi
 
 is_x86_64=no
@@ -294,6 +296,10 @@ AC_PROG_CC_C99
 AC_PATH_X
 AC_PATH_XTRA
 
+dnl Add X11 goodies here
+EXTRA_LIBS="${X_LIBS} ${EXTRA_LIBS}"
+EXTRA_INCS="${X_CFLAGS} ${EXTRA_INCS}"
+
 AC_FUNC_FORK
 
 dnl programs with full paths
@@ -371,21 +377,39 @@ AC_SUBST(TIRPCLIB)
 dnl jpeg
 AC_CHECK_LIB(jpeg, jpeg_read_header, [JPEGLIB="-ljpeg"],
              [AC_MSG_ERROR([libjpeg not found, please install it])],
-             [$MOTIF_LIB $X_LIBS])
+             [${EXTRA_INCS} ${EXTRA_LIBS}])
 AC_SUBST(JPEGLIB)
 
 dnl Setup XTOOLLIB - we do it in this specific order to avoid ordering
 dnl issues
 XTOOLLIB=""
-AC_CHECK_LIB(X11, XOpenDisplay, [XTOOLLIB="-lX11"], , $X_LIBS)
-AC_CHECK_LIB(Xau, XauReadAuth, [XTOOLLIB="-lXau ${XTOOLLIB}"], , $X_LIBS)
-AC_CHECK_LIB(Xt, XtInitialize, [XTOOLLIB="-lXt ${XTOOLLIB}"], , $X_LIBS)
-AC_CHECK_LIB(ICE, IceCloseConnection, [XTOOLLIB="-lICE ${XTOOLLIB}"], , $X_LIBS)
-AC_CHECK_LIB(SM, SmcOpenConnection, [XTOOLLIB="-lSM ${XTOOLLIB}"], , $X_LIBS)
-AC_CHECK_LIB(Xm, XmTextSetString, [XTOOLLIB="-lXm ${XTOOLLIB}"], , [$MOTIF_LIB $X_LIBS])
-XTOOLLIB="${X_LIBS} ${MOTIF_LIB} ${X_EXTRA_LIBS} ${X_PRE_LIBS} ${XTOOLLIB}"
+AC_CHECK_LIB(X11, XOpenDisplay, [XTOOLLIB="-lX11"], ,
+                  [${EXTRA_INCS} ${EXTRA_LIBS}])
+AC_CHECK_LIB(Xau, XauReadAuth, [XTOOLLIB="-lXau ${XTOOLLIB}"], ,
+                  [${EXTRA_INCS} ${EXTRA_LIBS}])
+AC_CHECK_LIB(Xt, XtInitialize, [XTOOLLIB="-lXt ${XTOOLLIB}"], ,
+                 [${EXTRA_INCS} ${EXTRA_LIBS}])
+AC_CHECK_LIB(ICE, IceCloseConnection, [XTOOLLIB="-lICE ${XTOOLLIB}"], ,
+                  [${EXTRA_INCS} ${EXTRA_LIBS}])
+AC_CHECK_LIB(SM, SmcOpenConnection, [XTOOLLIB="-lSM ${XTOOLLIB}"], ,
+                 [${EXTRA_INCS} ${EXTRA_LIBS}])
+AC_CHECK_LIB(Xm, XmTextSetString, [XTOOLLIB="-lXm ${XTOOLLIB}"], ,
+                 [${EXTRA_INCS} ${EXTRA_LIBS}])
+
+XTOOLLIB="${EXTRA_INCS} ${EXTRA_LIBS} ${X_EXTRA_LIBS} ${XTOOLLIB}"
 AC_SUBST([XTOOLLIB])
 
+dnl Check for freetype libraries/headers
+AC_CHECK_TOOLS([FREETYPE_CONFIG], [freetype-config])
+if test -z "$FREETYPE_CONFIG"; then
+  AC_MSG_ERROR([Missing freetype-config. Install freetype development headers and library.])
+fi
+
+FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
+AC_SUBST(FREETYPE_CFLAGS)
+FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
+AC_SUBST(FREETYPE_LIBS)
+
 dnl check MISSING_PROGS - error out here if there's stuff in it.
 
 if test -n "$MISSING_PROGS"; then
@@ -401,9 +425,9 @@ dnl variable and presumably add those to your Makefile.am files.  We
 dnl have 192 of these currently, so... The user will just have to
 dnl deal, or modify them here directly.
 CPPFLAGS="${CPPFLAGS} ${SOURCE_CPP_DEFINES} ${CPP_COMPILER_FLAGS} ${OSVERSION}"
-CFLAGS="${CFLAGS} ${C_COMPILER_FLAGS} ${X_CFLAGS} ${MOTIF_INC} ${PTHREAD_CFLAGS}"
-CXXFLAGS="${CXXFLAGS} ${CXX_COMPILER_FLAGS} ${X_CFLAGS} ${MOTIF_INC} ${PTHREAD_CFLAGS}"
-LIBS="${X_LIBS} ${LIBS} ${PTHREAD_LIBS}"
+CFLAGS="${CFLAGS} ${C_COMPILER_FLAGS} ${EXTRA_INCS} ${PTHREAD_CFLAGS}"
+CXXFLAGS="${CXXFLAGS} ${CXX_COMPILER_FLAGS} ${EXTRA_INCS} ${PTHREAD_CFLAGS}"
+LIBS="${EXTRA_LIBS} ${LIBS} ${PTHREAD_LIBS}"
 
 dnl All of the makefiles we need to generate go here...
 AC_CONFIG_FILES([
diff --git a/cde/lib/DtWidget/Makefile.am b/cde/lib/DtWidget/Makefile.am
index 0726f6ce..e09f4f5e 100644
--- a/cde/lib/DtWidget/Makefile.am
+++ b/cde/lib/DtWidget/Makefile.am
@@ -4,23 +4,17 @@ MAINTAINERCLEANFILES = Makefile.in
 
 lib_LTLIBRARIES = libDtWidget.la
 
-AM_CPPFLAGS = -DCDE_INSTALLATION_TOP=${prefix} @DT_INCDIR@
+AM_CPPFLAGS = -DCDE_INSTALLATION_TOP=$(CDE_INSTALLATION_TOP) $(DT_INCDIR)
 
-libDtWidget_la_CFLAGS = -DI18N_MSG -DMULTIBYTE
+libDtWidget_la_CFLAGS = -DI18N_MSG -DMULTIBYTE $(FREETYPE_CFLAGS)
 
 libDtWidget_la_LDFLAGS = -version-info 2:1:0
 
-if LINUX
-libDtWidget_la_CFLAGS += -I/usr/include/freetype2
-endif
-
-if BSD
-libDtWidget_la_CFLAGS += -I/usr/local/include/freetype2
-endif
+libDtWidget_la_LIBADD = $(FREETYPE_LIBS)
 
 if SOLARIS
 libDtWidget_la_CFLAGS += -DNO_REGCOMP
-libDtWidget_la_LIBADD = -lXm -lc -lw -lm -lintl
+libDtWidget_la_LIBADD += -lc -lw -lintl
 endif
 
 
diff --git a/cde/programs/dtfile/Makefile.am b/cde/programs/dtfile/Makefile.am
index 2ce5f474..2cc10907 100644
--- a/cde/programs/dtfile/Makefile.am
+++ b/cde/programs/dtfile/Makefile.am
@@ -14,11 +14,12 @@ dist_bin_SCRIPTS = dtfile_error
 dtfile_CPPFLAGS = -I./dtcopy -DSHAPE -D_ILS_MACROS -DSUN_PERF \
 		-DCDE_INSTALLATION_TOP=\"${prefix}\" \
 		-DCDE_CONFIGURATION_TOP=\"$(CDE_CONFIGURATION_TOP)\" \
-		-DKORNSHELL=\"$(KSH)\" -I/usr/include/freetype2
+		-DKORNSHELL=\"$(KSH)\" $(FREETYPE_CFLAGS)
 
-dtfile_LDADD = @DTCLIENTLIBS@ $(TIRPCLIB) -lXm -lXext \
-	       $(XTOOLLIB) ${X_LIBS} dtcopy/sharedFuncs.o \
-	       dtcopy/fsrtns.o
+dtfile_LDADD = dtcopy/sharedFuncs.o \
+	dtcopy/fsrtns.o \
+	$(DTCLIENTLIBS) $(TIRPCLIB) -lXm -lXext $(FREETYPE_LIBS) \
+	$(XTOOLLIB) 
 
 if OPENBSD
 dtfile_CPPFLAGS += -DFILE_MAP_OPTIMIZE
diff --git a/cde/programs/dtlogin/Makefile.am b/cde/programs/dtlogin/Makefile.am
index cdb3309e..9551513d 100644
--- a/cde/programs/dtlogin/Makefile.am
+++ b/cde/programs/dtlogin/Makefile.am
@@ -14,7 +14,7 @@ DEF_PM_PATH = $(CDE_CONFIGURATION_TOP)/appconfig/icons/%L/%B%M.pm:$(CDE_CONFIGUR
 AM_CFLAGS = -DCDE_CONFIGURATION_TOP=\"$(CDE_CONFIGURATION_TOP)\" \
             -DCDE_INSTALLATION_TOP=\"$(CDE_INSTALLATION_TOP)\" \
             -DCDE_LOGFILES_TOP=\"$(CDE_LOGFILES_TOP)\" \
-	    -I/usr/include/freetype2 -DBINDIR=\"$(XBINDIR)\" \
+	    $(FREETYPE_CFLAGS) -DBINDIR=\"$(XBINDIR)\" \
 	    -DXDMDIR=\"$(XDMDIR)\" \
 	    -DKORNSHELL=$(KSH) -DUNIXCONN -DTCPCONN -DXDMCP
 
@@ -49,11 +49,11 @@ dtchooser_SOURCES = chooser.c dtchooser.c vglogo.c vgutil.c vgcallback.c \
 		    vglang.c
 
 dtlogin_LDADD = libresource.a @DTCLIENTLIBS@ -lXau -lXmu -lXext -lXdmcp \
-	$(XTOOLLIB) $(TIRPCLIB)
+	$(FREETYPE_LIBS) $(XTOOLLIB) $(TIRPCLIB)
 
-dtgreet_LDADD = $(DTCLIENTLIBS) $(XTOOLLIB)
+dtgreet_LDADD = $(DTCLIENTLIBS) $(FREETYPE_LIBS) $(XTOOLLIB)
 
-dtchooser_LDADD = $(DTCLIENTLIBS) $(XTOOLLIB) -lXmu -lXext -lXdmcp $(XTOOLLIB)
+dtchooser_LDADD = $(DTCLIENTLIBS) $(FREETYPE_LIBS) -lXmu -lXext -lXdmcp $(XTOOLLIB)
 
 
 if LINUX
-- 
2.25.1