From 38c361e6860bfaefbefeccae621e698c301879f2 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 23 Jan 2018 00:54:13 +0000
Subject: [PATCH] gettext: beat library detection into shape

For reasons which I just can't fathom gnulib doesn't use the expected tools to
find libraries but badly reinvents the wheel.  This will trivially lead to host
contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
canonicalisation resulting in relative paths).

Simply delete all the crazy, and replace with a single call to pkg-config.

Upstream-Status: Inappropriate [upstream still refuse to consider pkg-config]
Signed-off-by: Ross Burton <ross.burton@intel.com>

---
 gettext-tools/gnulib-m4/libxml.m4             | 105 +----------------
 .../gnulib-local/lib/term-styled-ostream.oo.c |  12 +-
 libtextstyle/gnulib-local/m4/libcroco.m4      |  98 +++-------------
 libtextstyle/gnulib-local/m4/libglib.m4       | 106 +++---------------
 libtextstyle/gnulib-m4/libcroco.m4            |  98 +++-------------
 libtextstyle/gnulib-m4/libglib.m4             | 106 +++---------------
 libtextstyle/lib/term-styled-ostream.c        |  12 +-
 libtextstyle/lib/term-styled-ostream.oo.c     |  12 +-
 8 files changed, 79 insertions(+), 470 deletions(-)

diff --git a/gettext-tools/gnulib-m4/libxml.m4 b/gettext-tools/gnulib-m4/libxml.m4
index 0340490..0355388 100644
--- a/gettext-tools/gnulib-m4/libxml.m4
+++ b/gettext-tools/gnulib-m4/libxml.m4
@@ -13,6 +13,7 @@ dnl gl_LIBXML(FORCE-INCLUDED)
 dnl   forces the use of the included or an external libxml.
 AC_DEFUN([gl_LIBXML],
 [
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
   AC_REQUIRE([AM_ICONV_LINK])
 
   ifelse([$1], , [
@@ -30,106 +31,10 @@ AC_DEFUN([gl_LIBXML],
   INCXML=
   ifelse([$1], [yes], , [
     if test "$gl_cv_libxml_use_included" != yes; then
-      dnl Figure out whether we can use a preinstalled libxml2, or have to use
-      dnl the included one.
-      AC_CACHE_VAL([gl_cv_libxml], [
-        gl_cv_libxml=no
-        gl_cv_LIBXML=
-        gl_cv_LTLIBXML=
-        gl_cv_INCXML=
-        gl_save_LIBS="$LIBS"
-        LIBS="$LIBS $LIBICONV"
-        dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
-        dnl accordingly.
-        dnl Don't use xml2-config nor pkg-config, since it doesn't work when
-        dnl cross-compiling or when the C compiler in use is different from the
-        dnl one that built the library.
-        dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
-        dnl libxml2 is built in such a way that uses of xmlFree work fine with
-        dnl -Wl,--enable-auto-import but lead to a link error with
-        dnl -Wl,--disable-auto-import.
-        AC_LIB_LINKFLAGS_BODY([xml2])
-        LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[#include <libxml/xmlversion.h>
-               #include <libxml/xmlmemory.h>
-               #include <libxml/xpath.h>
-             ]],
-             [[xmlCheckVersion (0);
-               xmlFree ((void *) 0);
-               xmlXPathSetContextNode ((void *)0, (void *)0);
-             ]])],
-          [gl_cv_libxml=yes
-           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
-           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
-          ])
-        if test "$gl_cv_libxml" != yes; then
-          gl_save_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="$CPPFLAGS $INCXML2"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <libxml/xmlversion.h>
-                 #include <libxml/xmlmemory.h>
-                 #include <libxml/xpath.h>
-               ]],
-               [[xmlCheckVersion (0);
-                 xmlFree ((void *) 0);
-                 xmlXPathSetContextNode ((void *)0, (void *)0);
-               ]])],
-            [gl_cv_libxml=yes
-             gl_cv_LIBXML="$LIBXML2 $LIBICONV"
-             gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
-             gl_cv_INCXML="$INCXML2"
-            ])
-          if test "$gl_cv_libxml" != yes; then
-            dnl Often the include files are installed in /usr/include/libxml2.
-            dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
-            dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
-            dnl self-contained.
-            libxml2_include_dir=
-            AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <libxml2/libxml/xmlexports.h>]])],
-              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
-               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
-              ])
-            if test -z "$libxml2_include_dir"; then
-              AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <libxml2/libxml/xmlversion.h>]])],
-                [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
-                 libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
-                ])
-            fi
-            if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
-              CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
-              AC_LINK_IFELSE(
-                [AC_LANG_PROGRAM(
-                   [[#include <libxml/xmlversion.h>
-                     #include <libxml/xmlmemory.h>
-                     #include <libxml/xpath.h>
-                   ]],
-                   [[xmlCheckVersion (0);
-                     xmlFree ((void *) 0);
-                     xmlXPathSetContextNode ((void *)0, (void *)0);
-                   ]])],
-                [gl_cv_libxml=yes
-                 gl_cv_LIBXML="$LIBXML2 $LIBICONV"
-                 gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
-                 gl_cv_INCXML="-I$libxml2_include_dir"
-                ])
-            fi
-          fi
-          CPPFLAGS="$gl_save_CPPFLAGS"
-        fi
-        LIBS="$gl_save_LIBS"
-      ])
-      AC_MSG_CHECKING([for libxml])
-      AC_MSG_RESULT([$gl_cv_libxml])
-      if test $gl_cv_libxml = yes; then
-        LIBXML="$gl_cv_LIBXML"
-        LTLIBXML="$gl_cv_LTLIBXML"
-        INCXML="$gl_cv_INCXML"
-      else
-        gl_cv_libxml_use_included=yes
-      fi
+      PKG_CHECK_MODULES([XML], [libxml-2.0])
+      LIBXML=$XML_LIBS
+      LTLIBXML=$XML_LIBS
+      INCXML=$XML_CFLAGS
     fi
   ])
   AC_SUBST([LIBXML])
diff --git a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
index 2ff978f..5ffb17a 100644
--- a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
+++ b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
@@ -22,15 +22,15 @@
 
 #include <stdlib.h>
 
-#include <cr-om-parser.h>
-#include <cr-sel-eng.h>
-#include <cr-style.h>
-#include <cr-rgb.h>
+#include <libcroco/cr-om-parser.h>
+#include <libcroco/cr-sel-eng.h>
+#include <libcroco/cr-style.h>
+#include <libcroco/cr-rgb.h>
 /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
 #ifndef __CR_FONTS_H__
-# include <cr-fonts.h>
+# include <libcroco/cr-fonts.h>
 #endif
-#include <cr-string.h>
+#include <libcroco/cr-string.h>
 
 #include "term-ostream.h"
 #include "mem-hash-map.h"
diff --git a/libtextstyle/gnulib-local/m4/libcroco.m4 b/libtextstyle/gnulib-local/m4/libcroco.m4
index 39e72b1..042915a 100644
--- a/libtextstyle/gnulib-local/m4/libcroco.m4
+++ b/libtextstyle/gnulib-local/m4/libcroco.m4
@@ -6,97 +6,29 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
-dnl gl_LIBCROCO
-dnl   gives the user the option to decide whether to use the included or
-dnl   an external libcroco.
-dnl gl_LIBCROCO(FORCE-INCLUDED)
-dnl   forces the use of the included or an external libcroco.
 AC_DEFUN([gl_LIBCROCO],
 [
-  ifelse([$1], [yes], , [
-    dnl libcroco depends on libglib.
-    AC_REQUIRE([gl_LIBGLIB])
-  ])
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+  dnl libcroco depends on libglib.
+  AC_REQUIRE([gl_LIBGLIB])
 
-  ifelse([$1], , [
-    AC_MSG_CHECKING([whether included libcroco is requested])
-    AC_ARG_WITH([included-libcroco],
-      [  --with-included-libcroco  use the libcroco included here],
-      [gl_cv_libcroco_force_included=$withval],
-      [gl_cv_libcroco_force_included=no])
-    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
-  ], [gl_cv_libcroco_force_included=$1])
+  AC_MSG_CHECKING([whether included libcroco is requested])
+  AC_ARG_WITH([included-libcroco],
+    [  --with-included-libcroco  use the libcroco included here],
+    [gl_cv_libcroco_force_included=$withval],
+    [gl_cv_libcroco_force_included=no])
+  AC_MSG_RESULT([$gl_cv_libcroco_force_included])
 
   gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
   LIBCROCO=
   LTLIBCROCO=
   INCCROCO=
-  ifelse([$1], [yes], , [
-    if test "$gl_cv_libcroco_use_included" != yes; then
-      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
-      dnl use the included one.
-      AC_CACHE_VAL([gl_cv_libcroco], [
-        gl_cv_libcroco=no
-        gl_cv_LIBCROCO=
-        gl_cv_LTLIBCROCO=
-        gl_cv_INCCROCO=
-        gl_save_LIBS="$LIBS"
-        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
-        dnl INCCROCO_0_6 accordingly.
-        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
-        dnl cross-compiling or when the C compiler in use is different from the
-        dnl one that built the library.
-        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
-        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM([[#include <libcroco-config.h>]],
-            [[const char *version = LIBCROCO_VERSION; return !version;]])],
-          [gl_cv_libcroco=yes
-           gl_cv_LIBCROCO="$LIBCROCO_0_6"
-           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-          ])
-        if test "$gl_cv_libcroco" != yes; then
-          gl_save_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM([[#include <libcroco-config.h>]],
-              [[const char *version = LIBCROCO_VERSION; return !version;]])],
-            [gl_cv_libcroco=yes
-             gl_cv_LIBCROCO="$LIBCROCO_0_6"
-             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-             gl_cv_INCCROCO="$INCCROCO_0_6"
-            ])
-          if test "$gl_cv_libcroco" != yes; then
-            dnl Often the include files are installed in
-            dnl /usr/include/libcroco-0.6/libcroco.
-            AC_LINK_IFELSE(
-              [AC_LANG_PROGRAM([[#include <libcroco-config.h>]],
-                [[const char *version = LIBCROCO_VERSION; return !version;]])],
-              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
-               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
-               if test -d "$libcroco_include_dir"; then
-                 gl_cv_libcroco=yes
-                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
-                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-                 gl_cv_INCCROCO="-I$libcroco_include_dir"
-               fi
-              ])
-          fi
-          CPPFLAGS="$gl_save_CPPFLAGS"
-        fi
-        LIBS="$gl_save_LIBS"
-      ])
-      AC_MSG_CHECKING([for libcroco])
-      AC_MSG_RESULT([$gl_cv_libcroco])
-      if test $gl_cv_libcroco = yes; then
-        LIBCROCO="$gl_cv_LIBCROCO"
-        LTLIBCROCO="$gl_cv_LTLIBCROCO"
-        INCCROCO="$gl_cv_INCCROCO"
-      else
-        gl_cv_libcroco_use_included=yes
-      fi
-    fi
-  ])
+  if test "$gl_cv_libcroco_use_included" != yes; then
+    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
+    LIBCROCO=$CROCO_LIBS
+    LTLIBCROCO=$CROCO_LIBS
+    INCCROCO=$CROCO_CFLAGS
+  fi
   AC_SUBST([LIBCROCO])
   AC_SUBST([LTLIBCROCO])
   AC_SUBST([INCCROCO])
diff --git a/libtextstyle/gnulib-local/m4/libglib.m4 b/libtextstyle/gnulib-local/m4/libglib.m4
index 7ee5029..bb1e5e4 100644
--- a/libtextstyle/gnulib-local/m4/libglib.m4
+++ b/libtextstyle/gnulib-local/m4/libglib.m4
@@ -6,106 +6,26 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
-dnl gl_LIBGLIB
-dnl   gives the user the option to decide whether to use the included or
-dnl   an external libglib.
-dnl gl_LIBGLIB(FORCE-INCLUDED)
-dnl   forces the use of the included or an external libglib.
 AC_DEFUN([gl_LIBGLIB],
 [
-  ifelse([$1], , [
-    AC_MSG_CHECKING([whether included glib is requested])
-    AC_ARG_WITH([included-glib],
-      [  --with-included-glib    use the glib2 included here],
-      [gl_cv_libglib_force_included=$withval],
-      [gl_cv_libglib_force_included=no])
-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
-  ], [gl_cv_libglib_force_included=$1])
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+  AC_MSG_CHECKING([whether included glib is requested])
+  AC_ARG_WITH([included-glib],
+    [  --with-included-glib    use the glib2 included here],
+    [gl_cv_libglib_force_included=$withval],
+    [gl_cv_libglib_force_included=no])
+  AC_MSG_RESULT([$gl_cv_libglib_force_included])
 
   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
   LIBGLIB=
   LTLIBGLIB=
   INCGLIB=
-  ifelse([$1], [yes], , [
-    if test "$gl_cv_libglib_use_included" != yes; then
-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
-      dnl the included one.
-      AC_CACHE_VAL([gl_cv_libglib], [
-        gl_cv_libglib=no
-        gl_cv_LIBGLIB=
-        gl_cv_LTLIBGLIB=
-        gl_cv_INCGLIB=
-        gl_save_LIBS="$LIBS"
-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
-        dnl INCGLIB_2_0 accordingly.
-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
-        dnl cross-compiling or when the C compiler in use is different from the
-        dnl one that built the library.
-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[#include <glib.h>
-               #ifndef G_BEGIN_DECLS
-               error this glib.h includes a glibconfig.h from a glib version 1.x
-               #endif
-             ]],
-             [[g_string_new ("foo");]])],
-          [gl_cv_libglib=yes
-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-          ])
-        if test "$gl_cv_libglib" != yes; then
-          gl_save_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <glib.h>
-                 #ifndef G_BEGIN_DECLS
-                 error this glib.h includes a glibconfig.h from a glib version 1.x
-                 #endif
-               ]],
-               [[g_string_new ("foo");]])],
-            [gl_cv_libglib=yes
-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-             gl_cv_INCGLIB="$INCGLIB_2_0"
-            ])
-          if test "$gl_cv_libglib" != yes; then
-            dnl Often the include files are installed in /usr/include/glib-2.0
-            dnl and /usr/lib/glib-2.0/include.
-            if test -n "$LIBGLIB_2_0_PREFIX"; then
-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
-              AC_LINK_IFELSE(
-                [AC_LANG_PROGRAM(
-                   [[#include <glib.h>
-                     #ifndef G_BEGIN_DECLS
-                     error this glib.h includes a glibconfig.h from a glib version 1.x
-                     #endif
-                   ]],
-                   [[g_string_new ("foo");]])],
-                [gl_cv_libglib=yes
-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
-                ])
-            fi
-          fi
-          CPPFLAGS="$gl_save_CPPFLAGS"
-        fi
-        LIBS="$gl_save_LIBS"
-      ])
-      AC_MSG_CHECKING([for glib])
-      AC_MSG_RESULT([$gl_cv_libglib])
-      if test $gl_cv_libglib = yes; then
-        LIBGLIB="$gl_cv_LIBGLIB"
-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
-        INCGLIB="$gl_cv_INCGLIB"
-      else
-        gl_cv_libglib_use_included=yes
-      fi
-    fi
-  ])
+  if test "$gl_cv_libglib_use_included" != yes; then
+    PKG_CHECK_MODULES([GLIB], [glib-2.0])
+    LIBGLIB="$GLIB_LIBS"
+    LTLIBGLIB="$GLIB_LIBS"
+    INCGLIB="$GLIB_CFLAGS"
+  fi
   AC_SUBST([LIBGLIB])
   AC_SUBST([LTLIBGLIB])
   AC_SUBST([INCGLIB])
diff --git a/libtextstyle/gnulib-m4/libcroco.m4 b/libtextstyle/gnulib-m4/libcroco.m4
index 39e72b1..042915a 100644
--- a/libtextstyle/gnulib-m4/libcroco.m4
+++ b/libtextstyle/gnulib-m4/libcroco.m4
@@ -6,97 +6,29 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
-dnl gl_LIBCROCO
-dnl   gives the user the option to decide whether to use the included or
-dnl   an external libcroco.
-dnl gl_LIBCROCO(FORCE-INCLUDED)
-dnl   forces the use of the included or an external libcroco.
 AC_DEFUN([gl_LIBCROCO],
 [
-  ifelse([$1], [yes], , [
-    dnl libcroco depends on libglib.
-    AC_REQUIRE([gl_LIBGLIB])
-  ])
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+  dnl libcroco depends on libglib.
+  AC_REQUIRE([gl_LIBGLIB])
 
-  ifelse([$1], , [
-    AC_MSG_CHECKING([whether included libcroco is requested])
-    AC_ARG_WITH([included-libcroco],
-      [  --with-included-libcroco  use the libcroco included here],
-      [gl_cv_libcroco_force_included=$withval],
-      [gl_cv_libcroco_force_included=no])
-    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
-  ], [gl_cv_libcroco_force_included=$1])
+  AC_MSG_CHECKING([whether included libcroco is requested])
+  AC_ARG_WITH([included-libcroco],
+    [  --with-included-libcroco  use the libcroco included here],
+    [gl_cv_libcroco_force_included=$withval],
+    [gl_cv_libcroco_force_included=no])
+  AC_MSG_RESULT([$gl_cv_libcroco_force_included])
 
   gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
   LIBCROCO=
   LTLIBCROCO=
   INCCROCO=
-  ifelse([$1], [yes], , [
-    if test "$gl_cv_libcroco_use_included" != yes; then
-      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
-      dnl use the included one.
-      AC_CACHE_VAL([gl_cv_libcroco], [
-        gl_cv_libcroco=no
-        gl_cv_LIBCROCO=
-        gl_cv_LTLIBCROCO=
-        gl_cv_INCCROCO=
-        gl_save_LIBS="$LIBS"
-        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
-        dnl INCCROCO_0_6 accordingly.
-        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
-        dnl cross-compiling or when the C compiler in use is different from the
-        dnl one that built the library.
-        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
-        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM([[#include <libcroco-config.h>]],
-            [[const char *version = LIBCROCO_VERSION; return !version;]])],
-          [gl_cv_libcroco=yes
-           gl_cv_LIBCROCO="$LIBCROCO_0_6"
-           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-          ])
-        if test "$gl_cv_libcroco" != yes; then
-          gl_save_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM([[#include <libcroco-config.h>]],
-              [[const char *version = LIBCROCO_VERSION; return !version;]])],
-            [gl_cv_libcroco=yes
-             gl_cv_LIBCROCO="$LIBCROCO_0_6"
-             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-             gl_cv_INCCROCO="$INCCROCO_0_6"
-            ])
-          if test "$gl_cv_libcroco" != yes; then
-            dnl Often the include files are installed in
-            dnl /usr/include/libcroco-0.6/libcroco.
-            AC_LINK_IFELSE(
-              [AC_LANG_PROGRAM([[#include <libcroco-config.h>]],
-                [[const char *version = LIBCROCO_VERSION; return !version;]])],
-              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
-               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
-               if test -d "$libcroco_include_dir"; then
-                 gl_cv_libcroco=yes
-                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
-                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
-                 gl_cv_INCCROCO="-I$libcroco_include_dir"
-               fi
-              ])
-          fi
-          CPPFLAGS="$gl_save_CPPFLAGS"
-        fi
-        LIBS="$gl_save_LIBS"
-      ])
-      AC_MSG_CHECKING([for libcroco])
-      AC_MSG_RESULT([$gl_cv_libcroco])
-      if test $gl_cv_libcroco = yes; then
-        LIBCROCO="$gl_cv_LIBCROCO"
-        LTLIBCROCO="$gl_cv_LTLIBCROCO"
-        INCCROCO="$gl_cv_INCCROCO"
-      else
-        gl_cv_libcroco_use_included=yes
-      fi
-    fi
-  ])
+  if test "$gl_cv_libcroco_use_included" != yes; then
+    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
+    LIBCROCO=$CROCO_LIBS
+    LTLIBCROCO=$CROCO_LIBS
+    INCCROCO=$CROCO_CFLAGS
+  fi
   AC_SUBST([LIBCROCO])
   AC_SUBST([LTLIBCROCO])
   AC_SUBST([INCCROCO])
diff --git a/libtextstyle/gnulib-m4/libglib.m4 b/libtextstyle/gnulib-m4/libglib.m4
index 7ee5029..bb1e5e4 100644
--- a/libtextstyle/gnulib-m4/libglib.m4
+++ b/libtextstyle/gnulib-m4/libglib.m4
@@ -6,106 +6,26 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
-dnl gl_LIBGLIB
-dnl   gives the user the option to decide whether to use the included or
-dnl   an external libglib.
-dnl gl_LIBGLIB(FORCE-INCLUDED)
-dnl   forces the use of the included or an external libglib.
 AC_DEFUN([gl_LIBGLIB],
 [
-  ifelse([$1], , [
-    AC_MSG_CHECKING([whether included glib is requested])
-    AC_ARG_WITH([included-glib],
-      [  --with-included-glib    use the glib2 included here],
-      [gl_cv_libglib_force_included=$withval],
-      [gl_cv_libglib_force_included=no])
-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
-  ], [gl_cv_libglib_force_included=$1])
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+  AC_MSG_CHECKING([whether included glib is requested])
+  AC_ARG_WITH([included-glib],
+    [  --with-included-glib    use the glib2 included here],
+    [gl_cv_libglib_force_included=$withval],
+    [gl_cv_libglib_force_included=no])
+  AC_MSG_RESULT([$gl_cv_libglib_force_included])
 
   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
   LIBGLIB=
   LTLIBGLIB=
   INCGLIB=
-  ifelse([$1], [yes], , [
-    if test "$gl_cv_libglib_use_included" != yes; then
-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
-      dnl the included one.
-      AC_CACHE_VAL([gl_cv_libglib], [
-        gl_cv_libglib=no
-        gl_cv_LIBGLIB=
-        gl_cv_LTLIBGLIB=
-        gl_cv_INCGLIB=
-        gl_save_LIBS="$LIBS"
-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
-        dnl INCGLIB_2_0 accordingly.
-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
-        dnl cross-compiling or when the C compiler in use is different from the
-        dnl one that built the library.
-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
-        AC_LINK_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[#include <glib.h>
-               #ifndef G_BEGIN_DECLS
-               error this glib.h includes a glibconfig.h from a glib version 1.x
-               #endif
-             ]],
-             [[g_string_new ("foo");]])],
-          [gl_cv_libglib=yes
-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-          ])
-        if test "$gl_cv_libglib" != yes; then
-          gl_save_CPPFLAGS="$CPPFLAGS"
-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
-          AC_LINK_IFELSE(
-            [AC_LANG_PROGRAM(
-               [[#include <glib.h>
-                 #ifndef G_BEGIN_DECLS
-                 error this glib.h includes a glibconfig.h from a glib version 1.x
-                 #endif
-               ]],
-               [[g_string_new ("foo");]])],
-            [gl_cv_libglib=yes
-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-             gl_cv_INCGLIB="$INCGLIB_2_0"
-            ])
-          if test "$gl_cv_libglib" != yes; then
-            dnl Often the include files are installed in /usr/include/glib-2.0
-            dnl and /usr/lib/glib-2.0/include.
-            if test -n "$LIBGLIB_2_0_PREFIX"; then
-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
-              AC_LINK_IFELSE(
-                [AC_LANG_PROGRAM(
-                   [[#include <glib.h>
-                     #ifndef G_BEGIN_DECLS
-                     error this glib.h includes a glibconfig.h from a glib version 1.x
-                     #endif
-                   ]],
-                   [[g_string_new ("foo");]])],
-                [gl_cv_libglib=yes
-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
-                ])
-            fi
-          fi
-          CPPFLAGS="$gl_save_CPPFLAGS"
-        fi
-        LIBS="$gl_save_LIBS"
-      ])
-      AC_MSG_CHECKING([for glib])
-      AC_MSG_RESULT([$gl_cv_libglib])
-      if test $gl_cv_libglib = yes; then
-        LIBGLIB="$gl_cv_LIBGLIB"
-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
-        INCGLIB="$gl_cv_INCGLIB"
-      else
-        gl_cv_libglib_use_included=yes
-      fi
-    fi
-  ])
+  if test "$gl_cv_libglib_use_included" != yes; then
+    PKG_CHECK_MODULES([GLIB], [glib-2.0])
+    LIBGLIB="$GLIB_LIBS"
+    LTLIBGLIB="$GLIB_LIBS"
+    INCGLIB="$GLIB_CFLAGS"
+  fi
   AC_SUBST([LIBGLIB])
   AC_SUBST([LTLIBGLIB])
   AC_SUBST([INCGLIB])
diff --git a/libtextstyle/lib/term-styled-ostream.c b/libtextstyle/lib/term-styled-ostream.c
index 5484800..16793fa 100644
--- a/libtextstyle/lib/term-styled-ostream.c
+++ b/libtextstyle/lib/term-styled-ostream.c
@@ -28,15 +28,15 @@
 
 #include <stdlib.h>
 
-#include <cr-om-parser.h>
-#include <cr-sel-eng.h>
-#include <cr-style.h>
-#include <cr-rgb.h>
+#include <libcroco/cr-om-parser.h>
+#include <libcroco/cr-sel-eng.h>
+#include <libcroco/cr-style.h>
+#include <libcroco/cr-rgb.h>
 /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
 #ifndef __CR_FONTS_H__
-# include <cr-fonts.h>
+# include <libcroco/cr-fonts.h>
 #endif
-#include <cr-string.h>
+#include <libcroco/cr-string.h>
 
 #include "term-ostream.h"
 #include "mem-hash-map.h"
diff --git a/libtextstyle/lib/term-styled-ostream.oo.c b/libtextstyle/lib/term-styled-ostream.oo.c
index 2ff978f..5ffb17a 100644
--- a/libtextstyle/lib/term-styled-ostream.oo.c
+++ b/libtextstyle/lib/term-styled-ostream.oo.c
@@ -22,15 +22,15 @@
 
 #include <stdlib.h>
 
-#include <cr-om-parser.h>
-#include <cr-sel-eng.h>
-#include <cr-style.h>
-#include <cr-rgb.h>
+#include <libcroco/cr-om-parser.h>
+#include <libcroco/cr-sel-eng.h>
+#include <libcroco/cr-style.h>
+#include <libcroco/cr-rgb.h>
 /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
 #ifndef __CR_FONTS_H__
-# include <cr-fonts.h>
+# include <libcroco/cr-fonts.h>
 #endif
-#include <cr-string.h>
+#include <libcroco/cr-string.h>
 
 #include "term-ostream.h"
 #include "mem-hash-map.h"
