2.33.6
[platform/upstream/glib.git] / configure.ac
index 2225520..2e29b7f 100644 (file)
@@ -20,14 +20,18 @@ m4_define(glib_configure_ac)
 # if backwards compatibility has been broken,
 # set glib_binary_age _and_ glib_interface_age to 0.
 #
+# remember to add a GLIB_VERSION_2_xx macro every time the minor version is
+# bumped, as well as the GLIB_DEPRECATED_IN and GLIB_AVAILABLE_IN macros
+# for that version - see gversion.h for further information.
+#
 # in easier to understand terms:
 #
 # <mclasen> on the stable branch, interface age == micro
 # <mclasen> on the unstable (ie master), interface age = 0
 
 m4_define([glib_major_version], [2])
-m4_define([glib_minor_version], [31])
-m4_define([glib_micro_version], [9])
+m4_define([glib_minor_version], [33])
+m4_define([glib_micro_version], [6])
 m4_define([glib_interface_age], [0])
 m4_define([glib_binary_age],
           [m4_eval(100 * glib_minor_version + glib_micro_version)])
@@ -171,13 +175,25 @@ AC_TRY_CPP([
 
 AC_MSG_RESULT([$glib_have_carbon])
 
+glib_have_cocoa=no
+AC_MSG_CHECKING([for Mac OS X Cocoa support])
+AC_TRY_CPP([
+#include <Cocoa/Cocoa.h>
+#ifdef GNUSTEP_BASE_VERSION
+#error "Detected GNUstep, not Cocoa"
+#endif
+], glib_have_cocoa=yes)
+
+AC_MSG_RESULT([$glib_have_cocoa])
+
 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
 AM_CONDITIONAL(OS_WIN32_X64, [test "$LIB_EXE_MACHINE_FLAG" = "X64"])
 AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
 AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
 AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
+AM_CONDITIONAL(OS_COCOA, [test "$glib_have_cocoa" = "yes"])
 
-if test "$glib_native_win32" = "yes"; then
+AS_IF([test "$glib_native_win32" = "yes"], [
   AC_CHECK_TOOL(WINDRES, windres, no)
   if test "$WINDRES" = no; then
     AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
@@ -188,7 +204,7 @@ if test "$glib_native_win32" = "yes"; then
   fi
   AC_CHECK_TOOL(RANLIB, ranlib, :)
   AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
-fi
+])
 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
 
 if test "$glib_native_win32" != yes; then
@@ -201,15 +217,20 @@ else
 fi
 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
 
-if test "x$glib_have_carbon" = "xyes"; then
+AS_IF([test "x$glib_have_carbon" = "xyes"], [
   AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
-  LDFLAGS="$LDFLAGS -framework Carbon"
+  LDFLAGS="$LDFLAGS -Wl,-framework,Carbon"
+])
+
+if test "x$glib_have_cocoa" = "xyes"; then
+  AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available])
+  LDFLAGS="$LDFLAGS -Wl,-framework,Foundation"
 fi
 
 gl_GLIBC21
-if test "x$GLIBC21" = "xyes"; then
+AS_IF([test "x$GLIBC21" = "xyes"], [
   AC_DEFINE([_GNU_SOURCE], 1, [Make all glibc extensions visible])
-fi
+])
 
 dnl declare --enable-* args and collect ac_help strings
 AC_ARG_ENABLE(debug,
@@ -229,22 +250,25 @@ AC_ARG_ENABLE(rebuilds,
               [AC_HELP_STRING([--disable-rebuilds],
                               [disable all source autogeneration rules])],,
               [enable_rebuilds=yes])
+AC_ARG_ENABLE(modular_tests,
+              AC_HELP_STRING([--disable-modular-tests],
+                             [Disable build of test programs (default: no)]),,
+              [enable_modular_tests=yes])
+AM_CONDITIONAL(BUILD_MODULAR_TESTS, test x$enable_modular_tests = xyes)
 
 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
-if test "x$enable_gc_friendly" = "xyes"; then
+AS_IF([test "x$enable_gc_friendly" = "xyes"], [
   AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
   AC_MSG_RESULT([yes])
-else
-  AC_MSG_RESULT([no])
-fi
+], [ AC_MSG_RESULT([no]) ])
 
 AC_MSG_CHECKING([whether to disable memory pools])
-if test "x$disable_mem_pools" = "xno"; then
+AS_IF([test "x$disable_mem_pools" = "xno"], [
   AC_MSG_RESULT([no])
-else
+], [
   AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
   AC_MSG_RESULT([yes])
-fi
+])
 
 dnl location to install runtime libraries, e.g. ../../lib to install
 dnl to /lib if libdir is /usr/lib
@@ -367,9 +391,9 @@ dnl We do this before the gettext checks, to avoid distortion
 
 dnl On Windows we use a native implementation
 
-if test x"$glib_native_win32" = xyes; then
+AS_IF([ test x"$glib_native_win32" = xyes], [
   with_libiconv=native
-else
+], [
   AC_ARG_WITH(libiconv,
              [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
                              [use the libiconv library])],,
@@ -403,7 +427,7 @@ else
   if test "x$found_iconv" = "xno" ; then
      AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
   fi
-fi
+])
 
 AC_ARG_ENABLE(iconv-cache, 
               [AC_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
@@ -436,14 +460,14 @@ dnl
 dnl zlib support
 dnl
 PKG_CHECK_MODULES([ZLIB], [zlib], [found_zlib=yes], [found_zlib=no])
-if test "x$found_zlib" = "xno" ; then
+AS_IF([test "x$found_zlib" = "xno"], [
   AC_CHECK_LIB(z, inflate, [AC_CHECK_HEADER(zlib.h, found_zlib=yes)])
   if test "x$found_zlib" = "xno" ; then
     AC_MSG_ERROR([*** Working zlib library and headers not found ***])
   fi
   ZLIB_LIBS='-lz'
   AC_SUBST(ZLIB_LIBS)
-fi
+])
 
 PKG_CHECK_MODULES(LIBFFI, [libffi >= 3.0.0])
 AC_SUBST(LIBFFI_CFLAGS)
@@ -477,14 +501,14 @@ dnl
 dnl Now we are done with gettext checks, figure out ICONV_LIBS
 dnl
 
-if test x"$glib_native_win32" != xyes; then
+AS_IF([test x"$glib_native_win32" != xyes], [
   if test x$with_libiconv != xno ; then
     case " $INTLLIBS " in
     *[[\ \     ]]-liconv[[\ \  ]]*) ;;
     *) ICONV_LIBS="-liconv" ;;
     esac
   fi
-fi
+])
 AC_SUBST(ICONV_LIBS)
 
 case $with_libiconv in
@@ -510,7 +534,7 @@ if test "x$GCC" = "xyes"; then
   esac
 fi
 
-if test "$glib_native_win32" = "yes"; then
+AS_IF([test "$glib_native_win32" = "yes"], [
   if test x$enable_static = xyes -a x$enable_shared = xyes; then
     AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
   fi
@@ -520,13 +544,13 @@ if test "$glib_native_win32" = "yes"; then
 #define GOBJECT_STATIC_COMPILATION 1"
     AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
   fi
-fi
+])
 AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
 
 dnl
 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
 dnl
-if test $cross_compiling != yes ; then
+AS_IF([test $cross_compiling != yes], [
     AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
     glib_save_LIBS=$LIBS
     LIBS="$LIBS -lm"
@@ -545,7 +569,7 @@ if test $cross_compiling != yes ; then
         )
     )
     LIBS=$glib_save_LIBS
-fi
+])
 
 dnl NeXTStep cc seems to need this
 AC_MSG_CHECKING([for extra flags for POSIX compliance])
@@ -565,51 +589,6 @@ AC_FUNC_ALLOCA
 AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2)
 AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
 
-dnl don't use AC_CHECK_FUNCS here, otherwise HAVE_QSORT_R will
-dnl be automatically defined, which we don't want to do
-dnl until we have checked this function is actually usable
-AC_CHECK_FUNC([qsort_r])
-
-# BSD has a qsort_r with wrong argument order
-if test x$ac_cv_func_qsort_r = xyes ; then
-  AC_CACHE_CHECK([if qsort_r uses glibc compatible argument order], glib_cv_have_qsort_r, [
-  AC_RUN_IFELSE([AC_LANG_SOURCE([[
-  #define _GNU_SOURCE
-  #include <stdlib.h>
-
-  static int
-  cmp (const void *a, const void *b, void *c)
-  {
-    const int *ia = a;
-    const int *ib = b;
-
-    if (*ia < *ib)
-      return -1;
-    else if (*ia > *ib)
-      return 1;
-    else
-      return 0;
-  }
-
-  int
-  main (int argc, char **argv)
-  {
-    int arr[3] = { 1, 2, 0 };
-    int d = 3;
-
-    qsort_r (arr, 3, sizeof (int), cmp, &d);
-
-    if (arr[0] == 0 && arr[1] == 1 && arr[2] == 2)
-      return 0;
-    else
-      return 1;
-  }]])],[glib_cv_have_qsort_r=yes],[glib_cv_have_qsort_r=no],[glib_cv_have_qsort_r=no])])
-fi
-
-if test x$glib_cv_have_qsort_r = xyes ; then
-  AC_DEFINE(HAVE_QSORT_R, 1, [Define to 1 if you have the 'qsort_r' function])
-fi
-
 AC_CHECK_SIZEOF(char)
 AC_CHECK_SIZEOF(short)
 AC_CHECK_SIZEOF(long)
@@ -618,6 +597,18 @@ AC_CHECK_SIZEOF(void *)
 AC_CHECK_SIZEOF(long long)
 AC_CHECK_SIZEOF(__int64)
 
+AC_CACHE_CHECK([for sig_atomic_t], ac_cv_type_sig_atomic_t,
+  [AC_TRY_LINK([#include <signal.h>
+     #include <sys/types.h>
+     sig_atomic_t val = 42;],
+    [return val == 42 ? 0 : 1],
+   ac_cv_type_sig_atomic_t=yes,
+   ac_cv_type_sig_atomic_t=no)])
+if test x$ac_cv_type_sig_atomic_t = xyes; then
+   AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
+     [Define if you have the 'sig_atomic_t' type.])
+fi
+
 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
   :
 else
@@ -627,7 +618,7 @@ else
 ])
 fi
 
-if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
+AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
        # long long is a 64 bit integer.
        AC_MSG_CHECKING(for format to printf and scanf a guint64)
        AC_CACHE_VAL(glib_cv_long_long_format,[
@@ -646,16 +637,14 @@ if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
                        break],
                        [],[:])
                done])
-       if test -n "$glib_cv_long_long_format"; then
+       AS_IF([ test -n "$glib_cv_long_long_format"], [
          AC_MSG_RESULT(%${glib_cv_long_long_format}u)
          AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
          if test x"$glib_cv_long_long_format" = xI64; then
            AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
-         fi
-        else
-         AC_MSG_RESULT(none)
-        fi
-elif test x$ac_cv_sizeof___int64 = x8; then
+          fi
+       ], [AC_MSG_RESULT(none)])
+],[ test x$ac_cv_sizeof___int64 = x8], [
        # __int64 is a 64 bit integer.
        AC_MSG_CHECKING(for format to printf and scanf a guint64)
        # We know this is MSVCRT.DLL, and what the formats are
@@ -663,7 +652,7 @@ elif test x$ac_cv_sizeof___int64 = x8; then
        AC_MSG_RESULT(%${glib_cv_long_long_format}u)
         AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
        AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
-fi
+])
 
 AC_C_CONST
 
@@ -675,7 +664,7 @@ dnl compilers are apprechiated.
 SANE_MALLOC_PROTOS=no
 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
 glib_save_CFLAGS=$CFLAGS
-if test "x$GCC" = "xyes"; then
+AS_IF([test "x$GCC" = "xyes"], [
   CFLAGS="$CFLAGS -Werror"
   AC_TRY_COMPILE([#include <stdlib.h>], [
     void* (*my_calloc_p)  (size_t, size_t) = calloc;
@@ -690,7 +679,7 @@ if test "x$GCC" = "xyes"; then
     AC_DEFINE(SANE_MALLOC_PROTOS, 1, 
       [Define if you have correct malloc prototypes])
     SANE_MALLOC_PROTOS=yes)
-fi
+])
 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
 CFLAGS=$glib_save_CFLAGS
 
@@ -807,7 +796,7 @@ call_a(2,3);
 AC_MSG_RESULT($g_have_iso_c_varargs)
 
 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
-if test "$CXX" = ""; then
+AS_IF([test "$CXX" = ""], [
 dnl No C++ compiler
   g_have_iso_cxx_varargs=no
 else
@@ -818,7 +807,7 @@ int a(int p1, int p2, int p3);
 call_a(2,3);
 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
   AC_LANG_C
-fi
+])
 AC_MSG_RESULT($g_have_iso_cxx_varargs)
 
 AC_MSG_CHECKING(for GNUC varargs macros)
@@ -964,8 +953,8 @@ dnl If int/long are the same size, we see which one produces
 dnl warnings when used in the location as size_t. (This matters
 dnl on AIX with xlc)
 dnl
-if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
-   test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
+AS_IF([test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
+       test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long], [
   GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
 #if defined(_AIX) && !defined(__GNUC__)
 #pragma options langlvl=stdc89
@@ -990,7 +979,7 @@ int main ()
    return (int)*size_long;
 }
         ]])],glib_size_type=long)])
-fi
+])
 
 AC_MSG_RESULT(unsigned $glib_size_type)
 
@@ -1067,10 +1056,10 @@ if $glib_failed ; then
   AC_MSG_ERROR([Could not determine values for MSG_* constants])
 fi
 
-AC_CHECK_FUNCS(getprotobyname_r endservent)
+AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex)
 AC_CHECK_HEADERS([netdb.h wspiapi.h arpa/nameser_compat.h])
 
-if test $glib_native_win32 = no; then
+AS_IF([test $glib_native_win32 = no], [
   # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
   NETWORK_LIBS=""
   AC_MSG_CHECKING([for res_query])
@@ -1101,7 +1090,7 @@ if test $glib_native_win32 = no; then
   AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket,
                                        [NETWORK_LIBS="-lsocket $NETWORK_LIBS"],
                                        [AC_MSG_ERROR(Could not find socket())]))
-fi
+])
 AC_SUBST(NETWORK_LIBS)
 
 AC_CHECK_HEADER([linux/netlink.h],
@@ -1109,6 +1098,10 @@ AC_CHECK_HEADER([linux/netlink.h],
                [#include <sys/socket.h>])
 AM_CONDITIONAL(HAVE_NETLINK, [test "$ac_cv_header_linux_netlink_h" = "yes"])
 
+AC_CHECK_TYPE([struct ip_mreqn], [
+              AC_DEFINE(HAVE_IP_MREQN,, [Define if we have struct ip_mreqn])],,
+              [#include <netinet/in.h>])
+
 case $host in
   *-*-solaris* )
      AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
@@ -1120,7 +1113,7 @@ esac
 dnl
 dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
 dnl
-if test "$ac_cv_func_statfs" = yes ; then
+AS_IF([test "$ac_cv_func_statfs" = yes], [
   AC_MSG_CHECKING([number of arguments to statfs()])
   AC_TRY_COMPILE([#include <unistd.h>
   #ifdef HAVE_SYS_PARAM_H
@@ -1156,7 +1149,7 @@ if test "$ac_cv_func_statfs" = yes ; then
       AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
       AC_MSG_RESULT(unknown)
       AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
-fi
+])
 
 #
 # Check whether to use an included printf
@@ -1192,14 +1185,14 @@ fi
 enable_included_printf=$need_included_printf
 
 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
-if test "$enable_included_printf" != "yes" ; then 
+AS_IF([test "$enable_included_printf" != "yes"], [
   AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
-else
+], [
   if test -z "$glib_cv_long_long_format" ; then
     glib_cv_long_long_format="ll"
   fi
   AC_DEFINE(HAVE_VASPRINTF,1)
-fi
+])
 
 # Checks needed for gnulib vasnprintf
 bh_C_SIGNED
@@ -1215,7 +1208,7 @@ AC_FUNC_SNPRINTF_C99
 
 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
 # The check is borrowed from the PERL Configure script.
-if test "$ac_cv_func_memmove" != "yes"; then
+AS_IF([test "$ac_cv_func_memmove" != "yes"],
   AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
     glib_cv_working_bcopy,[AC_TRY_RUN([
       int main() {
@@ -1238,15 +1231,15 @@ if test "$ac_cv_func_memmove" != "yes"; then
   if test "$glib_cv_working_bcopy" = "yes"; then
     AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
   fi
-fi
+])
 
 # Check if <sys/select.h> needs to be included for fd_set
 AC_MSG_CHECKING([for fd_set])
 AC_TRY_COMPILE([#include <sys/types.h>],
         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
-if test "$gtk_ok" = "yes"; then
+AS_IF([test "$gtk_ok" = "yes"], [
     AC_MSG_RESULT([yes, found in sys/types.h])
-else
+], [
     AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
     if test "$gtk_ok" = "yes"; then
        # *** FIXME: give it a different name
@@ -1256,7 +1249,7 @@ else
        AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
        AC_MSG_RESULT(no)
     fi
-fi
+])
 
 dnl *** check for sane realloc() ***
 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
@@ -1268,9 +1261,9 @@ AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
         [glib_cv_sane_realloc=no],
        [glib_cv_sane_realloc=yes])
 ])
-if test x$glib_cv_sane_realloc = xyes; then
+AS_IF([test x$glib_cv_sane_realloc = xyes], [
   AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
-fi
+])
 
 dnl Check for nl_langinfo and CODESET
 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
@@ -1301,24 +1294,24 @@ if test x$glib_cv_langinfo_time = xyes; then
   AC_DEFINE(HAVE_LANGINFO_TIME,1,[Have nl_langinfo (PM_STR)])
 fi
 
-dnl Check for nl_langinfo and _NL_CTYPE_OUTDIGITn_WC
-AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_WC)], glib_cv_langinfo_outdigit,[
+dnl Check for nl_langinfo and _NL_CTYPE_OUTDIGITn_MB
+AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)], glib_cv_langinfo_outdigit,[
         AC_TRY_COMPILE([#include <langinfo.h>],
                 [char *str;
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_WC);
-                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_WC);],
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);],
                 [glib_cv_langinfo_outdigit=yes],
                 [glib_cv_langinfo_outdigit=no])])
 if test x$glib_cv_langinfo_outdigit = xyes; then
-  AC_DEFINE(HAVE_LANGINFO_OUTDIGIT,1,[Have nl_langinfo (_NL_CTYPE_OUTDIGITn_WC)])
+  AC_DEFINE(HAVE_LANGINFO_OUTDIGIT,1,[Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)])
 fi
 
 dnl ****************************************
@@ -1356,12 +1349,12 @@ AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
       :
     fi
     ])
-if test "$glib_cv_compliant_posix_memalign" = "1"; then
+AS_IF([test "$glib_cv_compliant_posix_memalign" = "1"], [
     AC_MSG_RESULT(yes)
     AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
-else
+], [
     AC_MSG_RESULT(no)
-fi
+])
 
 
 dnl ****************************************
@@ -1458,9 +1451,9 @@ AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
        [glib_cv_va_val_copy=yes])
 ])
 
-if test "x$glib_cv_va_val_copy" = "xno"; then
+AS_IF([ test "x$glib_cv_va_val_copy" = "xno"], [
   AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
-fi
+])
 
 dnl ***********************
 dnl *** g_module checks ***
@@ -1493,53 +1486,58 @@ if test -z "$G_MODULE_IMPL"; then
   esac
 fi
 dnl *** dlopen() and dlsym() in system libraries
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
        AC_CHECK_FUNC(dlopen,
                      [AC_CHECK_FUNC(dlsym,
                                     [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
                      [])
-fi
+])
 dnl *** load_image (BeOS)
-if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
+AS_IF([test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"], [
   AC_CHECK_LIB(root, load_image,
       [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
       G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
       G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
       G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
       [])
-fi   
+])
 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL" ], [
        AC_CHECK_FUNC(NSLinkModule,
                      [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
                       G_MODULE_NEED_USCORE=1],
                      [])
-fi
+])
 dnl *** dlopen() and dlsym() in libdl
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
        AC_CHECK_LIB(dl, dlopen,
                     [AC_CHECK_LIB(dl, dlsym,
                                   [G_MODULE_LIBS=-ldl
                                   G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
                     [])
-fi
+])
 dnl *** shl_load() in libdld (HP-UX)
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
        AC_CHECK_LIB(dld, shl_load,
                [G_MODULE_LIBS=-ldld
                G_MODULE_IMPL=G_MODULE_IMPL_DLD],
                [])
-fi
+])
 dnl *** additional checks for G_MODULE_IMPL_DL
-if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
+AS_IF([ test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ], [
        LIBS_orig="$LIBS"
        LDFLAGS_orig="$LDFLAGS"
        LIBS="$G_MODULE_LIBS $LIBS"
        LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
        echo "void glib_plugin_test(void) { }" > plugin.c
-       ${SHELL} ./libtool --mode=compile ${CC} -shared \
-               -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+       ${SHELL} ./libtool --mode=compile --tag=CC ${CC} ${CFLAGS} \
+               ${CPPFLAGS} -c -o plugin.lo plugin.c >/dev/null 2>&1
+       ${SHELL} ./libtool --mode=link --tag=CC ${CC} ${CFLAGS} \
+               ${LDFLAGS} -module -o plugin.la -export-dynamic \
+               -shrext ".o" -avoid-version plugin.lo \
+               -rpath /dont/care >/dev/null 2>&1
+       eval `./libtool --config | grep ^objdir`
        AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
                glib_cv_rtldglobal_broken,[
                AC_TRY_RUN([
@@ -1554,7 +1552,7 @@ int glib_plugin_test;
 int main () {
     void *handle, *global, *local;
     global = &glib_plugin_test;
-    handle = dlopen ("./.libs/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
+    handle = dlopen ("./$objdir/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
     if (!handle) return 0;
     local = dlsym (handle, "glib_plugin_test");
     return global == local;
@@ -1562,8 +1560,8 @@ int main () {
                        [glib_cv_rtldglobal_broken=no],
                        [glib_cv_rtldglobal_broken=yes],
                        [glib_cv_rtldglobal_broken=no])
-               rm -f plugin.c plugin.o plugin.lo .libs/plugin.o
-               rmdir .libs 2>/dev/null
+               rm -f plugin.c plugin.o plugin.lo plugin.la ${objdir}/plugin.*
+               rmdir ${objdir} 2>/dev/null
        ])
        if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
                G_MODULE_BROKEN_RTLD_GLOBAL=1
@@ -1601,7 +1599,7 @@ dnl *** check for having dlerror()
                [G_MODULE_HAVE_DLERROR=1],
                [G_MODULE_HAVE_DLERROR=0])
        LIBS="$LIBS_orig"
-fi
+])
 dnl *** done, have we got an implementation?
 if test -z "$G_MODULE_IMPL"; then
        G_MODULE_IMPL=0
@@ -1686,7 +1684,7 @@ AC_ARG_ENABLE(selinux,
                              [build without selinux support]))
 msg_selinux=no
 SELINUX_LIBS=
-if test "x$enable_selinux" != "xno"; then
+AS_IF([ test "x$enable_selinux" != "xno"], [
 
  AC_CHECK_LIB(selinux, is_selinux_enabled,
    [AC_CHECK_HEADERS(selinux/selinux.h,
@@ -1696,7 +1694,7 @@ if test "x$enable_selinux" != "xno"; then
         msg_selinux=yes])
      ])
    ])
-fi
+])
 AC_SUBST(SELINUX_LIBS)
 
 dnl *****************************
@@ -1766,7 +1764,7 @@ AC_ARG_ENABLE(xattr,
               AC_HELP_STRING([--disable-xattr], [build without xattr support]))
 msg_xattr=no
 XATTR_LIBS=
-if test "x$enable_xattr" != "xno"; then
+AS_IF([ test "x$enable_xattr" != "xno"], [
 
 dnl either glibc or libattr can provide xattr support
 
@@ -1780,7 +1778,7 @@ dnl try glibc
       msg_xattr=yes])
    ])
 
-  if test "x$msg_xattr" != "xyes"; then
+  AS_IF([ test "x$msg_xattr" != "xyes"], [
 dnl   failure. try libattr
    AC_CHECK_LIB(attr, getxattr,
       [AC_CHECK_HEADERS(attr/xattr.h,
@@ -1788,9 +1786,9 @@ dnl   failure. try libattr
         XATTR_LIBS="-lattr"
         msg_xattr=yes])
       ])
-  fi
+  ])
 
-  if test "x$msg_xattr" = "xyes"; then
+  AS_IF([ test "x$msg_xattr" = "xyes"], [
     AC_MSG_CHECKING([for XATTR_NOFOLLOW])
     AC_TRY_COMPILE([
       #include <stdio.h>
@@ -1810,10 +1808,35 @@ dnl   failure. try libattr
     ],
     [AC_MSG_RESULT([no])]
     )
+  ])
+])
+AC_SUBST(XATTR_LIBS)
+
+dnl ************************
+dnl *** check for libelf ***
+dnl ************************
+AC_ARG_ENABLE(libelf,
+              AC_HELP_STRING([--disable-libelf], [build without libelf support]))
+AS_IF([ test "x$enable_libelf" != "xno"],[
+PKG_CHECK_MODULES([LIBELF], [libelf >= 0.8.12], [have_libelf=yes], [have_libelf=maybe])
+AS_IF([ test $have_libelf = maybe ], [
+  glib_save_LIBS=$LIBS
+  AC_CHECK_LIB([elf], [elf_begin], [:], [have_libelf=no])
+  AC_CHECK_LIB([elf], [elf_getshdrstrndx], [:], [have_libelf=no])
+  AC_CHECK_LIB([elf], [elf_getshdrnum], [:], [have_libelf=no])
+  AC_CHECK_HEADER([libelf.h], [:], [have_libelf=no])
+  LIBS=$glib_save_LIBS
+
+  if test $have_libelf != no; then
+    LIBELF_LIBS=-lelf
+    have_libelf=yes
   fi
+])
+])
 
+if test x$have_libelf = xyes; then
+  AC_DEFINE(HAVE_LIBELF, 1, [Define if libelf is available])
 fi
-AC_SUBST(XATTR_LIBS)
 
 dnl ****************************************
 dnl *** platform dependent source checks ***
@@ -1901,17 +1924,17 @@ dnl ***************************************
 AC_MSG_CHECKING(for thread implementation)
 
 have_threads=no
-if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then
+AS_IF([ test "x$with_threads" = xyes || test "x$with_threads" = xposix], [
        # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
        # -U_OSF_SOURCE is for Digital UNIX 4.0d
        GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
        glib_save_CPPFLAGS="$CPPFLAGS"
        CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
-        if test "x$have_threads" = xno; then
+        AS_IF([ test "x$have_threads" = xno], [
                 AC_TRY_COMPILE([#include <pthread.h>],
                        [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
                        have_threads=posix)
-        fi
+       ])
        # Tru64Unix requires -pthread to find pthread.h. See #103020
        CPPFLAGS="$CPPFLAGS -pthread"
        if test "x$have_threads" = xno; then
@@ -1920,7 +1943,7 @@ if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then
                       have_threads=posix)
         fi
        CPPFLAGS="$glib_save_CPPFLAGS"
-fi
+])
 if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then
         case $host in
                 *-*-mingw*)
@@ -1959,7 +1982,7 @@ int main()
    return (check_me != 42 || ret != &check_me);
 }])
 
-if test x"$have_threads" = xposix; then
+AS_IF([ test x"$have_threads" = xposix], [
   # First we test for posix, whether -pthread or -pthreads do the trick as 
   # both CPPFLAG and LIBS. 
   # One of them does for most gcc versions and some other platforms/compilers
@@ -1994,9 +2017,9 @@ if test x"$have_threads" = xposix; then
       done
        ;;
   esac
-fi
+])
 
-if test x"$G_THREAD_CFLAGS" = x; then
+AS_IF([ test x"$G_THREAD_CFLAGS" = x], [
 
   # The canonical -pthread[s] does not work. Try something different.
 
@@ -2035,8 +2058,7 @@ if test x"$G_THREAD_CFLAGS" = x; then
                G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
                ;;
   esac
-
-fi
+])
 
 # if we are not finding the localtime_r function, then we probably are
 # not using the proper multithread flag
@@ -2064,11 +2086,10 @@ CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
 dnl determination of G_THREAD_LIBS
 dnl ******************************
 
-case $have_threads in
-        posix)
+AS_IF([test x$have_threads = xposix], [
          glib_save_CPPFLAGS="$CPPFLAGS"
          CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
-          if test x"$G_THREAD_LIBS" = x; then
+          AS_IF([ test x"$G_THREAD_LIBS" = x ], [
             case $host in
               *-aix*)
                 # We are not using gcc (would have set G_THREAD_LIBS) and thus 
@@ -2114,20 +2135,17 @@ case $have_threads in
                LIBS="$glib_save_LIBS"
                 ;;
             esac
-          fi
+         ])
 
          g_threads_impl="POSIX"
          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
           CPPFLAGS="$glib_save_CPPFLAGS"
-          ;;
-       win32)
+], [test x$have_threads = xwin32], [
           g_threads_impl="WIN32"
-          ;;
-        *)
+], [
           g_threads_impl="NONE"
            G_THREAD_LIBS=error
-           ;;
-esac
+])
 
 if test "x$G_THREAD_LIBS" = xerror; then
         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
@@ -2153,7 +2171,7 @@ glib_save_LIBS="$LIBS"
 # to always be linked with the thread libs on some platforms. 
 # LIBS="$LIBS $G_THREAD_LIBS"
 AC_CHECK_FUNCS(localtime_r gmtime_r)
-if test "$ac_cv_header_pwd_h" = "yes"; then
+AS_IF([ test "$ac_cv_header_pwd_h" = "yes"], [
        AC_CACHE_CHECK([for posix getpwuid_r],
                ac_cv_func_posix_getpwuid_r,
                [AC_TRY_RUN([
@@ -2191,8 +2209,8 @@ int main () {
                                [Have non-POSIX function getpwuid_r])
                fi
        fi
-fi
-if test "$ac_cv_header_grp_h" = "yes"; then
+])
+AS_IF([ test "$ac_cv_header_grp_h" = "yes"], [
        AC_CACHE_CHECK([for posix getgrgid_r],
                ac_cv_func_posix_getgrgid_r,
                [AC_TRY_RUN([
@@ -2211,10 +2229,10 @@ int main () {
                       [ac_cv_func_posix_getgrgid_r=yes],
                       [ac_cv_func_posix_getgrgid_r=no])])
        GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
-       if test "$ac_cv_func_posix_getgrgid_r" = yes; then
+       AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [
                AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
                        [Have POSIX function getgrgid_r])
-       else
+       ], [
                AC_CACHE_CHECK([for nonposix getgrgid_r],
                        ac_cv_func_nonposix_getgrgid_r,
                        [AC_TRY_LINK([#include <grp.h>],
@@ -2229,22 +2247,34 @@ int main () {
                        AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
                                [Have non-POSIX function getgrgid_r])
                fi
-       fi
-fi
+       ])
+])
 LIBS="$G_THREAD_LIBS $LIBS"
-if test x"$have_threads" = xposix; then
+AS_IF([ test x"$have_threads" = xposix], [
         glib_save_CPPFLAGS="$CPPFLAGS"
         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
         # This is not AC_CHECK_FUNC to also work with function
         # name mangling in header files.
         AC_MSG_CHECKING(for pthread_attr_setstacksize)
-        AC_TRY_LINK([#include <pthread.h>],
-                    [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
-                    [AC_MSG_RESULT(yes)
-                     AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,[Have function pthread_attr_setstacksize])],
-                    [AC_MSG_RESULT(no)])
+        AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+                [#include <pthread.h>],
+                [pthread_attr_t t; pthread_attr_setstacksize(&t,0)])],
+            [AC_MSG_RESULT(yes)
+             AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
+                [Have function pthread_attr_setstacksize])],
+            [AC_MSG_RESULT(no)])
+        AC_MSG_CHECKING(for pthread_condattr_setclock)
+        AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+                [#include <pthread.h>],
+                [pthread_condattr_t a; pthread_condattr_setclock(&a,0)])],
+            [AC_MSG_RESULT(yes)
+             AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK,1,
+                [Have function pthread_condattr_setclock])],
+            [AC_MSG_RESULT(no)])
         CPPFLAGS="$glib_save_CPPFLAGS"
-fi
+])
 
 LIBS="$glib_save_LIBS"
 
@@ -2286,10 +2316,8 @@ AC_CHECK_FUNCS(clock_gettime, [], [
     AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
     G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
     G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
-    GLIB_RT_LIBS="-lrt"
   ])
 ])
-AC_SUBST(GLIB_RT_LIBS)
 
 
 dnl ************************
@@ -2319,12 +2347,12 @@ dnl that then to silently fall back on emulated atomic ops just because
 dnl the user had the wrong build environment.
 
 dnl We may add other compilers here in the future...
-AC_MSG_CHECKING([for lock-free atomic intrinsics])
-AC_TRY_COMPILE([],
-               [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
-               [glib_cv_g_atomic_lock_free=yes],
-               [glib_cv_g_atomic_lock_free=no])
-AC_MSG_RESULT($glib_cv_g_atomic_lock_free)
+
+AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
+  AC_TRY_COMPILE([],
+                 [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
+                 [glib_cv_g_atomic_lock_free=yes],
+                 [glib_cv_g_atomic_lock_free=no])])
 
 if test "$glib_cv_g_atomic_lock_free" = "no"; then
   SAVE_CFLAGS="${CFLAGS}"
@@ -2396,8 +2424,8 @@ glib_poll_includes=["
 #include <sys/poll.h>
 "]
 
-if test $ac_cv_header_sys_types_h = yes &&
-   test $ac_cv_header_sys_poll_h = yes ; then
+AS_IF([ test $ac_cv_header_sys_types_h = yes &&
+   test $ac_cv_header_sys_poll_h = yes ], [
   glib_failed=false
   GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
   GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
@@ -2408,14 +2436,14 @@ if test $ac_cv_header_sys_types_h = yes &&
   if $glib_failed ; then
     AC_MSG_ERROR([Could not determine values for POLL* constants])
   fi
-else
+], [
   glib_cv_value_POLLIN=1
   glib_cv_value_POLLOUT=4
   glib_cv_value_POLLPRI=2
   glib_cv_value_POLLERR=8
   glib_cv_value_POLLHUP=16
   glib_cv_value_POLLNVAL=32
-fi
+])
 
 AC_MSG_CHECKING([for broken poll])
 AC_RUN_IFELSE([AC_LANG_SOURCE([[
@@ -2446,76 +2474,60 @@ AC_MSG_RESULT($broken_poll)
 dnl *********************
 dnl *** GRegex checks ***
 dnl *********************
-PCRE_REQUIRED_VERSION=8.11
-
-# Check if we should compile GRegex
-AC_ARG_ENABLE(regex, AC_HELP_STRING([--disable-regex],
-                                    [disable the compilation of GRegex]),
-[case "${enableval}" in
-  yes) enable_regex=true ;;
-  no)  enable_regex=false ;;
-  *) AC_MSG_ERROR(bad value ${enableval} for --enable-regex) ;;
-esac],
-[enable_regex=true])
-
-AM_CONDITIONAL(ENABLE_REGEX, $enable_regex)
-
-if test x$enable_regex = xtrue; then
-  AC_DEFINE(ENABLE_REGEX, [], [include GRegex])
-  # Check if we should use the internal or the system-supplied pcre
-  AC_ARG_WITH(pcre,
-             [AC_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
-                             [whether to use system PCRE [default=internal]])])
-
-  AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
-
-  if test "x$with_pcre" = xsystem; then
-    PKG_CHECK_MODULES(PCRE,
-                      libpcre >= $PCRE_REQUIRED_VERSION)
-    AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
-                   glib_save_CFLAGS="$CFLAGS"
-                   glib_save_LIBS="$LIBS"
-                   CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
-                   AC_TRY_RUN([#include <pcre.h>
-                               int main () {
-                                 int support;
-                                 pcre_config (PCRE_CONFIG_UTF8, &support);
-                                 if (!support)
-                                   return 1;
-                                 pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
-                                 if (!support)
-                                   return 1;
-                                 return 0;
-                               }],
-                   glib_cv_pcre_has_unicode=yes,
-                   glib_cv_pcre_has_unicode=no,
-                   glib_cv_pcre_has_unicode=yes)
-                   CFLAGS="$glib_save_CFLAGS"
-                   LIBS="$glib_save_LIBS"
-       ])
-    if test "$glib_cv_pcre_has_unicode" = "no"; then
-      AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
-    fi
-    AC_SUBST(PCRE_CFLAGS)
-    AC_SUBST(PCRE_LIBS)
-    AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
-    PCRE_REQUIRES=libpcre
-    AC_SUBST(PCRE_REQUIRES)
-  else
-    # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
-    if test x"$GCC" = xyes; then
-      AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
-      save_CFLAGS="$CFLAGS"
-      CFLAGS="$CFLAGS -Wno-pointer-sign"
-      AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
-                           AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
-      CFLAGS="$save_CFLAGS"
-    fi
+
+PCRE_REQUIRED_VERSION=8.13
+
+# Check if we should use the internal or the system-supplied pcre
+AC_ARG_WITH(pcre,
+            [AC_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
+                            [whether to use system PCRE [default=internal]])])
+
+AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
+
+AS_IF([ test "x$with_pcre" = xsystem], [
+  PKG_CHECK_MODULES(PCRE,
+                    libpcre >= $PCRE_REQUIRED_VERSION)
+  AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
+                  glib_save_CFLAGS="$CFLAGS"
+                  glib_save_LIBS="$LIBS"
+                  CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
+                  AC_TRY_RUN([#include <pcre.h>
+                              int main () {
+                                int support;
+                                pcre_config (PCRE_CONFIG_UTF8, &support);
+                                if (!support)
+                                  return 1;
+                                pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
+                                if (!support)
+                                  return 1;
+                                return 0;
+                              }],
+                  glib_cv_pcre_has_unicode=yes,
+                  glib_cv_pcre_has_unicode=no,
+                  glib_cv_pcre_has_unicode=yes)
+                  CFLAGS="$glib_save_CFLAGS"
+                  LIBS="$glib_save_LIBS"
+      ])
+  if test "$glib_cv_pcre_has_unicode" = "no"; then
+    AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
   fi
-  AC_SUBST(PCRE_WARN_CFLAGS)
-else
-  AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
-fi
+  AC_SUBST(PCRE_CFLAGS)
+  AC_SUBST(PCRE_LIBS)
+  AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
+  PCRE_REQUIRES=libpcre
+  AC_SUBST(PCRE_REQUIRES)
+], [
+  # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
+  AS_IF([ test x"$GCC" = xyes], [
+    AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -Wno-pointer-sign"
+    AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
+                          AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
+    CFLAGS="$save_CFLAGS"
+  ])
+])
+AC_SUBST(PCRE_WARN_CFLAGS)
 
 dnl **********************
 dnl *** Win32 API libs ***
@@ -2526,7 +2538,7 @@ case $host in
        G_LIBS_EXTRA="-luser32 -lkernel32"
     ;;
   *-*-mingw*)
-       G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm"
+       G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi"
     ;;
   *)
        G_LIBS_EXTRA=""
@@ -2553,7 +2565,7 @@ dnl ******************************************************************
 
 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
 
-if test $cross_compiling = yes; then
+AS_IF([ test $cross_compiling = yes && test x$enable_modular_tests = xyes], [
   AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
   if test x$GLIB_GENMARSHAL = xno; then
     AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
@@ -2563,7 +2575,12 @@ if test $cross_compiling = yes; then
   if test x$GLIB_COMPILE_SCHEMAS = xno; then
     AC_MSG_ERROR(Could not find a glib-compile-schemas in your PATH)
   fi
-fi
+
+  AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
+  if test x$GLIB_COMPILE_RESOURCES = xno; then
+    AC_MSG_ERROR(Could not find a glib-compile-resources in your PATH)
+  fi
+])
 
 dnl **************************
 dnl *** Checks for gtk-doc ***
@@ -2576,7 +2593,7 @@ AC_ARG_ENABLE(man,
                               [regenerate man pages from Docbook [default=no]])],enable_man=yes,
               enable_man=no)
 
-if test "${enable_man}" != no; then
+AS_IF([test "${enable_man}" != no], [
 dnl
 dnl Check for xsltproc
 dnl
@@ -2590,7 +2607,7 @@ AC_PATH_PROG([XSLTPROC], [xsltproc])
      [DocBook XML DTD V4.1.2],,enable_man=no)
   JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
      [DocBook XSL Stylesheets],,enable_man=no)
-fi
+])
 
 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
 
@@ -2603,7 +2620,7 @@ AC_ARG_ENABLE([dtrace],
                               [include tracing support for dtrace])])
 have_dtrace=no
 AC_MSG_CHECKING([whether to include dtrace tracing support])
-if test "x$enable_dtrace" != xno; then
+AS_IF([ test "x$enable_dtrace" != xno], [
   if test x$glib_have_carbon = xyes; then
     AC_MSG_RESULT([no (not yet compatible with MacOS dtrace)])
   else 
@@ -2620,9 +2637,9 @@ if test "x$enable_dtrace" != xno; then
                        fi])
     fi
   fi
-else
+], [
   AC_MSG_RESULT([no])
-fi
+])
 if test "x$have_dtrace" = xyes; then
   AC_DEFINE([HAVE_DTRACE], [1], [Define to 1 if using dtrace probes.])
 fi
@@ -2660,7 +2677,7 @@ AC_ARG_ENABLE(gcov,
                 [enable coverage testing with gcov]),
   [use_gcov=$enableval], [use_gcov=no])
 
-if test "x$use_gcov" = "xyes"; then
+AS_IF([ test "x$use_gcov" = "xyes"], [
   dnl we need gcc:
   if test "$GCC" != "yes"; then
     AC_MSG_ERROR([GCC is required for --enable-gcov])
@@ -2681,7 +2698,7 @@ if test "x$use_gcov" = "xyes"; then
   AC_CHECK_PROG(LTP, lcov, lcov)
   AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
 
-  if test "$LTP"; then
+  AS_IF([ test "$LTP" ], [
     AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
       glib_cv_ltp_version=invalid
       ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
@@ -2691,10 +2708,10 @@ if test "x$use_gcov" = "xyes"; then
         fi
       done
     ])
-  else
+  ], [
     ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
     AC_MSG_ERROR([$ltp_msg])
-  fi
+  ])
 
   case $glib_cv_ltp_version in
     ""|invalid[)]
@@ -2716,7 +2733,7 @@ if test "x$use_gcov" = "xyes"; then
   dnl Add the special gcc flags
   CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
   LDFLAGS="$LDFLAGS -lgcov"
-fi
+])
 
 dnl ******************************
 dnl *** output the whole stuff ***
@@ -3343,7 +3360,17 @@ g_pollhup=$glib_cv_value_POLLHUP
 g_pollerr=$glib_cv_value_POLLERR
 g_pollnval=$glib_cv_value_POLLNVAL
 
-g_af_unix=$glib_cv_value_AF_UNIX
+# If a family is not found on the system, define that family to
+# a negative value, picking a different one for each undefined
+# family (-1 for AF_UNIX, -2 for the next one, -3 ...)
+# This is needed because glib-mkenums doesn't handle optional
+# values in enums, and thus we have to have all existing values
+# defined in the enum.
+if test "x$glib_cv_value_AF_UNIX" != "x"; then
+  g_af_unix=$glib_cv_value_AF_UNIX
+else
+  g_af_unix=-1
+fi
 g_af_inet=$glib_cv_value_AF_INET
 g_af_inet6=$glib_cv_value_AF_INET6
 
@@ -3388,17 +3415,58 @@ if test x$glib_win32_static_compilation = xyes; then
 fi
 ])
 
+# Redo enough to get guint32 and guint64 for the alignment checks below
+case 4 in
+$ac_cv_sizeof_short)
+  gint32=short
+  ;;
+$ac_cv_sizeof_int)
+  gint32=int
+  ;;
+$ac_cv_sizeof_long)
+  gint32=long
+  ;;
+esac
+case 8 in
+$ac_cv_sizeof_int)
+  gint64=int
+  ;;
+$ac_cv_sizeof_long)
+  gint64=long
+  ;;
+$ac_cv_sizeof_long_long)
+  gint64='long long'
+  ;;
+$ac_cv_sizeof___int64)
+  gint64='__int64'
+  ;;
+esac
+
+AC_CHECK_TYPE([guint32],,,[typedef unsigned $gint32 guint32;])
+AC_CHECK_ALIGNOF([guint32], [AC_INCLUDES_DEFAULT
+typedef unsigned $gint32 guint32;])
+AC_CHECK_TYPE([guint64],,,[typedef unsigned $gint64 guint64;])
+AC_CHECK_ALIGNOF([guint64], [AC_INCLUDES_DEFAULT
+typedef unsigned $gint64 guint64;])
+AC_CHECK_TYPE([unsigned long])
+AC_CHECK_ALIGNOF([unsigned long])
+
 # Check for libdbus1 - Optional - is only used in the GDBus test cases
 #
 # 1.2.14 required for dbus_message_set_serial
-PKG_CHECK_MODULES(DBUS1,
-                  dbus-1 >= 1.2.14,
-                  [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
-                  have_dbus1=no)
-AC_SUBST(DBUS1_CFLAGS)
-AC_SUBST(DBUS1_LIBS)
+AS_IF([ test x$enable_modular_tests = xyes], [
+   PKG_CHECK_MODULES(DBUS1,
+                     dbus-1 >= 1.2.14,
+                     [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
+                     have_dbus1=no)
+   AC_SUBST(DBUS1_CFLAGS)
+   AC_SUBST(DBUS1_LIBS)
+])
 AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
 
+AC_CHECK_PROGS([DBUS_DAEMON], [dbus-daemon])
+AM_CONDITIONAL([HAVE_DBUS_DAEMON], [test x$DBUS_DAEMON = xdbus-daemon ])
+
 dnl
 dnl Check for -Bsymbolic-functions linker flag used to avoid
 dnl intra-library PLT jumps, if available.