From 15647f679834be633fb4a9aeff4671b9cb95ccb8 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             |  99 +----------------
 .../gnulib-local/lib/term-styled-ostream.oo.c |  12 +--
 libtextstyle/gnulib-local/m4/libcroco.m4      |  99 +++--------------
 libtextstyle/gnulib-local/m4/libglib.m4       | 100 +++---------------
 libtextstyle/gnulib-m4/libcroco.m4            |  99 +++--------------
 libtextstyle/gnulib-m4/libglib.m4             | 100 +++---------------
 libtextstyle/lib/term-styled-ostream.c        |  12 +--
 libtextstyle/lib/term-styled-ostream.oo.c     |  12 +--
 8 files changed, 83 insertions(+), 450 deletions(-)

diff --git a/gettext-tools/gnulib-m4/libxml.m4 b/gettext-tools/gnulib-m4/libxml.m4
index 2f80c37..30ce58e 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,100 +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_TRY_LINK([#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_TRY_LINK([#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_TRY_CPP([#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_TRY_CPP([#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_TRY_LINK([#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 bc53cc6..10b2455 100644
--- a/libtextstyle/gnulib-local/m4/libcroco.m4
+++ b/libtextstyle/gnulib-local/m4/libcroco.m4
@@ -1,99 +1,34 @@
-# libcroco.m4 serial 3
-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
+# libcroco.m4 serial 2 (gettext-0.17)
+dnl Copyright (C) 2006, 2015-2016 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 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_TRY_LINK([#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_TRY_LINK([#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_TRY_LINK([#include <libcroco-0.6/libcroco/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 5853772..767fba2 100644
--- a/libtextstyle/gnulib-local/m4/libglib.m4
+++ b/libtextstyle/gnulib-local/m4/libglib.m4
@@ -6,100 +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_TRY_LINK([#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_TRY_LINK([#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_TRY_LINK([#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 bc53cc6..10b2455 100644
--- a/libtextstyle/gnulib-m4/libcroco.m4
+++ b/libtextstyle/gnulib-m4/libcroco.m4
@@ -1,99 +1,34 @@
-# libcroco.m4 serial 3
-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
+# libcroco.m4 serial 2 (gettext-0.17)
+dnl Copyright (C) 2006, 2015-2016 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 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_TRY_LINK([#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_TRY_LINK([#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_TRY_LINK([#include <libcroco-0.6/libcroco/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 5853772..767fba2 100644
--- a/libtextstyle/gnulib-m4/libglib.m4
+++ b/libtextstyle/gnulib-m4/libglib.m4
@@ -6,100 +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_TRY_LINK([#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_TRY_LINK([#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_TRY_LINK([#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"
