From c832880c5242b454a2c9e61b6a2dc26aecdc51bd 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 05b9550..031ee65 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 2cfd4a8..d42c8b4 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 "hash.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 3675b5f..811e546 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 "hash.h"
diff --git a/libtextstyle/lib/term-styled-ostream.oo.c b/libtextstyle/lib/term-styled-ostream.oo.c
index 2cfd4a8..d42c8b4 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 "hash.h"
