1From 6aa1338b916fe72c200b6f160b934be15b6ff590 Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@intel.com>
3Date: Tue, 23 Jan 2018 00:54:13 +0000
4Subject: [PATCH] gettext: beat library detection into shape
5
6For reasons which I just can't fathom gnulib doesn't use the expected tools to
7find libraries but badly reinvents the wheel.  This will trivially lead to host
8contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
9canonicalisation resulting in relative paths).
10
11Simply delete all the crazy, and replace with a single call to pkg-config.
12
13Upstream-Status: Inappropriate [upstream still refuse to consider pkg-config]
14Signed-off-by: Ross Burton <ross.burton@intel.com>
15---
16 gettext-tools/gnulib-m4/libxml.m4       | 105 ++---------------------
17 libtextstyle/gnulib-local/m4/libglib.m4 | 106 +++---------------------
18 libtextstyle/gnulib-m4/libglib.m4       | 106 +++---------------------
19 3 files changed, 31 insertions(+), 286 deletions(-)
20
21diff --git a/gettext-tools/gnulib-m4/libxml.m4 b/gettext-tools/gnulib-m4/libxml.m4
22index 0340490..0355388 100644
23--- a/gettext-tools/gnulib-m4/libxml.m4
24+++ b/gettext-tools/gnulib-m4/libxml.m4
25@@ -13,6 +13,7 @@ dnl gl_LIBXML(FORCE-INCLUDED)
26 dnl   forces the use of the included or an external libxml.
27 AC_DEFUN([gl_LIBXML],
28 [
29+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
30   AC_REQUIRE([AM_ICONV_LINK])
31
32   ifelse([$1], , [
33@@ -30,106 +31,10 @@ AC_DEFUN([gl_LIBXML],
34   INCXML=
35   ifelse([$1], [yes], , [
36     if test "$gl_cv_libxml_use_included" != yes; then
37-      dnl Figure out whether we can use a preinstalled libxml2, or have to use
38-      dnl the included one.
39-      AC_CACHE_VAL([gl_cv_libxml], [
40-        gl_cv_libxml=no
41-        gl_cv_LIBXML=
42-        gl_cv_LTLIBXML=
43-        gl_cv_INCXML=
44-        gl_save_LIBS="$LIBS"
45-        LIBS="$LIBS $LIBICONV"
46-        dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
47-        dnl accordingly.
48-        dnl Don't use xml2-config nor pkg-config, since it doesn't work when
49-        dnl cross-compiling or when the C compiler in use is different from the
50-        dnl one that built the library.
51-        dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
52-        dnl libxml2 is built in such a way that uses of xmlFree work fine with
53-        dnl -Wl,--enable-auto-import but lead to a link error with
54-        dnl -Wl,--disable-auto-import.
55-        AC_LIB_LINKFLAGS_BODY([xml2])
56-        LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
57-        AC_LINK_IFELSE(
58-          [AC_LANG_PROGRAM(
59-             [[#include <libxml/xmlversion.h>
60-               #include <libxml/xmlmemory.h>
61-               #include <libxml/xpath.h>
62-             ]],
63-             [[xmlCheckVersion (0);
64-               xmlFree ((void *) 0);
65-               xmlXPathSetContextNode ((void *)0, (void *)0);
66-             ]])],
67-          [gl_cv_libxml=yes
68-           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
69-           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
70-          ])
71-        if test "$gl_cv_libxml" != yes; then
72-          gl_save_CPPFLAGS="$CPPFLAGS"
73-          CPPFLAGS="$CPPFLAGS $INCXML2"
74-          AC_LINK_IFELSE(
75-            [AC_LANG_PROGRAM(
76-               [[#include <libxml/xmlversion.h>
77-                 #include <libxml/xmlmemory.h>
78-                 #include <libxml/xpath.h>
79-               ]],
80-               [[xmlCheckVersion (0);
81-                 xmlFree ((void *) 0);
82-                 xmlXPathSetContextNode ((void *)0, (void *)0);
83-               ]])],
84-            [gl_cv_libxml=yes
85-             gl_cv_LIBXML="$LIBXML2 $LIBICONV"
86-             gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
87-             gl_cv_INCXML="$INCXML2"
88-            ])
89-          if test "$gl_cv_libxml" != yes; then
90-            dnl Often the include files are installed in /usr/include/libxml2.
91-            dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
92-            dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
93-            dnl self-contained.
94-            libxml2_include_dir=
95-            AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <libxml2/libxml/xmlexports.h>]])],
96-              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
97-               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
98-              ])
99-            if test -z "$libxml2_include_dir"; then
100-              AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <libxml2/libxml/xmlversion.h>]])],
101-                [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
102-                 libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
103-                ])
104-            fi
105-            if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
106-              CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
107-              AC_LINK_IFELSE(
108-                [AC_LANG_PROGRAM(
109-                   [[#include <libxml/xmlversion.h>
110-                     #include <libxml/xmlmemory.h>
111-                     #include <libxml/xpath.h>
112-                   ]],
113-                   [[xmlCheckVersion (0);
114-                     xmlFree ((void *) 0);
115-                     xmlXPathSetContextNode ((void *)0, (void *)0);
116-                   ]])],
117-                [gl_cv_libxml=yes
118-                 gl_cv_LIBXML="$LIBXML2 $LIBICONV"
119-                 gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
120-                 gl_cv_INCXML="-I$libxml2_include_dir"
121-                ])
122-            fi
123-          fi
124-          CPPFLAGS="$gl_save_CPPFLAGS"
125-        fi
126-        LIBS="$gl_save_LIBS"
127-      ])
128-      AC_MSG_CHECKING([for libxml])
129-      AC_MSG_RESULT([$gl_cv_libxml])
130-      if test $gl_cv_libxml = yes; then
131-        LIBXML="$gl_cv_LIBXML"
132-        LTLIBXML="$gl_cv_LTLIBXML"
133-        INCXML="$gl_cv_INCXML"
134-      else
135-        gl_cv_libxml_use_included=yes
136-      fi
137+      PKG_CHECK_MODULES([XML], [libxml-2.0])
138+      LIBXML=$XML_LIBS
139+      LTLIBXML=$XML_LIBS
140+      INCXML=$XML_CFLAGS
141     fi
142   ])
143   AC_SUBST([LIBXML])
144diff --git a/libtextstyle/gnulib-local/m4/libglib.m4 b/libtextstyle/gnulib-local/m4/libglib.m4
145index dbc9eb8..136e512 100644
146--- a/libtextstyle/gnulib-local/m4/libglib.m4
147+++ b/libtextstyle/gnulib-local/m4/libglib.m4
148@@ -6,106 +6,26 @@ dnl with or without modifications, as long as this notice is preserved.
149
150 dnl From Bruno Haible.
151
152-dnl gl_LIBGLIB
153-dnl   gives the user the option to decide whether to use the included or
154-dnl   an external libglib.
155-dnl gl_LIBGLIB(FORCE-INCLUDED)
156-dnl   forces the use of the included or an external libglib.
157 AC_DEFUN([gl_LIBGLIB],
158 [
159-  ifelse([$1], , [
160-    AC_MSG_CHECKING([whether included glib is requested])
161-    AC_ARG_WITH([included-glib],
162-      [  --with-included-glib    use the glib2 included here],
163-      [gl_cv_libglib_force_included=$withval],
164-      [gl_cv_libglib_force_included=no])
165-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
166-  ], [gl_cv_libglib_force_included=$1])
167+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
168+  AC_MSG_CHECKING([whether included glib is requested])
169+  AC_ARG_WITH([included-glib],
170+    [  --with-included-glib    use the glib2 included here],
171+    [gl_cv_libglib_force_included=$withval],
172+    [gl_cv_libglib_force_included=no])
173+  AC_MSG_RESULT([$gl_cv_libglib_force_included])
174
175   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
176   LIBGLIB=
177   LTLIBGLIB=
178   INCGLIB=
179-  ifelse([$1], [yes], , [
180-    if test "$gl_cv_libglib_use_included" != yes; then
181-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
182-      dnl the included one.
183-      AC_CACHE_VAL([gl_cv_libglib], [
184-        gl_cv_libglib=no
185-        gl_cv_LIBGLIB=
186-        gl_cv_LTLIBGLIB=
187-        gl_cv_INCGLIB=
188-        gl_save_LIBS="$LIBS"
189-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
190-        dnl INCGLIB_2_0 accordingly.
191-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
192-        dnl cross-compiling or when the C compiler in use is different from the
193-        dnl one that built the library.
194-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
195-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
196-        AC_LINK_IFELSE(
197-          [AC_LANG_PROGRAM(
198-             [[#include <glib.h>
199-               #ifndef G_BEGIN_DECLS
200-               error this glib.h includes a glibconfig.h from a glib version 1.x
201-               #endif
202-             ]],
203-             [[g_string_new ("foo");]])],
204-          [gl_cv_libglib=yes
205-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
206-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
207-          ])
208-        if test "$gl_cv_libglib" != yes; then
209-          gl_save_CPPFLAGS="$CPPFLAGS"
210-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
211-          AC_LINK_IFELSE(
212-            [AC_LANG_PROGRAM(
213-               [[#include <glib.h>
214-                 #ifndef G_BEGIN_DECLS
215-                 error this glib.h includes a glibconfig.h from a glib version 1.x
216-                 #endif
217-               ]],
218-               [[g_string_new ("foo");]])],
219-            [gl_cv_libglib=yes
220-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
221-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
222-             gl_cv_INCGLIB="$INCGLIB_2_0"
223-            ])
224-          if test "$gl_cv_libglib" != yes; then
225-            dnl Often the include files are installed in /usr/include/glib-2.0
226-            dnl and /usr/lib/glib-2.0/include.
227-            if test -n "$LIBGLIB_2_0_PREFIX"; then
228-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
229-              AC_LINK_IFELSE(
230-                [AC_LANG_PROGRAM(
231-                   [[#include <glib.h>
232-                     #ifndef G_BEGIN_DECLS
233-                     error this glib.h includes a glibconfig.h from a glib version 1.x
234-                     #endif
235-                   ]],
236-                   [[g_string_new ("foo");]])],
237-                [gl_cv_libglib=yes
238-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
239-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
240-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
241-                ])
242-            fi
243-          fi
244-          CPPFLAGS="$gl_save_CPPFLAGS"
245-        fi
246-        LIBS="$gl_save_LIBS"
247-      ])
248-      AC_MSG_CHECKING([for glib])
249-      AC_MSG_RESULT([$gl_cv_libglib])
250-      if test $gl_cv_libglib = yes; then
251-        LIBGLIB="$gl_cv_LIBGLIB"
252-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
253-        INCGLIB="$gl_cv_INCGLIB"
254-      else
255-        gl_cv_libglib_use_included=yes
256-      fi
257-    fi
258-  ])
259+  if test "$gl_cv_libglib_use_included" != yes; then
260+    PKG_CHECK_MODULES([GLIB], [glib-2.0])
261+    LIBGLIB="$GLIB_LIBS"
262+    LTLIBGLIB="$GLIB_LIBS"
263+    INCGLIB="$GLIB_CFLAGS"
264+  fi
265   AC_SUBST([LIBGLIB])
266   AC_SUBST([LTLIBGLIB])
267   AC_SUBST([INCGLIB])
268diff --git a/libtextstyle/gnulib-m4/libglib.m4 b/libtextstyle/gnulib-m4/libglib.m4
269index dbc9eb8..136e512 100644
270--- a/libtextstyle/gnulib-m4/libglib.m4
271+++ b/libtextstyle/gnulib-m4/libglib.m4
272@@ -6,106 +6,26 @@ dnl with or without modifications, as long as this notice is preserved.
273
274 dnl From Bruno Haible.
275
276-dnl gl_LIBGLIB
277-dnl   gives the user the option to decide whether to use the included or
278-dnl   an external libglib.
279-dnl gl_LIBGLIB(FORCE-INCLUDED)
280-dnl   forces the use of the included or an external libglib.
281 AC_DEFUN([gl_LIBGLIB],
282 [
283-  ifelse([$1], , [
284-    AC_MSG_CHECKING([whether included glib is requested])
285-    AC_ARG_WITH([included-glib],
286-      [  --with-included-glib    use the glib2 included here],
287-      [gl_cv_libglib_force_included=$withval],
288-      [gl_cv_libglib_force_included=no])
289-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
290-  ], [gl_cv_libglib_force_included=$1])
291+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
292+  AC_MSG_CHECKING([whether included glib is requested])
293+  AC_ARG_WITH([included-glib],
294+    [  --with-included-glib    use the glib2 included here],
295+    [gl_cv_libglib_force_included=$withval],
296+    [gl_cv_libglib_force_included=no])
297+  AC_MSG_RESULT([$gl_cv_libglib_force_included])
298
299   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
300   LIBGLIB=
301   LTLIBGLIB=
302   INCGLIB=
303-  ifelse([$1], [yes], , [
304-    if test "$gl_cv_libglib_use_included" != yes; then
305-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
306-      dnl the included one.
307-      AC_CACHE_VAL([gl_cv_libglib], [
308-        gl_cv_libglib=no
309-        gl_cv_LIBGLIB=
310-        gl_cv_LTLIBGLIB=
311-        gl_cv_INCGLIB=
312-        gl_save_LIBS="$LIBS"
313-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
314-        dnl INCGLIB_2_0 accordingly.
315-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
316-        dnl cross-compiling or when the C compiler in use is different from the
317-        dnl one that built the library.
318-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
319-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
320-        AC_LINK_IFELSE(
321-          [AC_LANG_PROGRAM(
322-             [[#include <glib.h>
323-               #ifndef G_BEGIN_DECLS
324-               error this glib.h includes a glibconfig.h from a glib version 1.x
325-               #endif
326-             ]],
327-             [[g_string_new ("foo");]])],
328-          [gl_cv_libglib=yes
329-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
330-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
331-          ])
332-        if test "$gl_cv_libglib" != yes; then
333-          gl_save_CPPFLAGS="$CPPFLAGS"
334-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
335-          AC_LINK_IFELSE(
336-            [AC_LANG_PROGRAM(
337-               [[#include <glib.h>
338-                 #ifndef G_BEGIN_DECLS
339-                 error this glib.h includes a glibconfig.h from a glib version 1.x
340-                 #endif
341-               ]],
342-               [[g_string_new ("foo");]])],
343-            [gl_cv_libglib=yes
344-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
345-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
346-             gl_cv_INCGLIB="$INCGLIB_2_0"
347-            ])
348-          if test "$gl_cv_libglib" != yes; then
349-            dnl Often the include files are installed in /usr/include/glib-2.0
350-            dnl and /usr/lib/glib-2.0/include.
351-            if test -n "$LIBGLIB_2_0_PREFIX"; then
352-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
353-              AC_LINK_IFELSE(
354-                [AC_LANG_PROGRAM(
355-                   [[#include <glib.h>
356-                     #ifndef G_BEGIN_DECLS
357-                     error this glib.h includes a glibconfig.h from a glib version 1.x
358-                     #endif
359-                   ]],
360-                   [[g_string_new ("foo");]])],
361-                [gl_cv_libglib=yes
362-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
363-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
364-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
365-                ])
366-            fi
367-          fi
368-          CPPFLAGS="$gl_save_CPPFLAGS"
369-        fi
370-        LIBS="$gl_save_LIBS"
371-      ])
372-      AC_MSG_CHECKING([for glib])
373-      AC_MSG_RESULT([$gl_cv_libglib])
374-      if test $gl_cv_libglib = yes; then
375-        LIBGLIB="$gl_cv_LIBGLIB"
376-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
377-        INCGLIB="$gl_cv_INCGLIB"
378-      else
379-        gl_cv_libglib_use_included=yes
380-      fi
381-    fi
382-  ])
383+  if test "$gl_cv_libglib_use_included" != yes; then
384+    PKG_CHECK_MODULES([GLIB], [glib-2.0])
385+    LIBGLIB="$GLIB_LIBS"
386+    LTLIBGLIB="$GLIB_LIBS"
387+    INCGLIB="$GLIB_CFLAGS"
388+  fi
389   AC_SUBST([LIBGLIB])
390   AC_SUBST([LTLIBGLIB])
391   AC_SUBST([INCGLIB])
392