gio.symbols: add g_application_[gs]et_default()
[platform/upstream/glib.git] / configure.ac
index 2bcc076..1befff3 100644 (file)
@@ -27,7 +27,7 @@ m4_define(glib_configure_ac)
 
 m4_define([glib_major_version], [2])
 m4_define([glib_minor_version], [31])
-m4_define([glib_micro_version], [0])
+m4_define([glib_micro_version], [3])
 m4_define([glib_interface_age], [0])
 m4_define([glib_binary_age],
           [m4_eval(100 * glib_minor_version + glib_micro_version)])
@@ -512,8 +512,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.])
@@ -903,10 +901,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])
@@ -927,6 +934,8 @@ 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])
@@ -998,6 +1007,7 @@ AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid)
 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:
@@ -1101,6 +1111,10 @@ if test $glib_native_win32 = no; then
 fi
 AC_SUBST(NETWORK_LIBS)
 
+AC_CHECK_HEADER([linux/netlink.h],
+               [AC_DEFINE(HAVE_NETLINK, 1, [We have AF_NETLINK sockets])])
+AM_CONDITIONAL(HAVE_NETLINK, [test "$ac_cv_header_linux_netlink_h" = "yes"])
+
 case $host in
   *-*-solaris* )
      AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
@@ -1232,39 +1246,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>],
@@ -2117,7 +2098,6 @@ CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
 dnl determination of G_THREAD_LIBS
 dnl ******************************
 
-mutex_has_default=no
 case $have_threads in
         posix)
          glib_save_CPPFLAGS="$CPPFLAGS"
@@ -2198,10 +2178,6 @@ case $have_threads in
             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'
          g_threads_impl="POSIX"
          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
           CPPFLAGS="$glib_save_CPPFLAGS"
@@ -2420,8 +2396,11 @@ 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
 
@@ -2430,32 +2409,6 @@ 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)
@@ -2466,151 +2419,63 @@ AC_CHECK_FUNCS(clock_gettime, [], [
 ])
 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_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)
+
+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) **
@@ -2789,7 +2654,7 @@ case $host in
        G_LIBS_EXTRA="-luser32 -lkernel32"
     ;;
   *-*-mingw*)
-       G_LIBS_EXTRA="-lws2_32 -lole32"
+       G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm"
     ;;
   *)
        G_LIBS_EXTRA=""
@@ -2832,7 +2697,7 @@ 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],
@@ -3250,60 +3115,19 @@ _______EOF
 #endif 
 _______EOF
 
-
        echo >>$outfile
-       if test x$g_mutex_has_default = xyes; then
-               cat >>$outfile <<_______EOF
-#define 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
+       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"
@@ -3536,8 +3360,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
@@ -3670,11 +3494,9 @@ g_have_eilseq=$have_eilseq
 
 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"
 
@@ -3781,21 +3603,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
@@ -3818,7 +3633,6 @@ 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