build: Add --disable-modular-tests build option
[platform/upstream/glib.git] / configure.ac
index ffd2a67..c93fcec 100644 (file)
@@ -20,15 +20,19 @@ 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], [29])
-m4_define([glib_micro_version], [17])
-m4_define([glib_interface_age], [0])
+m4_define([glib_minor_version], [32])
+m4_define([glib_micro_version], [2])
+m4_define([glib_interface_age], [2])
 m4_define([glib_binary_age],
           [m4_eval(100 * glib_minor_version + glib_micro_version)])
 m4_define([glib_version],
@@ -108,6 +112,8 @@ dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_CPP
 
+AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
+
 AC_CANONICAL_HOST
 
 AC_MSG_CHECKING([for the BeOS])
@@ -169,11 +175,20 @@ 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 <Foundation/Foundation.h>
+], 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
   AC_CHECK_TOOL(WINDRES, windres, no)
@@ -204,6 +219,11 @@ if test "x$glib_have_carbon" = "xyes"; then
   LDFLAGS="$LDFLAGS -framework Carbon"
 fi
 
+if test "x$glib_have_cocoa" = "xyes"; then
+  AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available])
+  LDFLAGS="$LDFLAGS -framework Foundation"
+fi
+
 gl_GLIBC21
 if test "x$GLIBC21" = "xyes"; then
   AC_DEFINE([_GNU_SOURCE], 1, [Make all glibc extensions visible])
@@ -223,19 +243,15 @@ AC_ARG_ENABLE(mem_pools,
               [AC_HELP_STRING([--disable-mem-pools],
                              [disable all glib memory pools])],,
              [disable_mem_pools=no])
-AC_ARG_ENABLE(threads,
-              [AC_HELP_STRING([--enable-threads],
-                              [turn on basic thread support [default=yes]
-([=no] will override --with-threads)])],,
-              [enable_threads=yes])
 AC_ARG_ENABLE(rebuilds,
               [AC_HELP_STRING([--disable-rebuilds],
                               [disable all source autogeneration rules])],,
               [enable_rebuilds=yes])
-
-if test "x$enable_threads" != "xyes"; then
-  enable_threads=no
-fi
+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
@@ -250,7 +266,6 @@ if test "x$disable_mem_pools" = "xno"; then
   AC_MSG_RESULT([no])
 else
   AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
-  AC_SUBST(DISABLE_MEM_POOLS)
   AC_MSG_RESULT([yes])
 fi
 
@@ -258,7 +273,7 @@ dnl location to install runtime libraries, e.g. ../../lib to install
 dnl to /lib if libdir is /usr/lib
 AC_ARG_WITH(runtime-libdir,
            [AC_HELP_STRING([--with-runtime-libdir=RELPATH],
-                           [Install runtime libraries relative to libdir])],
+                           [install runtime libraries relative to libdir])],
            [],
           [with_runtime_libdir=""])
 GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
@@ -290,7 +305,6 @@ if test "x$enable_debug" = "xyes"; then
       *) CFLAGS="$CFLAGS -g" ;;
       esac
   fi
-       
   GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
 else
   GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
@@ -519,8 +533,6 @@ if test "x$GCC" = "xyes"; then
   esac
 fi
 
-CPPFLAGS="$CPPFLAGS -DG_DISABLE_SINGLE_INCLUDES"
-
 if test "$glib_native_win32" = "yes"; then
   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.])
@@ -570,60 +582,12 @@ AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
     CFLAGS=$glib_save_CFLAGS
     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
 
-# Checks for header files.
-AC_HEADER_STDC
-
 # Checks for library functions.
 AC_FUNC_VPRINTF
 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])])
-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)
@@ -632,6 +596,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
@@ -679,8 +655,6 @@ elif test x$ac_cv_sizeof___int64 = x8; then
        AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
 fi
 
-dnl long doubles were not used, and a portability problem
-dnl AC_C_LONG_DOUBLE
 AC_C_CONST
 
 dnl ok, here we try to check whether the systems prototypes for
@@ -910,10 +884,19 @@ fi
 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h grp.h sys/param.h sys/poll.h sys/resource.h])
 AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
 AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h inttypes.h sched.h malloc.h])
-AC_CHECK_HEADERS([sys/vfs.h sys/mount.h sys/vmount.h sys/statfs.h sys/statvfs.h])
-AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h sys/sysctl.h fstab.h])
+AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h])
+AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h])
 AC_CHECK_HEADERS([sys/uio.h sys/mkdev.h])
 AC_CHECK_HEADERS([linux/magic.h])
+AC_CHECK_HEADERS([sys/prctl.h])
+
+AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
+[#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+])
+
+AC_CHECK_HEADERS([xlocale.h])
 
 # check for structure fields
 AC_CHECK_MEMBERS([struct stat.st_mtimensec, struct stat.st_mtim.tv_nsec, struct stat.st_atimensec, struct stat.st_atim.tv_nsec, struct stat.st_ctimensec, struct stat.st_ctim.tv_nsec])
@@ -931,8 +914,11 @@ AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f
 #endif])
 # struct statvfs.f_basetype is available on Solaris but not for Linux. 
 AC_CHECK_MEMBERS([struct statvfs.f_basetype],,, [#include <sys/statvfs.h>])
+AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,, [#include <sys/statvfs.h>])
 AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[#include <time.h>])
 
+AC_STRUCT_DIRENT_D_TYPE
+
 # Checks for libcharset
 AM_LANGINFO_CODESET
 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
@@ -1001,14 +987,15 @@ AC_MSG_RESULT(unsigned $glib_size_type)
 # Check for some functions
 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
 AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid)
-AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getmntinfo)
+AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat)
 # Check for high-resolution sleep functions
 AC_CHECK_FUNCS(splice)
+AC_CHECK_FUNCS(prlimit)
 
 # To avoid finding a compatibility unusable statfs, which typically
 # successfully compiles, but warns to use the newer statvfs interface:
 AS_IF([test $ac_cv_header_sys_statvfs_h = yes], [AC_CHECK_FUNCS([statvfs])])
-AS_IF([test $ac_cv_header_sys_statfs_h  = yes], [AC_CHECK_FUNCS([statfs])])
+AS_IF([test $ac_cv_header_sys_statfs_h  = yes -o $ac_cv_header_sys_mount_h = yes], [AC_CHECK_FUNCS([statfs])])
 
 AC_MSG_CHECKING([whether to use statfs or statvfs])
 # Some systems have both statfs and statvfs, pick the most "native" for these
@@ -1036,6 +1023,8 @@ AS_IF([test x$ac_cv_func_statfs = xyes],
 AC_CHECK_HEADERS(crt_externs.h)
 AC_CHECK_FUNCS(_NSGetEnviron)
 
+AC_CHECK_FUNCS(newlocale uselocale strtod_l strtoll_l strtoull_l)
+
 AC_FUNC_VSNPRINTF_C99
 AC_FUNC_PRINTF_UNIX98
 
@@ -1068,40 +1057,51 @@ if $glib_failed ; then
   AC_MSG_ERROR([Could not determine values for MSG_* constants])
 fi
 
-AC_CHECK_FUNCS(getprotobyname_r endservent)
-AC_CHECK_HEADERS([netdb.h wspiapi.h])
+AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex)
+AC_CHECK_HEADERS([netdb.h wspiapi.h arpa/nameser_compat.h])
 
-# For gio/libasyncns
 if test $glib_native_win32 = no; then
-  AC_CHECK_FUNCS(strndup setresuid setreuid)
-  AC_CHECK_HEADERS(sys/prctl.h arpa/nameser_compat.h)
-
   # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
+  NETWORK_LIBS=""
   AC_MSG_CHECKING([for res_query])
   AC_TRY_LINK([#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <resolv.h>],
-              [res_query("test", 0, 0, (void *)0, 0);],
-              [AC_MSG_RESULT([yes])],
+              #include <netinet/in.h>
+              #include <arpa/nameser.h>
+              #include <resolv.h>
+              ],[
+              res_query("test", 0, 0, (void *)0, 0);
+              ],[AC_MSG_RESULT([yes])],
               [save_libs="$LIBS"
                LIBS="-lresolv $LIBS"
                AC_TRY_LINK([#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <resolv.h>],
-                           [res_query("test", 0, 0, (void *)0, 0);],
-                           [AC_MSG_RESULT([in -lresolv])
-                            LIBASYNCNS_LIBADD="-lresolv"],
+                           #include <netinet/in.h>
+                           #include <arpa/nameser.h>
+                           #include <resolv.h>
+                          ],[
+                           res_query("test", 0, 0, (void *)0, 0);
+                          ],[AC_MSG_RESULT([in -lresolv])
+                              NETWORK_LIBS="-lresolv $NETWORK_LIBS"],
                            [LIBS="-lbind $save_libs"
                             AC_TRY_LINK([#include <resolv.h>],
                                         [res_query("test", 0, 0, (void *)0, 0);],
                                         [AC_MSG_RESULT([in -lbind])
-                                         LIBASYNCNS_LIBADD="-lbind"],
+                                         NETWORK_LIBS="-lbind $NETWORK_LIBS"],
                                         [AC_MSG_ERROR(not found)])])
                LIBS="$save_libs"])
-  AC_SUBST(LIBASYNCNS_LIBADD)
+  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],
+               [AC_DEFINE(HAVE_NETLINK, 1, [We have AF_NETLINK sockets])],,
+               [#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* )
@@ -1234,39 +1234,6 @@ if test "$ac_cv_func_memmove" != "yes"; then
   fi
 fi
 
-# Check for sys_errlist
-AC_MSG_CHECKING(for sys_errlist)
-AC_TRY_LINK(, [
-extern char *sys_errlist[];
-extern int sys_nerr;
-sys_errlist[sys_nerr-1][0] = 0;
-], glib_ok=yes, glib_ok=no)
-AC_MSG_RESULT($glib_ok)
-if test "$glib_ok" = "no"; then
-    AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
-fi
-
-# Check for sys_siglist
-AC_MSG_CHECKING(for sys_siglist)
-AC_TRY_LINK(, [
-extern char *sys_siglist[];
-exit (sys_siglist[0]);
-], glib_ok=yes, glib_ok=no)
-AC_MSG_RESULT($glib_ok)
-if test "$glib_ok" = "no"; then
-    AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
-fi
-
-# Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
-AC_MSG_CHECKING(for sys_siglist declaration)
-AC_TRY_COMPILE([#include <signal.h>], [
-strlen (sys_siglist[0]);
-], glib_ok=yes, glib_ok=no)
-AC_MSG_RESULT($glib_ok)
-if test "$glib_ok" = "no"; then
-    AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
-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>],
@@ -1314,8 +1281,10 @@ AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
         AC_TRY_COMPILE([#include <langinfo.h>],
                 [char *str;
                  str = nl_langinfo (PM_STR);
+                 str = nl_langinfo (D_T_FMT);
                  str = nl_langinfo (D_FMT);
                  str = nl_langinfo (T_FMT);
+                 str = nl_langinfo (T_FMT_AMPM);
                  str = nl_langinfo (MON_1);
                  str = nl_langinfo (ABMON_12);
                  str = nl_langinfo (DAY_1);
@@ -1326,6 +1295,26 @@ 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_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_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_MB)])
+fi
+
 dnl ****************************************
 dnl *** posix_memalign                   ***
 dnl ****************************************
@@ -1543,8 +1532,13 @@ if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
        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([
@@ -1559,7 +1553,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;
@@ -1567,8 +1561,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
@@ -1676,8 +1670,8 @@ dnl *** Directory for GIO modules ***
 dnl *********************************
 
 AC_ARG_WITH(gio-module-dir,
-           [AC_HELP_STRING([--with-gio-module-dir=PATH],
-                           [Load gio modules from this directory [LIBDIR/gio/modules]])],
+           [AC_HELP_STRING([--with-gio-module-dir=DIR],
+                           [load gio modules from this directory [LIBDIR/gio/modules]])],
            [],
           [with_gio_module_dir='${libdir}/gio/modules'])
 GIO_MODULE_DIR=$with_gio_module_dir
@@ -1686,7 +1680,9 @@ AC_SUBST(GIO_MODULE_DIR)
 dnl **********************************
 dnl *** Check for libselinux (GIO) ***
 dnl **********************************
-AC_ARG_ENABLE(selinux, [  --disable-selinux       build without selinux support])
+AC_ARG_ENABLE(selinux,
+              AC_HELP_STRING([--disable-selinux],
+                             [build without selinux support]))
 msg_selinux=no
 SELINUX_LIBS=
 if test "x$enable_selinux" != "xno"; then
@@ -1736,11 +1732,12 @@ dnl ****************************
 
 should_disable_fam=no
 
-AC_ARG_ENABLE(fam, [  --disable-fam          build without enabling fam for file system monitoring],
+AC_ARG_ENABLE(fam,
+              AC_HELP_STRING([--disable-fam],
+                             [don't use fam for file system monitoring]),
                          [
                                 if test "x$enable_fam" = "xno"; then
                                         should_disable_fam=yes
-                                        echo "Not building FAM support"
                                 fi
                          ]
                          )
@@ -1764,7 +1761,8 @@ AM_CONDITIONAL(HAVE_FAM, [test "$fam_support" = "yes"])
 dnl *****************************
 dnl *** Check for xattr (GIO) ***
 dnl *****************************
-AC_ARG_ENABLE(xattr, [  --disable-xattr           build without xattr support])
+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
@@ -1816,6 +1814,28 @@ dnl   failure. try libattr
 fi
 AC_SUBST(XATTR_LIBS)
 
+dnl ************************
+dnl *** check for libelf ***
+dnl ************************
+
+PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=maybe])
+
+if test $have_libelf = maybe; then
+  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])
+
+  if test $have_libelf != no; then
+    LIBELF_LIBS=-lelf
+    have_libelf = yes
+  fi
+fi
+
+if test $have_libelf = yes; then
+  AC_DEFINE(HAVE_LIBELF, 1, [Define if libelf is available])
+fi
+
 dnl ****************************************
 dnl *** platform dependent source checks ***
 dnl ****************************************
@@ -1861,23 +1881,15 @@ dnl *** g_thread checks ***
 dnl ***********************
 
 AC_ARG_WITH(threads,
-           [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/win32@:>@],
+           [AC_HELP_STRING([--with-threads=@<:@posix/win32@:>@],
                            [specify a thread implementation to use])],
-           [if test "x$with_threads" = x; then
-               want_threads=yes
-           else
-               want_threads=$with_threads
-           fi],
-          [want_threads=yes])
-if test "x$enable_threads" = "xno"; then
-        want_threads=no
-fi
+           [],
+           [with_threads=yes])
 
 dnl error and warning message
 dnl *************************
 
-THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
-                computer. GLib will not have a default thread implementation."
+THREAD_NO_IMPLEMENTATION="No thread implementation found."
 
 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
                 platform (normally it's "_REENTRANT"). I'll not use any flag on
@@ -1885,12 +1897,10 @@ FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
                 Please provide information on how it is done on your system."
 
 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
-               "
+                 "
 
 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
-               provide information on your thread implementation.
-               You can also run 'configure --disable-threads' 
-               to compile without thread support."
+                  provide information on your thread implementation."
 
 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
                functions will not be MT-safe during their first call because
@@ -1899,16 +1909,6 @@ FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
                because there is no 'localtime_r' on your system."
 
-POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
-               crude surrogate will be used. If you happen to know a 
-               yield function for your system, please inform the GLib 
-               developers."
-
-POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for 
-               threads on your system. Thus threads can only have the default 
-               priority. If you happen to know these main/max
-               priorities, please inform the GLib developers."
-
 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
                linking threaded applications. As GLib cannot do that 
                automatically, you will get an linkg error everytime you are 
@@ -1919,12 +1919,10 @@ AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
 dnl determination of thread implementation
 dnl ***************************************
 
-# have_threads=no   means no thread support
-# have_threads=none means no default thread implementation
+AC_MSG_CHECKING(for thread implementation)
 
 have_threads=no
-if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
-                               || test "x$want_threads" = xdce; then
+if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then
        # -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"
@@ -1935,12 +1933,6 @@ if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
                        [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
                        have_threads=posix)
         fi
-        if test "x$have_threads" = xno; then
-                AC_TRY_COMPILE([#include <pthread.h>],
-                       [pthread_mutex_t m; 
-                         pthread_mutex_init (&m, pthread_mutexattr_default);],
-                       have_threads=dce)
-        fi
        # Tru64Unix requires -pthread to find pthread.h. See #103020
        CPPFLAGS="$CPPFLAGS -pthread"
        if test "x$have_threads" = xno; then
@@ -1950,24 +1942,19 @@ if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
         fi
        CPPFLAGS="$glib_save_CPPFLAGS"
 fi
-if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
-               case $host in
-                       *-*-mingw*)
-               have_threads=win32
-               ;;
-       esac
-fi
-if test "x$want_threads" = xnone; then
-       have_threads=none
+if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then
+        case $host in
+                *-*-mingw*)
+                have_threads=win32
+                ;;
+        esac
 fi
 
-AC_MSG_CHECKING(for thread implementation)
-
-if test "x$have_threads" = xno && test "x$want_threads" != xno; then
-       AC_MSG_RESULT(none available)
-        AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
+if test "x$have_threads" = xno; then
+        AC_MSG_RESULT(none available)
+        AC_MSG_ERROR($THREAD_NO_IMPLEMENTATION)
 else
-       AC_MSG_RESULT($have_threads)
+        AC_MSG_RESULT($have_threads)
 fi
 
 
@@ -1993,62 +1980,48 @@ int main()
    return (check_me != 42 || ret != &check_me);
 }])
 
-dnl
-dnl Test program for sched_get_priority_min()
-dnl
-m4_define([glib_sched_priority_test],[
-#include <sched.h>
-#include <errno.h>
-int main() {
-    errno = 0;
-    return sched_get_priority_min(SCHED_OTHER)==-1
-          && errno != 0;
-}])
-
-if test x"$have_threads" != xno; then
-
-  if test x"$have_threads" = xposix; then
-    # 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
-    # too and could be considered as the canonical way to go. 
-    case $host in
-      *-*-cygwin*|*-*-darwin*)
-         # skip cygwin and darwin -pthread or -pthreads test
-         ;;
-      *-solaris*)
-        # These compiler/linker flags work with both Sun Studio and gcc
-       # Sun Studio expands -mt to -D_REENTRANT and -lthread
-       # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
-        G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
-        G_THREAD_LIBS="-lpthread -lthread"
-        ;;
-      *)
-        for flag in pthread pthreads mt; do
-          glib_save_CFLAGS="$CFLAGS"
-          CFLAGS="$CFLAGS -$flag"
-          AC_TRY_RUN(glib_thread_test(0),
-                     glib_flag_works=yes,
-                     glib_flag_works=no,
-                     [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test(0))],
-                                     glib_flag_works=yes,
-                                     glib_flag_works=no)])
-          CFLAGS="$glib_save_CFLAGS"
-          if test $glib_flag_works = yes ; then
-             G_THREAD_CFLAGS=-$flag
-            G_THREAD_LIBS=-$flag
-            break;
-          fi
-        done
-         ;;
-    esac 
-  fi
+if test x"$have_threads" = xposix; then
+  # 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
+  # too and could be considered as the canonical way to go. 
+  case $host in
+    *-*-cygwin*|*-*-darwin*)
+       # skip cygwin and darwin -pthread or -pthreads test
+       ;;
+    *-solaris*)
+      # These compiler/linker flags work with both Sun Studio and gcc
+      # Sun Studio expands -mt to -D_REENTRANT and -lthread
+      # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
+      G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
+      G_THREAD_LIBS="-lpthread -lthread"
+      ;;
+    *)
+      for flag in pthread pthreads mt; do
+        glib_save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS -$flag"
+        AC_TRY_RUN(glib_thread_test(0),
+                   glib_flag_works=yes,
+                   glib_flag_works=no,
+                   [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test(0))],
+                                   glib_flag_works=yes,
+                                   glib_flag_works=no)])
+        CFLAGS="$glib_save_CFLAGS"
+        if test $glib_flag_works = yes ; then
+           G_THREAD_CFLAGS=-$flag
+        G_THREAD_LIBS=-$flag
+        break;
+        fi
+      done
+       ;;
+  esac
+fi
 
-  if test x"$G_THREAD_CFLAGS" = x; then
+if test x"$G_THREAD_CFLAGS" = x; then
 
-    # The canonical -pthread[s] does not work. Try something different.
+  # The canonical -pthread[s] does not work. Try something different.
 
-    case $host in
+  case $host in
        *-aix*)
                if test x"$GCC" = xyes; then
                        # GCC 3.0 and above needs -pthread. 
@@ -2070,12 +2043,6 @@ if test x"$have_threads" != xno; then
        *-dg-dgux*)  # DG/UX
                G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
                ;;
-       *-osf*)
-               # So we are using dce threads. posix threads are already 
-               # catched above.
-               G_THREAD_CFLAGS="-threads"
-               G_THREAD_LIBS=$G_THREAD_CFLAGS
-               ;;
        *-sysv5uw7*) # UnixWare 7 
                # We are not using gcc with -pthread. Catched above.
                G_THREAD_CFLAGS="-Kthread"
@@ -2088,40 +2055,38 @@ if test x"$have_threads" != xno; then
        *)
                G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
                ;;
-    esac
-  fi
+  esac
+
+fi
 
-    # if we are not finding the localtime_r function, then we probably are
-    # not using the proper multithread flag
+# if we are not finding the localtime_r function, then we probably are
+# not using the proper multithread flag
 
-    glib_save_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
+glib_save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
 
-    # First we test, whether localtime_r is declared in time.h
-    # directly. Then we test whether a macro localtime_r exists, in
-    # which case localtime_r in the test program is replaced and thus
-    # if we still find localtime_r in the output, it is not defined as 
-    # a macro.
+# First we test, whether localtime_r is declared in time.h
+# directly. Then we test whether a macro localtime_r exists, in
+# which case localtime_r in the test program is replaced and thus
+# if we still find localtime_r in the output, it is not defined as 
+# a macro.
 
-    AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
-      [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h> 
+AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
+  [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h> 
                                                           localtime_r(a,b)],
-                  AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
+                  AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
 
-    CPPFLAGS="$glib_save_CPPFLAGS"
+CPPFLAGS="$glib_save_CPPFLAGS"
 
-    AC_MSG_CHECKING(thread related cflags)
-    AC_MSG_RESULT($G_THREAD_CFLAGS)
-    CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
-fi
+AC_MSG_CHECKING(thread related cflags)
+AC_MSG_RESULT($G_THREAD_CFLAGS)
+CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
 
 dnl determination of G_THREAD_LIBS
 dnl ******************************
 
-mutex_has_default=no
 case $have_threads in
-        posix|dce)
+        posix)
          glib_save_CPPFLAGS="$CPPFLAGS"
          CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
           if test x"$G_THREAD_LIBS" = x; then
@@ -2134,7 +2099,7 @@ case $have_threads in
               *)
                 G_THREAD_LIBS=error
                glib_save_LIBS="$LIBS"
-               for thread_lib in "" pthread pthread32 pthreads thread dce; do
+               for thread_lib in "" pthread pthread32 pthreads thread; do
                        if test x"$thread_lib" = x; then
                                add_thread_lib=""
                                IN=""
@@ -2172,53 +2137,13 @@ case $have_threads in
             esac
           fi
 
-          glib_save_LIBS="$LIBS"
-         for thread_lib in "" rt rte; do
-           if test x"$thread_lib" = x; then
-             add_thread_lib=""
-             IN=""
-           else
-             add_thread_lib="-l$thread_lib"
-             IN=" in -l$thread_lib"
-           fi
-           LIBS="$add_thread_lib $glib_save_LIBS"
-           
-            AC_MSG_CHECKING(for sched_get_priority_min$IN)
-           AC_TRY_RUN(glib_sched_priority_test,
-                       glib_result=yes,
-                       glib_result=no,
-                       [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_sched_priority_test)],
-                                       glib_result=yes,
-                                       glib_result=no)])
-           AC_MSG_RESULT($glib_result)
-
-           if test "$glib_result" = "yes" ; then           
-              G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
-              posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
-              posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
-              break
-            fi
-         done
-         LIBS="$glib_save_LIBS"
-          mutex_has_default=yes
-          mutex_default_type='pthread_mutex_t'
-          mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
-          mutex_header_file='pthread.h'
-         if test "x$have_threads" = "xposix"; then
-           g_threads_impl="POSIX"
-         else
-           g_threads_impl="DCE"
-           have_threads="posix"
-         fi
+         g_threads_impl="POSIX"
          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
           CPPFLAGS="$glib_save_CPPFLAGS"
           ;;
        win32)
           g_threads_impl="WIN32"
           ;;
-        none|no)
-          g_threads_impl="NONE"
-           ;;
         *)
           g_threads_impl="NONE"
            G_THREAD_LIBS=error
@@ -2244,16 +2169,15 @@ AC_MSG_RESULT($G_THREAD_LIBS)
 dnl check for mt safe function variants and some posix functions
 dnl ************************************************************
 
-if test x"$have_threads" != xno; then
-       glib_save_LIBS="$LIBS"
-       # we are not doing the following for now, as this might require glib 
-       # 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
-               AC_CACHE_CHECK([for posix getpwuid_r],
-                       ac_cv_func_posix_getpwuid_r,
-                       [AC_TRY_RUN([
+glib_save_LIBS="$LIBS"
+# we are not doing the following for now, as this might require glib 
+# 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
+       AC_CACHE_CHECK([for posix getpwuid_r],
+               ac_cv_func_posix_getpwuid_r,
+               [AC_TRY_RUN([
 #include <errno.h>
 #include <pwd.h>
 int main () { 
@@ -2266,33 +2190,33 @@ int main () {
    return (error < 0 && errno == ENOSYS) 
           || error == ENOSYS; 
 }                               ],
-                               [ac_cv_func_posix_getpwuid_r=yes],
-                               [ac_cv_func_posix_getpwuid_r=no])])
-               GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
-               if test "$ac_cv_func_posix_getpwuid_r" = yes; then
-                       AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
-                               [Have POSIX function getpwuid_r])
-               else
-                       AC_CACHE_CHECK([for nonposix getpwuid_r],
-                               ac_cv_func_nonposix_getpwuid_r,
-                               [AC_TRY_LINK([#include <pwd.h>],
-                                       [char buffer[10000];
-                                       struct passwd pwd;
-                                       getpwuid_r (0, &pwd, buffer, 
-                                                       sizeof (buffer));],
-                                       [ac_cv_func_nonposix_getpwuid_r=yes],
-                                       [ac_cv_func_nonposix_getpwuid_r=no])])
-                       GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
-                       if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
-                               AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
-                                       [Have non-POSIX function getpwuid_r])
-                       fi
+                       [ac_cv_func_posix_getpwuid_r=yes],
+                       [ac_cv_func_posix_getpwuid_r=no])])
+       GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
+       if test "$ac_cv_func_posix_getpwuid_r" = yes; then
+               AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
+                       [Have POSIX function getpwuid_r])
+       else
+               AC_CACHE_CHECK([for nonposix getpwuid_r],
+                       ac_cv_func_nonposix_getpwuid_r,
+                       [AC_TRY_LINK([#include <pwd.h>],
+                               [char buffer[10000];
+                               struct passwd pwd;
+                               getpwuid_r (0, &pwd, buffer, 
+                                               sizeof (buffer));],
+                               [ac_cv_func_nonposix_getpwuid_r=yes],
+                               [ac_cv_func_nonposix_getpwuid_r=no])])
+               GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
+               if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
+                       AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
+                               [Have non-POSIX function getpwuid_r])
                fi
        fi
-       if test "$ac_cv_header_grp_h" = "yes"; then
-               AC_CACHE_CHECK([for posix getgrgid_r],
-                       ac_cv_func_posix_getgrgid_r,
-                       [AC_TRY_RUN([
+fi
+if test "$ac_cv_header_grp_h" = "yes"; then
+       AC_CACHE_CHECK([for posix getgrgid_r],
+               ac_cv_func_posix_getgrgid_r,
+               [AC_TRY_RUN([
 #include <errno.h>
 #include <grp.h>
 int main () { 
@@ -2305,120 +2229,65 @@ int main () {
    return (error < 0 && errno == ENOSYS) 
           || error == ENOSYS; 
 }                              ],
-                              [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
-                       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>],
-                                               [char buffer[10000];
-                                       struct group grp;       
-                                       getgrgid_r (0, &grp, buffer, 
-                                               sizeof (buffer));],
-                               [ac_cv_func_nonposix_getgrgid_r=yes],
-                               [ac_cv_func_nonposix_getgrgid_r=no])])
-                       GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
-                       if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
-                               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
-               glib_save_CPPFLAGS="$CPPFLAGS"
-               CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
-               dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
-               GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
-               # 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_MSG_CHECKING(for minimal/maximal thread priority)
-               if test x"$posix_priority_min" = x; then
-                       AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
-                               PX_PRIO_MIN],,[
-                               posix_priority_min=PX_PRIO_MIN
-                               posix_priority_max=PX_PRIO_MAX])
-               fi
-               if test x"$posix_priority_min" = x; then
-                       # AIX
-                       AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
-                               PTHREAD_PRIO_MIN],,[
-                               posix_priority_min=PTHREAD_PRIO_MIN
-                               posix_priority_max=PTHREAD_PRIO_MAX])
-               fi
-               if test x"$posix_priority_min" = x; then
-                       AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
-                               PRI_OTHER_MIN],,[
-                               posix_priority_min=PRI_OTHER_MIN        
-                               posix_priority_max=PRI_OTHER_MAX])
-               fi
-               if test x"$posix_priority_min" = x; then
-                       AC_MSG_RESULT(none found)
-                       AC_MSG_WARN($POSIX_NO_PRIORITIES)
-                       posix_priority_min=-1
-                       posix_priority_max=-1
-               else
-                       AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
-                       AC_MSG_CHECKING(for pthread_setschedparam)
-                       AC_TRY_LINK([#include <pthread.h>],
-                         [pthread_t t; pthread_setschedparam(t, 0, NULL)],
-                         [AC_MSG_RESULT(yes)
-                       AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
-                          AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
-                          [AC_MSG_RESULT(no)
-                           AC_MSG_WARN($POSIX_NO_PRIORITIES)])
-               fi
-               posix_yield_func=none
-               AC_MSG_CHECKING(for posix yield function)
-               for yield_func in sched_yield pthread_yield_np pthread_yield \
-                                                       thr_yield; do
-                       AC_TRY_LINK([#include <pthread.h>],
-                               [$yield_func()],
-                               [posix_yield_func="$yield_func"
-                               break])
-               done            
-               if test x"$posix_yield_func" = xnone; then
-                       AC_MSG_RESULT(none found)
-                       AC_MSG_WARN($POSIX_NO_YIELD)
-                       posix_yield_func="g_usleep(1000)"
-               else
-                       AC_MSG_RESULT($posix_yield_func)
-                       posix_yield_func="$posix_yield_func()"
+                      [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
+               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>],
+                                       [char buffer[10000];
+                               struct group grp;       
+                               getgrgid_r (0, &grp, buffer, 
+                                       sizeof (buffer));],
+                       [ac_cv_func_nonposix_getgrgid_r=yes],
+                       [ac_cv_func_nonposix_getgrgid_r=no])])
+               GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
+               if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
+                       AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
+                               [Have non-POSIX function getgrgid_r])
                fi
-               AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
-               CPPFLAGS="$glib_save_CPPFLAGS"
-           
-       elif test x"$have_threads" = xwin32; then
-               # It's a pointer to a private struct
-               GLIB_SIZEOF(,struct _GThreadData *, system_thread)
        fi
-
-       LIBS="$glib_save_LIBS"
-
-       # now spit out all the warnings.
-       if test "$ac_cv_func_posix_getpwuid_r" != "yes" && 
-          test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
-               AC_MSG_WARN($FUNC_NO_GETPWUID_R)
-       fi
-       if test "$ac_cv_func_localtime_r" != "yes"; then
-               AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
-       fi
-fi     
-
-if test x"$glib_cv_sizeof_system_thread" = x; then
-   # use a pointer as a fallback.
-   GLIB_SIZEOF(,void *, system_thread)
+fi
+LIBS="$G_THREAD_LIBS $LIBS"
+if test x"$have_threads" = xposix; then
+        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_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"
+
+# now spit out all the warnings.
+if test "$ac_cv_func_posix_getpwuid_r" != "yes" && 
+   test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
+       AC_MSG_WARN($FUNC_NO_GETPWUID_R)
+fi
+if test "$ac_cv_func_localtime_r" != "yes"; then
+       AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
 fi
 
 #
@@ -2432,200 +2301,84 @@ case $host in
   *-*-freebsd*|*-*-linux*)
     G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
     ;;
-  *)    
-    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"          
+  *-*-openbsd*)
+    LDFLAGS="$LDFLAGS -pthread"
+    ;;
+  *)
+    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
     ;;
 esac
 
-AM_CONDITIONAL(HAVE_THREADS, [test "$have_threads" != "none"])
-AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
-                  [Source file containing theread implementation])
 AC_SUBST(G_THREAD_CFLAGS)
 AC_SUBST(G_THREAD_LIBS)
 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
 AC_SUBST(G_THREAD_LIBS_EXTRA)
 
-dnl **********************************************
-dnl *** GDefaultMutex setup and initialization ***
-dnl **********************************************
-dnl
-dnl if mutex_has_default = yes, we also got
-dnl mutex_default_type, mutex_default_init and mutex_header_file
-if test $mutex_has_default = yes ; then
-       glib_save_CPPFLAGS="$CPPFLAGS"
-       glib_save_LIBS="$LIBS"
-       LIBS="$G_THREAD_LIBS $LIBS"
-       CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
-       GLIB_SIZEOF([#include <$mutex_header_file>],
-                    $mutex_default_type,
-                    gmutex)
-       GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
-                          $mutex_default_type,
-                          gmutex,
-                          $glib_cv_sizeof_gmutex,
-                          $mutex_default_init)
-       if test x"$glib_cv_byte_contents_gmutex" = xno; then
-               mutex_has_default=no
-       fi
-       CPPFLAGS="$glib_save_CPPFLAGS"
-       LIBS="$glib_save_LIBS"
-fi
-
 AC_CHECK_FUNCS(clock_gettime, [], [
   AC_CHECK_LIB(rt, 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)
-
-AC_CACHE_CHECK(for monotonic clocks,
-    glib_cv_monotonic_clock,AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-#include <time.h>
-#include <unistd.h>
-int main() {
-#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
-        #error No monotonic clock
-#endif
-       return 0;
-}
-]])],glib_cv_monotonic_clock=yes,glib_cv_monotonic_clock=no))
-if test "$glib_cv_monotonic_clock" = "yes"; then
-  AC_DEFINE(HAVE_MONOTONIC_CLOCK,1,[Have a monotonic clock])
-fi
 
 
 dnl ************************
 dnl *** g_atomic_* tests ***
 dnl ************************
 
-AC_MSG_CHECKING([whether to use assembler code for atomic operations])
-    case $host_cpu in
-      i386)
-        AC_MSG_RESULT([none])
-        glib_memory_barrier_needed=no
-        ;;
-      i?86)
-        AC_MSG_RESULT([i486])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_I486, 1,
-                          [i486 atomic implementation])
-        glib_memory_barrier_needed=no
-        ;;
-      sparc*)
-        SPARCV9_WARNING="Try to rerun configure with CFLAGS='-mcpu=v9',
-                        when you are using a sparc with v9 instruction set (most
-                        sparcs nowadays). This will make the code for atomic
-                        operations much faster. The resulting code will not run
-                        on very old sparcs though."
-
-        AC_LINK_IFELSE([AC_LANG_SOURCE([[
-          main ()
-          {
-            int tmp1, tmp2, tmp3;
-            __asm__ __volatile__("casx [%2], %0, %1"
-                                 : "=&r" (tmp1), "=&r" (tmp2) : "r" (&tmp3));
-          }]])],
-          AC_MSG_RESULT([sparcv9])
-          AC_DEFINE_UNQUOTED(G_ATOMIC_SPARCV9, 1,
-                            [sparcv9 atomic implementation]),
-          AC_MSG_RESULT([no])
-          AC_MSG_WARN([[$SPARCV9_WARNING]]))
-        glib_memory_barrier_needed=yes
-        ;;
-      alpha*)
-        AC_MSG_RESULT([alpha])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_ALPHA, 1,
-                          [alpha atomic implementation])
-        glib_memory_barrier_needed=yes
-        ;;
-      x86_64)
-        AC_MSG_RESULT([x86_64])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_X86_64, 1,
-                          [x86_64 atomic implementation])
-        glib_memory_barrier_needed=no
-       ;;
-      powerpc*)
-        AC_MSG_RESULT([powerpc])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_POWERPC, 1,
-                          [powerpc atomic implementation])
-        glib_memory_barrier_needed=yes
-        AC_MSG_CHECKING([whether asm supports numbered local labels])
-        AC_TRY_COMPILE(
-                      ,[
-                      __asm__ __volatile__ ("1:       nop\n"
-                              "         bne-    1b")
-                      ],[
-                      AC_DEFINE_UNQUOTED(ASM_NUMERIC_LABELS, 1, [define if asm blocks can use numeric local labels])
-                      AC_MSG_RESULT([yes])
-                      ],[
-                      AC_MSG_RESULT([no])
-                      ])
-        ;;
-      ia64)
-        AC_MSG_RESULT([ia64])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_IA64, 1,
-                          [ia64 atomic implementation])
-        glib_memory_barrier_needed=yes
-        ;;
-      s390|s390x)
-        AC_MSG_RESULT([s390])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_S390, 1,
-                          [s390 atomic implementation])
-        glib_memory_barrier_needed=no
-        ;;
-      arm*)
-        AC_MSG_RESULT([arm])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 1,
-                          [arm atomic implementation])
-        glib_memory_barrier_needed=no
-        ;;
-      crisv32*|etraxfs*)
-        AC_MSG_RESULT([crisv32])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_CRISV32, 1,
-                          [crisv32 atomic implementation])
-        glib_memory_barrier_needed=no
-        ;;
-      cris*|etrax*)
-        AC_MSG_RESULT([cris])
-        AC_DEFINE_UNQUOTED(G_ATOMIC_CRIS, 1,
-                          [cris atomic implementation])
-        glib_memory_barrier_needed=no
-        ;;
-      *)
-        AC_MSG_RESULT([none])
-        glib_memory_barrier_needed=yes
-        ;;
-    esac
-
-glib_cv_gcc_has_builtin_atomic_operations=no
-if test x"$GCC" = xyes; then
-  AC_MSG_CHECKING([whether GCC supports built-in atomic intrinsics])
-  AC_TRY_LINK([],
-             [int i;
-              __sync_synchronize ();
-              __sync_bool_compare_and_swap (&i, 0, 1);
-              __sync_fetch_and_add (&i, 1);
-             ],
-             [glib_cv_gcc_has_builtin_atomic_operations=yes],
-             [glib_cv_gcc_has_builtin_atomic_operations=no])
-
-  AC_MSG_RESULT($glib_cv_gcc_has_builtin_atomic_operations)
-fi
-AM_CONDITIONAL(HAVE_GCC_BUILTINS_FOR_ATOMIC_OPERATIONS,
-              [test $glib_cv_gcc_has_builtin_atomic_operations = yes])
-
-AC_MSG_CHECKING([for Win32 atomic intrinsics])
-glib_cv_has_win32_atomic_operations=no
-AC_TRY_LINK([],
-       [int i; _InterlockedExchangeAdd (&i, 0);],
-       [glib_cv_has_win32_atomic_operations=yes],
-       [glib_cv_has_win32_atomic_operations=no])
-AC_MSG_RESULT($glib_cv_has_win32_atomic_operations)
-if test "x$glib_cv_has_win32_atomic_operations" = xyes; then
-       AC_DEFINE(HAVE_WIN32_BUILTINS_FOR_ATOMIC_OPERATIONS,1,[Have Win32 atomic intrinsics])
-fi
+dnl We need to decide at configure time if GLib will use real atomic
+dnl operations ("lock free") or emulated ones with a mutex.  This is
+dnl because we must put this information in glibconfig.h so we know if
+dnl it is safe or not to inline using compiler intrinsics directly from
+dnl the header.
+dnl
+dnl We also publish the information via G_ATOMIC_LOCK_FREE in case the
+dnl user is interested in knowing if they can use the atomic ops across
+dnl processes.
+dnl
+dnl We can currently support the atomic ops natively when building GLib
+dnl with recent versions of GCC or MSVC.  MSVC doesn't run ./configure,
+dnl so we skip that case here and define G_ATOMIC_LOCK_FREE exactly when
+dnl we are using GCC.
+dnl
+dnl Note that the atomic ops are only available with GCC on x86 when
+dnl using -march=i486 or higher.  If we detect that the atomic ops are
+dnl not available but would be available given the right flags, we want
+dnl to abort and advise the user to fix their CFLAGS.  It's better to do
+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_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}"
+  CFLAGS="-march=i486"
+  AC_TRY_COMPILE([],
+                 [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
+                 [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
+                 [])
+  CFLAGS="${SAVE_CFLAGS}"
+fi
+
+dnl We need a more robust approach here...
+case $host_cpu in
+  i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
+    glib_memory_barrier_needed=no
+    ;;
+  sparc*|alpha*|powerpc*|ia64)
+    glib_memory_barrier_needed=yes
+    ;;
+  *)
+    glib_memory_barrier_needed=yes
+    ;;
+esac
 
 dnl ************************
 dnl ** Check for futex(2) **
@@ -2724,77 +2477,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@:>@],
-                             [specify whether to use the internal or the
-                              system-supplied PCRE library])])
-
-  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
+# 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_WARN_CFLAGS)
+  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
-  AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
+  # 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
 fi
+AC_SUBST(PCRE_WARN_CFLAGS)
 
 dnl **********************
 dnl *** Win32 API libs ***
@@ -2805,7 +2541,7 @@ case $host in
        G_LIBS_EXTRA="-luser32 -lkernel32"
     ;;
   *-*-mingw*)
-       G_LIBS_EXTRA="-lws2_32 -lole32"
+       G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi"
     ;;
   *)
        G_LIBS_EXTRA=""
@@ -2842,13 +2578,18 @@ 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
+
+  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
 fi
 
 dnl **************************
 dnl *** Checks for gtk-doc ***
 dnl **************************
 
-GTK_DOC_CHECK([1.15])
+GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
 
 AC_ARG_ENABLE(man,
               [AC_HELP_STRING([--enable-man],
@@ -2879,7 +2620,7 @@ dnl
 
 AC_ARG_ENABLE([dtrace],
              [AS_HELP_STRING([--enable-dtrace],
-                              [Enable inclusion of dtrace trace support])])
+                              [include tracing support for dtrace])])
 have_dtrace=no
 AC_MSG_CHECKING([whether to include dtrace tracing support])
 if test "x$enable_dtrace" != xno; then
@@ -2910,7 +2651,7 @@ AM_CONDITIONAL([ENABLE_DTRACE], [test x$have_dtrace = xyes ])
 AC_MSG_CHECKING([whether to include systemtap tracing support])
 AC_ARG_ENABLE([systemtap],
              [AS_HELP_STRING([--enable-systemtap],
-                              [Enable inclusion of systemtap trace support])])
+                              [include tracing support for systemtap])])
 have_systemtap=no
 if test "x$enable_systemtap" != xno -a "x$have_dtrace" = xyes; then
   have_systemtap=yes
@@ -2920,8 +2661,8 @@ AC_MSG_RESULT(${have_systemtap})
 AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$have_systemtap = xyes])
 
 AC_ARG_WITH([tapset-install-dir],
-            [AS_HELP_STRING([--with-tapset-install-dir],
-            [The absolute path where the systemtap tapsets will be installed])],
+            AS_HELP_STRING([--with-tapset-install-dir=DIR],
+                            [path where systemtap tapsets are installed [DATADIR/systemtap/tapset]]),
             [if test "x${withval}" = x; then
               ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"
             else
@@ -2936,7 +2677,7 @@ dnl ************************************
 
 AC_ARG_ENABLE(gcov,
   AS_HELP_STRING([--enable-gcov],
-                [Enable gcov]),
+                [enable coverage testing with gcov]),
   [use_gcov=$enableval], [use_gcov=no])
 
 if test "x$use_gcov" = "xyes"; then
@@ -2987,8 +2728,6 @@ if test "x$use_gcov" = "xyes"; then
     AC_MSG_ERROR([Could not find genhtml from the LTP package])
   fi
 
-  AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov])
-
   dnl Remove all optimization flags from CFLAGS
   changequote({,})
   CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
@@ -3014,8 +2753,8 @@ AC_CONFIG_COMMANDS([glib/glibconfig.h],
  * This is a generated file.  Please modify 'configure.ac'
  */
 
-#ifndef __G_LIBCONFIG_H__
-#define __G_LIBCONFIG_H__
+#ifndef __GLIBCONFIG_H__
+#define __GLIBCONFIG_H__
 
 #include <glib/gmacros.h>
 
@@ -3266,60 +3005,19 @@ _______EOF
 #endif 
 _______EOF
 
-
        echo >>$outfile
-       if test x$g_mutex_has_default = xyes; then
-               cat >>$outfile <<_______EOF
-$g_enable_threads_def G_THREADS_ENABLED
-#define G_THREADS_IMPL_$g_threads_impl_def
-typedef struct _GStaticMutex GStaticMutex;
-struct _GStaticMutex
-{
-  struct _GMutex *runtime_mutex;
-  union {
-    char   pad[[$g_mutex_sizeof]];
-    double dummy_double;
-    void  *dummy_pointer;
-    long   dummy_long;
-  } static_mutex;
-};
-#define        G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
-#define        g_static_mutex_get_mutex(mutex) \\
-  (g_thread_use_default_impl ? ((GMutex*)(gpointer) ((mutex)->static_mutex.pad)) : \\
-   g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
-_______EOF
-       else
-               cat >>$outfile <<_______EOF
-$g_enable_threads_def G_THREADS_ENABLED
+       cat >>$outfile <<_______EOF
+#define G_THREADS_ENABLED
 #define G_THREADS_IMPL_$g_threads_impl_def
-typedef struct _GMutex* GStaticMutex;
-#define G_STATIC_MUTEX_INIT NULL
-#define g_static_mutex_get_mutex(mutex) \\
-  (g_static_mutex_get_mutex_impl_shortcut (mutex))
 _______EOF
-       fi
 
-       cat >>$outfile <<_______EOF
-/* This represents a system thread as used by the implementation. An
- * alien implementaion, as loaded by g_thread_init can only count on
- * "sizeof (gpointer)" bytes to store their info. We however need more
- * for some of our native implementations. */
-typedef union _GSystemThread GSystemThread;
-union _GSystemThread
-{
-  char   data[[$g_system_thread_sizeof]];
-  double dummy_double;
-  void  *dummy_pointer;
-  long   dummy_long;
-};
-_______EOF
        if test x"$g_memory_barrier_needed" != xno; then
          echo >>$outfile
          echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
        fi
-       if test x"$g_gcc_atomic_ops" != xno; then
+       if test x"$g_atomic_lock_free" = xyes; then
           echo >>$outfile
-          echo "#define G_ATOMIC_OP_USE_GCC_BUILTINS 1" >>$outfile
+          echo "#define G_ATOMIC_LOCK_FREE" >>$outfile
         fi
        echo >>$outfile
        g_bit_sizes="16 32 64"
@@ -3356,13 +3054,6 @@ _______EOF
 
 #define G_MODULE_SUFFIX "$g_module_suffix"
 
-/* A GPid is an abstraction for a process "handle". It is *not* an
- * abstraction for a process identifier in general. GPid is used in
- * GLib only for descendant processes spawned with the g_spawn*
- * functions. On POSIX there is no "process handle" concept as such,
- * but on Windows a GPid is a handle to a process, a kind of pointer,
- * not a process identifier.
- */
 typedef $g_pid_type GPid;
 
 #define GLIB_SYSDEF_AF_UNIX $g_af_unix
@@ -3375,7 +3066,7 @@ typedef $g_pid_type GPid;
 
 G_END_DECLS
 
-#endif /* GLIBCONFIG_H */
+#endif /* __GLIBCONFIG_H__ */
 _______EOF
 
 
@@ -3552,8 +3243,8 @@ $ac_cv_sizeof_int)
   gintptr_modifier='""'
   gintptr_format='"i"'
   guintptr_format='"u"'
-  glib_gpi_cast=''
-  glib_gpui_cast=''
+  glib_gpi_cast='(gint)'
+  glib_gpui_cast='(guint)'
   ;;
 $ac_cv_sizeof_long)
   glib_intptr_type_define=long
@@ -3672,7 +3363,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
 
@@ -3684,18 +3385,9 @@ g_stack_grows=$glib_cv_stack_grows
 
 g_have_eilseq=$have_eilseq
 
-case x$have_threads in
-xno)   g_enable_threads_def="#undef";;
-*)     g_enable_threads_def="#define";;
-esac
-
 g_threads_impl_def=$g_threads_impl
 
-g_mutex_has_default="$mutex_has_default"
-g_mutex_sizeof="$glib_cv_sizeof_gmutex"
-g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
-g_mutex_contents="$glib_cv_byte_contents_gmutex"
-
+g_atomic_lock_free="$glib_cv_g_atomic_lock_free"
 g_memory_barrier_needed="$glib_memory_barrier_needed"
 g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations"
 
@@ -3726,15 +3418,50 @@ 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_ALIGNOF([guint32], [AC_INCLUDES_DEFAULT
+typedef unsigned $gint32 guint32;])
+AC_CHECK_ALIGNOF([guint64], [AC_INCLUDES_DEFAULT
+typedef unsigned $gint64 guint64;])
+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)
+if test x$enable_modular_tests = xyes; then
+   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)
+fi
 AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
 
 dnl
@@ -3755,7 +3482,7 @@ AC_ARG_ENABLE(Bsymbolic,
                            enable_Bsymbolic=no)
                LDFLAGS="${SAVED_LDFLAGS}"])
 
-if test "x${enable_Bsymbolic}" == "xyes"; then
+if test "x${enable_Bsymbolic}" = "xyes"; then
   GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions
 fi
 
@@ -3802,21 +3529,14 @@ AC_SUBST(gio_INCLUDES)
 
 AC_CONFIG_FILES([
 glib-2.0.pc
-glib-2.0-uninstalled.pc
 gmodule-2.0.pc
 gmodule-export-2.0.pc
 gmodule-no-export-2.0.pc
-gmodule-2.0-uninstalled.pc
-gmodule-no-export-2.0-uninstalled.pc
 gthread-2.0.pc
-gthread-2.0-uninstalled.pc
 gobject-2.0.pc
-gobject-2.0-uninstalled.pc
 gio-2.0.pc
 gio-unix-2.0.pc
 gio-windows-2.0.pc
-gio-2.0-uninstalled.pc
-gio-unix-2.0-uninstalled.pc
 glib-zip
 glib-gettextize
 Makefile
@@ -3839,13 +3559,11 @@ gobject/gobject.stp
 gobject/glib-mkenums
 gobject/tests/Makefile
 gthread/Makefile
-gthread/tests/Makefile
 gio/Makefile
 gio/gdbus-2.0/codegen/Makefile
 gio/gdbus-2.0/codegen/config.py
 gio/xdgmime/Makefile
 gio/inotify/Makefile
-gio/libasyncns/Makefile
 gio/fen/Makefile
 gio/fam/Makefile
 gio/win32/Makefile