build: Add --disable-modular-tests build option
[platform/upstream/glib.git] / configure.ac
index 78d6d31..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], [31])
-m4_define([glib_micro_version], [7])
-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],
@@ -171,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)
@@ -206,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])
@@ -229,6 +247,11 @@ 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
@@ -243,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
 
@@ -283,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"
@@ -561,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],[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)
@@ -623,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
@@ -670,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
@@ -1074,7 +1057,7 @@ 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
@@ -1116,6 +1099,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)
@@ -1308,24 +1295,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 ****************************************
@@ -1545,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([
@@ -1561,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;
@@ -1569,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
@@ -1822,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 ****************************************
@@ -1869,18 +1883,13 @@ dnl ***********************
 AC_ARG_WITH(threads,
            [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])
+           [],
+           [with_threads=yes])
 
 dnl error and warning message
 dnl *************************
 
-THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
-                computer."
+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
@@ -1888,10 +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."
+                  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
@@ -1900,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 
@@ -1920,9 +1919,10 @@ AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
 dnl determination of thread implementation
 dnl ***************************************
 
+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"
@@ -1942,21 +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
+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; then
-       AC_MSG_RESULT(none available)
+        AC_MSG_RESULT(none available)
         AC_MSG_ERROR($THREAD_NO_IMPLEMENTATION)
 else
-       AC_MSG_RESULT($have_threads)
+        AC_MSG_RESULT($have_threads)
 fi
 
 
@@ -1982,18 +1980,6 @@ 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" = xposix; then
   # First we test for posix, whether -pthread or -pthreads do the trick as 
   # both CPPFLAG and LIBS. 
@@ -2151,34 +2137,6 @@ 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"
          g_threads_impl="POSIX"
          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
           CPPFLAGS="$glib_save_CPPFLAGS"
@@ -2296,78 +2254,29 @@ int main () {
 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()"
-       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)
+        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"
@@ -2381,11 +2290,6 @@ if test "$ac_cv_func_localtime_r" != "yes"; then
        AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
 fi
 
-if test x"$glib_cv_sizeof_system_thread" = x; then
-   # use a pointer as a fallback.
-   GLIB_SIZEOF(,void *, system_thread)
-fi
-
 #
 # Hack to deal with:
 # 
@@ -2415,10 +2319,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 ************************
@@ -2448,12 +2350,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}"
@@ -2575,76 +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@:>@],
-                             [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
+# 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 ***
@@ -2655,7 +2541,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=""
@@ -2692,6 +2578,11 @@ 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 **************************
@@ -2837,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'`
@@ -2864,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>
 
@@ -3165,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
@@ -3184,7 +3066,7 @@ typedef $g_pid_type GPid;
 
 G_END_DECLS
 
-#endif /* GLIBCONFIG_H */
+#endif /* __GLIBCONFIG_H__ */
 _______EOF
 
 
@@ -3481,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
 
@@ -3495,8 +3387,6 @@ g_have_eilseq=$have_eilseq
 
 g_threads_impl_def=$g_threads_impl
 
-g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
-
 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"
@@ -3528,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
@@ -3557,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