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)])
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])
AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename, struct statfs.f_bavail],,, [#include <sys/types.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])
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)
*-*-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
dnl *** g_atomic_* tests ***
dnl ************************
- 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
-
-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) **
G_LIBS_EXTRA="-luser32 -lkernel32"
;;
*-*-mingw*)
- G_LIBS_EXTRA="-lws2_32 -lole32"
+ G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm"
;;
*)
G_LIBS_EXTRA=""
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],
#define G_THREADS_IMPL_$g_threads_impl_def
_______EOF
- 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"
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
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"
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
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