grand: restructure a bit
[platform/upstream/glib.git] / configure.ac
index f300fa0..9712f80 100644 (file)
@@ -30,8 +30,8 @@ m4_define(glib_configure_ac)
 # <mclasen> on the unstable (ie master), interface age = 0
 
 m4_define([glib_major_version], [2])
-m4_define([glib_minor_version], [33])
-m4_define([glib_micro_version], [9])
+m4_define([glib_minor_version], [39])
+m4_define([glib_micro_version], [1])
 m4_define([glib_interface_age], [0])
 m4_define([glib_binary_age],
           [m4_eval(100 * glib_minor_version + glib_micro_version)])
@@ -56,14 +56,14 @@ m4_define([glib_debug_default],
 AC_INIT(glib, [glib_version],
         [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
 
-AC_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_SRCDIR([glib/glib.h])
 AC_CONFIG_MACRO_DIR([m4macros])
 
 # Save this value here, since automake will set cflags later
 cflags_set=${CFLAGS+set}
 
-AM_INIT_AUTOMAKE([1.11 no-define no-dist-gzip dist-xz tar-ustar])
+AM_INIT_AUTOMAKE([1.11 -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
 AM_MAINTAINER_MODE([enable])
 
 # Support silent build rules. Disable
@@ -111,6 +111,7 @@ AC_SUBST(LT_CURRENT_MINUS_AGE)
 dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_CPP
+AC_USE_SYSTEM_EXTENSIONS
 
 AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
 
@@ -150,6 +151,8 @@ case "$host" in
       LIB_EXE_MACHINE_FLAG=X64
       ;;
     esac
+
+    AC_DEFINE([_WIN32_WINNT], [0x0501], [Target the Windows XP API])
     ;;
   *)
     glib_native_win32=no
@@ -164,6 +167,17 @@ esac
 
 AC_MSG_RESULT([$glib_native_win32])
 
+AC_MSG_CHECKING([for the Android])
+case $host in
+  *android*)
+    glib_native_android="yes"
+    ;;
+  *)
+    glib_native_android="no"
+    ;;
+esac
+AC_MSG_RESULT([$glib_native_android])
+
 AC_SUBST(LIB_EXE_MACHINE_FLAG)
 
 glib_have_carbon=no
@@ -203,20 +217,11 @@ AS_IF([test "$glib_native_win32" = "yes"], [
     AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
   fi
   AC_CHECK_TOOL(RANLIB, ranlib, :)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, :)
   AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
 ])
 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
 
-if test "$glib_native_win32" != yes; then
-    # libtool option to control which symbols are exported
-    # right now, symbols starting with _ are not exported
-    LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
-else
-    # We currently use .def files on Windows
-    LIBTOOL_EXPORT_OPTIONS=
-fi
-AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
-
 AS_IF([test "x$glib_have_carbon" = "xyes"], [
   AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
   LDFLAGS="$LDFLAGS -Wl,-framework,Carbon"
@@ -227,11 +232,6 @@ if test "x$glib_have_cocoa" = "xyes"; then
   LDFLAGS="$LDFLAGS -Wl,-framework,Foundation"
 fi
 
-gl_GLIBC21
-AS_IF([test "x$GLIBC21" = "xyes"], [
-  AC_DEFINE([_GNU_SOURCE], 1, [Make all glibc extensions visible])
-])
-
 dnl declare --enable-* args and collect ac_help strings
 AC_ARG_ENABLE(debug,
               AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
@@ -250,11 +250,8 @@ AC_ARG_ENABLE(rebuilds,
               [AS_HELP_STRING([--disable-rebuilds],
                               [disable all source autogeneration rules])],,
               [enable_rebuilds=yes])
-AC_ARG_ENABLE(modular_tests,
-              AS_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)
+
+GLIB_TESTS
 
 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
 AS_IF([test "x$enable_gc_friendly" = "xyes"], [
@@ -291,7 +288,6 @@ AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
 AC_LANG_RESTORE
 
-AM_PROG_CC_STDC
 AM_PROG_CC_C_O
 AC_PROG_INSTALL
 
@@ -379,7 +375,16 @@ if test "x$PERL_PATH" = x ; then
 fi
 AC_SUBST(PERL_PATH)
 
-# Need suitable python path for greport
+# option to specify python interpreter to use; this just sets $PYTHON, so that
+# we will fallback to reading $PYTHON if --with-python is not given, and
+# python.m4 will get the expected input
+AC_ARG_WITH(python,
+            AS_HELP_STRING([--with-python=PATH],
+                           [Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
+            [PYTHON="$withval"], [])
+if test x"$PYTHON" = xyes; then
+  AC_MSG_ERROR([--with-python option requires a path or program argument])
+fi
 AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
 
 
@@ -429,33 +434,6 @@ AS_IF([ test x"$glib_native_win32" = xyes], [
   fi
 ])
 
-AC_ARG_ENABLE(iconv-cache, 
-              [AS_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
-                              [cache iconv descriptors [default=auto]])],,
-              [enable_iconv_cache=auto])
-
-AC_MSG_CHECKING([whether to cache iconv descriptors])
-case $enable_iconv_cache in
-  auto)
-    if test $ac_cv_gnu_library_2_1 = yes; then
-      enable_iconv_cache=no
-    else 
-      enable_iconv_cache=yes
-    fi
-  ;;
-  yes|no) 
-  ;;
-  *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
-  ;;
-esac
-
-if test $enable_iconv_cache = yes; then
-   AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
-fi
-
-AC_MSG_RESULT($enable_iconv_cache)
-
-
 dnl
 dnl zlib support
 dnl
@@ -527,13 +505,6 @@ dnl when using libtool 2.x create libtool early, because it's used in configure
 m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
 
 
-if test "x$GCC" = "xyes"; then
-  case " $CFLAGS " in
-  *[[\ \       ]]-Wall[[\ \    ]]*) ;;
-  *) CFLAGS="$CFLAGS -Wall" ;;
-  esac
-fi
-
 AS_IF([test "$glib_native_win32" = "yes"], [
   if test x$enable_static = xyes -a x$enable_shared = xyes; then
     AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
@@ -586,9 +557,20 @@ AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
 # Checks for library functions.
 AC_FUNC_VPRINTF
 AC_FUNC_ALLOCA
-AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2)
+AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid)
 AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
 
+AC_CACHE_CHECK([for __libc_enable_secure], glib_cv_have_libc_enable_secure,
+  [AC_TRY_LINK([#include <unistd.h>
+    extern int __libc_enable_secure;],
+    [return __libc_enable_secure;],
+   glib_cv_have_libc_enable_secure=yes,
+   glib_cv_have_libc_enable_secure=no)])
+AS_IF([test x$glib_cv_have_libc_enable_secure = xyes], [
+   AC_DEFINE(HAVE_LIBC_ENABLE_SECURE, 1,
+     [Define if you have the __libc_enable_secure variable (GNU libc, eglibc)])
+])
+
 AC_CHECK_SIZEOF(char)
 AC_CHECK_SIZEOF(short)
 AC_CHECK_SIZEOF(long)
@@ -656,33 +638,6 @@ AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8],
 
 AC_C_CONST
 
-dnl ok, here we try to check whether the systems prototypes for
-dnl malloc and friends actually match the prototypes provided
-dnl by gmem.h (keep in sync). i currently only know how to check
-dnl this reliably with gcc (-Werror), improvements for other
-dnl compilers are apprechiated.
-SANE_MALLOC_PROTOS=no
-AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
-glib_save_CFLAGS=$CFLAGS
-AS_IF([test "x$GCC" = "xyes"], [
-  CFLAGS="$CFLAGS -Werror"
-  AC_TRY_COMPILE([#include <stdlib.h>], [
-    void* (*my_calloc_p)  (size_t, size_t) = calloc;
-    void* (*my_malloc_p)  (size_t)         = malloc;
-    void  (*my_free_p)    (void*)          = free;
-    void* (*my_realloc_p) (void*, size_t)  = realloc;
-    my_calloc_p = 0;
-    my_malloc_p = 0;
-    my_free_p = 0;
-    my_realloc_p = 0;
-  ],
-    AC_DEFINE(SANE_MALLOC_PROTOS, 1, 
-      [Define if you have correct malloc prototypes])
-    SANE_MALLOC_PROTOS=yes)
-])
-AC_MSG_RESULT($SANE_MALLOC_PROTOS)
-CFLAGS=$glib_save_CFLAGS
-
 dnl
 dnl check in which direction the stack grows
 dnl
@@ -841,7 +796,7 @@ __attribute__ ((visibility ("default")))
      f_default (void)
 {
 }
-int main (int argc, char **argv)
+int main (void)
 {
        f_hidden();
        f_internal();
@@ -894,6 +849,7 @@ AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
  #include <sys/param.h>
  #endif
 ])
+AC_CHECK_FUNCS(sysctlbyname)
 
 AC_CHECK_HEADERS([xlocale.h])
 
@@ -922,11 +878,12 @@ AC_STRUCT_DIRENT_D_TYPE
 AM_LANGINFO_CODESET
 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
 AC_CHECK_FUNCS(setlocale)
+gl_GLIBC21
 
 # check additional type sizes
 AC_CHECK_SIZEOF(size_t)
 
-dnl Try to figure out whether gsize, gssize should be long or int
+dnl Try to figure out whether gsize should be long or int
 AC_MSG_CHECKING([for the appropriate definition for size_t])
 
 case $ac_cv_sizeof_size_t in
@@ -983,10 +940,93 @@ int main ()
 
 AC_MSG_RESULT(unsigned $glib_size_type)
 
+AC_CHECK_SIZEOF(ssize_t)
+
+dnl Try to figure out whether gssize should be long or int
+AC_MSG_CHECKING([for the appropriate definition for ssize_t])
+
+case $ac_cv_sizeof_ssize_t in
+  $ac_cv_sizeof_short) 
+      glib_ssize_type=short
+      ;;
+  $ac_cv_sizeof_int) 
+      glib_ssize_type=int
+      ;;
+  $ac_cv_sizeof_long) 
+      glib_ssize_type=long
+      ;;
+  $ac_cv_sizeof_long_long)
+      glib_ssize_type='long long'
+      ;;
+  $ac_cv_sizeof__int64)
+      glib_ssize_type='__int64'
+      ;;
+  *)  AC_MSG_ERROR([No type matching ssize_t in size])
+      ;;
+esac
+
+dnl If int/long are the same size, we see which one produces
+dnl warnings when used in the location as ssize_t. (This matters
+dnl on Android where ssize_t is long and size_t is unsigned int)
+dnl
+AS_IF([test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_int &&
+       test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_long], [
+  GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
+#if defined(_AIX) && !defined(__GNUC__)
+#pragma options langlvl=stdc89
+#endif
+#include <stddef.h>
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+int main ()
+{
+  ssize_t s = 1;
+  int *size_int = &s;
+  return (int)*size_int;
+}
+    ]])],glib_ssize_type=int,
+      [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
+#if defined(_AIX) && !defined(__GNUC__)
+#pragma options langlvl=stdc89
+#endif
+#include <stddef.h> 
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+int main ()
+{
+   ssize_t s = 1;
+   long *size_long = &s;
+   return (int)*size_long;
+}
+        ]])],glib_ssize_type=long)])
+])
+
+AC_MSG_RESULT($glib_ssize_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 getfsstat getvfsstat)
+AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid getresuid)
+AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate)
 # Check for high-resolution sleep functions
 AC_CHECK_FUNCS(splice)
 AC_CHECK_FUNCS(prlimit)
@@ -1056,10 +1096,31 @@ if $glib_failed ; then
   AC_MSG_ERROR([Could not determine values for MSG_* constants])
 fi
 
-AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex)
-AC_CHECK_HEADERS([netdb.h wspiapi.h arpa/nameser_compat.h])
+AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex if_indextoname)
+
+AS_IF([test $glib_native_win32 = yes], [
+  # <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
+  # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
+  # they aren't present at run-time (on Windows 2000).
+  AC_CHECK_HEADER([wspiapi.h], [WSPIAPI_INCLUDE="#include <wspiapi.h>"])
+  AC_SUBST(WSPIAPI_INCLUDE)
+], [
+  # Android does not have C_IN in public headers, we define it wherever necessary
+  AS_IF([test $glib_native_android != yes], [
+    AC_MSG_CHECKING([if arpa/nameser_compat.h is needed])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+                                        #include <arpa/nameser.h>],
+                                       [int qclass = C_IN;])],
+                      [AC_MSG_RESULT([no])],
+                      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+                                                           #include <arpa/nameser.h>
+                                                           #include <arpa/nameser_compat.h>],
+                                                          [int qclass = C_IN;])],
+                                         [AC_MSG_RESULT([yes])
+                                          NAMESER_COMPAT_INCLUDE="#include <arpa/nameser_compat.h>"],
+                                         [AC_MSG_ERROR([could not compile test program either way])])])])
+  AC_SUBST(NAMESER_COMPAT_INCLUDE)
 
-AS_IF([test $glib_native_win32 = no], [
   # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
   NETWORK_LIBS=""
   AC_MSG_CHECKING([for res_query])
@@ -1090,6 +1151,19 @@ AS_IF([test $glib_native_win32 = no], [
   AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket,
                                        [NETWORK_LIBS="-lsocket $NETWORK_LIBS"],
                                        [AC_MSG_ERROR(Could not find socket())]))
+  save_libs="$LIBS"
+  LIBS="$LIBS $NETWORK_LIBS"
+  AC_MSG_CHECKING([for res_init])
+  AC_TRY_LINK([#include <sys/types.h>
+              #include <netinet/in.h>
+              #include <arpa/nameser.h>
+              #include <resolv.h>
+              ],[
+              res_init();
+              ],[AC_MSG_RESULT([yes])
+                AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if you have the 'res_init' function.])
+             ],[AC_MSG_RESULT([no])])
+  LIBS="$save_libs"
 ])
 AC_SUBST(NETWORK_LIBS)
 
@@ -1151,6 +1225,18 @@ AS_IF([test "$ac_cv_func_statfs" = yes], [
       AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
 ])
 
+dnl
+dnl open takes O_DIRECTORY as an option
+dnl
+AC_MSG_CHECKING([open() option O_DIRECTORY])
+AC_TRY_COMPILE([#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>],
+[open(0, O_DIRECTORY, 0);],[
+       AC_MSG_RESULT([yes])
+       AC_DEFINE(HAVE_OPEN_O_DIRECTORY, 1, [open option O_DIRECTORY])],[
+       AC_MSG_RESULT([no])])
+
 #
 # Check whether to use an included printf
 #
@@ -1208,7 +1294,7 @@ AC_FUNC_SNPRINTF_C99
 
 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
 # The check is borrowed from the PERL Configure script.
-AS_IF([test "$ac_cv_func_memmove" != "yes"],
+AS_IF([test "$ac_cv_func_memmove" != "yes"], [
   AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
     glib_cv_working_bcopy,[AC_TRY_RUN([
       int main() {
@@ -1251,24 +1337,12 @@ AS_IF([test "$gtk_ok" = "yes"], [
     fi
 ])
 
-dnl *** check for sane realloc() ***
-AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
-        AC_TRY_RUN([#include <stdlib.h>
-        int main() {
-          return realloc (0, sizeof (int)) == 0;
-        }],
-        [glib_cv_sane_realloc=yes],
-        [glib_cv_sane_realloc=no],
-       [glib_cv_sane_realloc=yes])
-])
-AS_IF([test x$glib_cv_sane_realloc = xyes], [
-  AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
-])
-
 dnl Check for nl_langinfo and CODESET
+AC_LANG_SAVE
+AC_LANG_C
 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
-        AC_TRY_COMPILE([#include <langinfo.h>],
-                [char *codeset = nl_langinfo (CODESET);],
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
+                       [char *codeset = nl_langinfo (CODESET);])],
                 [glib_cv_langinfo_codeset=yes],
                 [glib_cv_langinfo_codeset=no])])
 if test x$glib_cv_langinfo_codeset = xyes; then
@@ -1277,8 +1351,8 @@ fi
 
 dnl Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
 AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
-        AC_TRY_COMPILE([#include <langinfo.h>],
-                [char *str;
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
+                 [char *str;
                  str = nl_langinfo (PM_STR);
                  str = nl_langinfo (D_T_FMT);
                  str = nl_langinfo (D_FMT);
@@ -1287,7 +1361,7 @@ AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
                  str = nl_langinfo (MON_1);
                  str = nl_langinfo (ABMON_12);
                  str = nl_langinfo (DAY_1);
-                 str = nl_langinfo (ABDAY_7);],
+                 str = nl_langinfo (ABDAY_7);])],
                 [glib_cv_langinfo_time=yes],
                 [glib_cv_langinfo_time=no])])
 if test x$glib_cv_langinfo_time = xyes; then
@@ -1296,7 +1370,7 @@ 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>],
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
                 [char *str;
                  str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
                  str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
@@ -1307,12 +1381,13 @@ AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)], glib_cv_langinfo_outd
                  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);],
+                 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
+AC_LANG_RESTORE
 
 dnl ****************************************
 dnl *** posix_memalign                   ***
@@ -1709,6 +1784,17 @@ AC_CHECK_HEADERS([sys/inotify.h],
 
 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
 
+dnl ****************************
+dnl ** Check for kqueue (GIO) **
+dnl ****************************
+kqueue_support=no
+AC_CHECK_HEADERS([sys/event.h],
+[
+       AC_CHECK_FUNCS(kqueue kevent, [kqueue_support=yes])
+])
+
+AM_CONDITIONAL(HAVE_KQUEUE, [test "$kqueue_support" = "yes"])
+
 dnl *********************************
 dnl ** Check for Solaris FEN (GIO) **
 dnl *********************************
@@ -2138,14 +2224,20 @@ AS_IF([test x$have_threads = xposix], [
          ])
 
          g_threads_impl="POSIX"
+          AC_DEFINE([THREADS_POSIX], [1], [Use pthreads])
          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
           CPPFLAGS="$glib_save_CPPFLAGS"
 ], [test x$have_threads = xwin32], [
+           AC_DEFINE([THREADS_WIN32], [1], [Use w32 threads])
           g_threads_impl="WIN32"
 ], [
+           AC_DEFINE([THREADS_NONE], [1], [Use no threads])
           g_threads_impl="NONE"
            G_THREAD_LIBS=error
 ])
+AM_CONDITIONAL(THREADS_POSIX, [test "$g_threads_impl" = "POSIX"])
+AM_CONDITIONAL(THREADS_WIN32, [test "$g_threads_impl" = "WIN32"])
+AM_CONDITIONAL(THREADS_NONE, [test "$g_threads_impl" = "NONE"])
 
 if test "x$G_THREAD_LIBS" = xerror; then
         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
@@ -2273,6 +2365,24 @@ AS_IF([ test x"$have_threads" = xposix], [
              AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK,1,
                 [Have function pthread_condattr_setclock])],
             [AC_MSG_RESULT(no)])
+        AC_MSG_CHECKING(for pthread_cond_timedwait_monotonic)
+        AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+                [#include <pthread.h>],
+                [pthread_cond_timedwait_monotonic(NULL, NULL, NULL)])],
+            [AC_MSG_RESULT(yes)
+             AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC,1,
+                [Have function pthread_cond_timedwait_monotonic])],
+            [AC_MSG_RESULT(no)])
+        AC_MSG_CHECKING(for pthread_cond_timedwait_monotonic_np)
+        AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+                [#include <pthread.h>],
+                [pthread_cond_timedwait_monotonic_np(NULL, NULL, NULL)])],
+            [AC_MSG_RESULT(yes)
+             AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC_NP,1,
+                [Have function pthread_cond_timedwait_monotonic_np])],
+            [AC_MSG_RESULT(no)])
         CPPFLAGS="$glib_save_CPPFLAGS"
 ])
 
@@ -2295,6 +2405,9 @@ fi
 #  b) FreeBSD doesn't do this either.
 #
 case $host in
+  *android*)
+    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
+    ;;
   *-*-freebsd*|*-*-linux*)
     G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
     ;;
@@ -2337,7 +2450,7 @@ 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 we are using GCC (and not mingw*).
 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
@@ -2349,20 +2462,44 @@ 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
+  case $host in
+    *-*-mingw*)
+      glib_cv_g_atomic_lock_free=yes
+      ;;
+    *)
+      AC_TRY_LINK([],
+                     [volatile int atomic = 2;\
+                      __sync_bool_compare_and_swap (&atomic, 2, 3);],
+                     [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_LINK([],
+                       [volatile int atomic = 2;\
+                        __sync_bool_compare_and_swap (&atomic, 2, 3);],
+                       [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
+                       [])
+        CFLAGS="${SAVE_CFLAGS}"
+      fi
+      ;;
+  esac])
+
+
+case $host in
+  *-*-mingw*)
+    ;;
+  *)
+    # Some compilers support atomic operations but do not define
+    # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
+    if test x"$glib_cv_g_atomic_lock_free" = xyes; then
+      AC_TRY_LINK([],
+                     [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
+                     [],
+                     [AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
+    fi
+    ;;
+ esac
 
 dnl We need a more robust approach here...
 case $host_cpu in
@@ -2565,7 +2702,7 @@ dnl ******************************************************************
 
 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
 
-AS_IF([ test $cross_compiling = yes && test x$enable_modular_tests = xyes], [
+AS_IF([ test $cross_compiling = yes ], [
   AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
   if test x$GLIB_GENMARSHAL = xno; then
     AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
@@ -2724,7 +2861,7 @@ AS_IF([ test "x$use_gcov" = "xyes"], [
     AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
   fi
 
-  ltp_version_list="1.6 1.7 1.8 1.9"
+  ltp_version_list="1.6 1.7 1.8 1.9 1.10"
   AC_CHECK_PROG(LTP, lcov, lcov)
   AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
 
@@ -2889,19 +3026,21 @@ _______EOF
 #define GLIB_SIZEOF_VOID_P $glib_void_p
 #define GLIB_SIZEOF_LONG   $glib_long
 #define GLIB_SIZEOF_SIZE_T $glib_size_t
+#define GLIB_SIZEOF_SSIZE_T $glib_ssize_t
 
 _______EOF
 
         cat >>$outfile <<_______EOF
-typedef signed $glib_size_type_define gssize;
+typedef signed $glib_ssize_type_define gssize;
 typedef unsigned $glib_size_type_define gsize;
 #define G_GSIZE_MODIFIER $gsize_modifier
-#define G_GSSIZE_FORMAT $gssize_format
+#define G_GSSIZE_MODIFIER $gssize_modifier
 #define G_GSIZE_FORMAT $gsize_format
+#define G_GSSIZE_FORMAT $gssize_format
 
 #define G_MAXSIZE      G_MAXU$glib_msize_type
-#define G_MINSSIZE     G_MIN$glib_msize_type
-#define G_MAXSSIZE     G_MAX$glib_msize_type
+#define G_MINSSIZE     G_MIN$glib_mssize_type
+#define G_MAXSSIZE     G_MAX$glib_mssize_type
 
 typedef gint64 goffset;
 #define G_MINOFFSET    G_MININT64
@@ -3067,9 +3206,9 @@ _______EOF
 #define GINT_TO_BE(val)                ((gint) GINT${gintbits}_TO_BE (val))
 #define GUINT_TO_BE(val)       ((guint) GUINT${gintbits}_TO_BE (val))
 #define GSIZE_TO_LE(val)       ((gsize) GUINT${gsizebits}_TO_LE (val))
-#define GSSIZE_TO_LE(val)      ((gssize) GINT${gsizebits}_TO_LE (val))
+#define GSSIZE_TO_LE(val)      ((gssize) GINT${gssizebits}_TO_LE (val))
 #define GSIZE_TO_BE(val)       ((gsize) GUINT${gsizebits}_TO_BE (val))
-#define GSSIZE_TO_BE(val)      ((gssize) GINT${gsizebits}_TO_BE (val))
+#define GSSIZE_TO_BE(val)      ((gssize) GINT${gssizebits}_TO_BE (val))
 #define G_BYTE_ORDER $g_byte_order
 
 #define GLIB_SYSDEF_POLLIN =$g_pollin
@@ -3229,7 +3368,9 @@ $ac_cv_sizeof___int64)
   ;;
 esac
 glib_size_t=$ac_cv_sizeof_size_t
+glib_ssize_t=$ac_cv_sizeof_ssize_t
 glib_size_type_define="$glib_size_type"
+glib_ssize_type_define="$glib_ssize_type"
 glib_void_p=$ac_cv_sizeof_void_p
 glib_long=$ac_cv_sizeof_long
 
@@ -3237,32 +3378,52 @@ case "$glib_size_type" in
 short)
   gsize_modifier='"h"'
   gsize_format='"hu"'
-  gssize_format='"hi"'
   glib_msize_type='SHRT'
   ;;
 int)
   gsize_modifier='""'
   gsize_format='"u"'
-  gssize_format='"i"'
   glib_msize_type='INT'
   ;;
 long)
   gsize_modifier='"l"'
   gsize_format='"lu"'
-  gssize_format='"li"'
   glib_msize_type='LONG'
   ;;
 "long long"|__int64)
   gsize_modifier='"I64"'
   gsize_format='"I64u"'
-  gssize_format='"I64i"'
   glib_msize_type='INT64'
   ;;
 esac
 
+case "$glib_ssize_type" in
+short)
+  gssize_modifier='"h"'
+  gssize_format='"hi"'
+  glib_mssize_type='SHRT'
+  ;;
+int)
+  gssize_modifier='""'
+  gssize_format='"i"'
+  glib_mssize_type='INT'
+  ;;
+long)
+  gssize_modifier='"l"'
+  gssize_format='"li"'
+  glib_mssize_type='LONG'
+  ;;
+"long long"|__int64)
+  gssize_modifier='"I64"'
+  gssize_format='"I64i"'
+  glib_mssize_type='INT64'
+  ;;
+esac
+
 gintbits=`expr $ac_cv_sizeof_int \* 8`
 glongbits=`expr $ac_cv_sizeof_long \* 8`
 gsizebits=`expr $ac_cv_sizeof_size_t \* 8`
+gssizebits=`expr $ac_cv_sizeof_ssize_t \* 8`
 
 case $ac_cv_sizeof_void_p in
 $ac_cv_sizeof_int)
@@ -3484,14 +3645,12 @@ 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
-AS_IF([ test x$enable_modular_tests = xyes], [
-   PKG_CHECK_MODULES(DBUS1,
-                     dbus-1 >= 1.2.14,
-                     [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
-                     have_dbus1=no)
-   AC_SUBST(DBUS1_CFLAGS)
-   AC_SUBST(DBUS1_LIBS)
-])
+PKG_CHECK_MODULES(DBUS1,
+     dbus-1 >= 1.2.14,
+     [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
+     have_dbus1=no)
+AC_SUBST(DBUS1_CFLAGS)
+AC_SUBST(DBUS1_LIBS)
 AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
 
 AC_CHECK_PROGS([DBUS_DAEMON], [dbus-daemon])
@@ -3521,6 +3680,54 @@ fi
 
 AC_SUBST(GLIB_LINK_FLAGS)
 
+dnl
+dnl Check for -fvisibility=hidden to determine if we can do GNU-style
+dnl visibility attributes for symbol export control
+dnl
+GLIB_HIDDEN_VISIBILITY_CFLAGS=""
+case "$host" in
+  *-*-mingw*)
+    dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
+    AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
+              [defines how to decorate public symbols while building])
+    CFLAGS="${CFLAGS} -fvisibility=hidden"
+    ;;
+  *)
+    dnl on other compilers, check if we can do -fvisibility=hidden
+    SAVED_CFLAGS="${CFLAGS}"
+    CFLAGS="-fvisibility=hidden"
+    AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+    AC_TRY_COMPILE([], [int main (void) { return 0; }],
+                   AC_MSG_RESULT(yes)
+                   enable_fvisibility_hidden=yes,
+                   AC_MSG_RESULT(no)
+                   enable_fvisibility_hidden=no)
+    CFLAGS="${SAVED_CFLAGS}"
+
+    AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
+      AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) extern],
+                [defines how to decorate public symbols while building])
+      GLIB_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+    ])
+    ;;
+esac
+AC_SUBST(GLIB_HIDDEN_VISIBILITY_CFLAGS)
+
+dnl Compiler flags; macro originates from systemd
+dnl See https://bugzilla.gnome.org/show_bug.cgi?id=608953
+AC_ARG_ENABLE(compile-warnings,
+              [AS_HELP_STRING([--disable-compile-warnings],
+                              [Don't use builtin compiler warnings])],,
+                             enable_compile_warnings=yes)
+AS_IF([test "x$enable_compile_warnings" = xyes], [
+  CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
+   -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
+   -Werror=missing-prototypes -Werror=implicit-function-declaration \
+   -Werror=pointer-arith -Werror=init-self -Werror=format-security \
+   -Werror=format=2 -Werror=missing-include-dirs])
+])
+AC_SUBST(GLIB_WARN_CFLAGS)
+
 #
 # Define variables corresponding to the correct include paths to use for
 # in-tree building.
@@ -3538,14 +3745,9 @@ AC_SUBST(config_h_INCLUDES)
 glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)'
 AC_SUBST(glib_INCLUDES)
 
-# gthread:
-#   same as glib
-gthread_INCLUDES='$(glib_INCLUDES)'
-AC_SUBST(gthread_INCLUDES)
-
 # gobject:
-#   same as gthread
-gobject_INCLUDES='$(gthread_INCLUDES)'
+#   same as glib
+gobject_INCLUDES='$(glib_INCLUDES)'
 AC_SUBST(gobject_INCLUDES)
 
 # gmodule:
@@ -3578,6 +3780,7 @@ build/win32/Makefile
 build/win32/dirent/Makefile
 build/win32/vs9/Makefile
 build/win32/vs10/Makefile
+build/win32/vs11/Makefile
 glib/Makefile
 glib/glib.stp
 glib/libcharset/Makefile
@@ -3595,13 +3798,17 @@ gthread/Makefile
 gio/Makefile
 gio/gdbus-2.0/codegen/Makefile
 gio/gdbus-2.0/codegen/config.py
+gio/gnetworking.h
 gio/xdgmime/Makefile
 gio/inotify/Makefile
+gio/kqueue/Makefile
 gio/fen/Makefile
 gio/fam/Makefile
 gio/win32/Makefile
 gio/tests/Makefile
 gio/tests/gdbus-object-manager-example/Makefile
+gio/tests/services/Makefile
+gio/tests/services/org.gtk.GDBus.Examples.ObjectManager.service
 po/Makefile.in
 docs/Makefile
 docs/reference/Makefile