# 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_minor_version], [43])
+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)])
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}
+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
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
+AC_USE_SYSTEM_EXTENSIONS
-AC_CANONICAL_HOST
+AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
-AC_MSG_CHECKING([for the BeOS])
-case $host in
- *-*-beos*)
- glib_native_beos="yes"
- ;;
- *)
- glib_native_beos="no"
- ;;
-esac
-AC_MSG_RESULT([$glib_native_beos])
+AC_CANONICAL_HOST
dnl
LIB_EXE_MACHINE_FLAG=X64
;;
esac
+
+ AC_DEFINE([_WIN32_WINNT], [0x0501], [Target the Windows XP API])
;;
*)
glib_native_win32=no
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
AC_MSG_RESULT([$glib_have_carbon])
+glib_have_cocoa=no
+AC_MSG_CHECKING([for Mac OS X Cocoa support])
+AC_TRY_CPP([
+#include <Cocoa/Cocoa.h>
+#ifdef GNUSTEP_BASE_VERSION
+#error "Detected GNUstep, not Cocoa"
+#endif
+], 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
+AS_IF([test "$glib_native_win32" = "yes"], [
AC_CHECK_TOOL(WINDRES, windres, no)
if test "$WINDRES" = no; then
AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
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])
-fi
+])
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)
-
-if test "x$glib_have_carbon" = "xyes"; then
+AS_IF([test "x$glib_have_carbon" = "xyes"], [
AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
- LDFLAGS="$LDFLAGS -framework Carbon"
-fi
+ CARBON_LIBS="-Wl,-framework,Carbon"
+ LDFLAGS="$LDFLAGS $CARBON_LIBS"
+], [CARBON_LIBS=""])
-gl_GLIBC21
-if test "x$GLIBC21" = "xyes"; then
- AC_DEFINE([_GNU_SOURCE], 1, [Make all glibc extensions visible])
-fi
+AC_SUBST([CARBON_LIBS])
+
+AS_IF([test "x$glib_have_cocoa" = "xyes"], [
+ AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available])
+ COCOA_LIBS="-Wl,-framework,Foundation"
+ LDFLAGS="$LDFLAGS $COCOA_LIBS"
+], [COCOA_LIBS=""])
+
+AC_SUBST([COCOA_LIBS])
dnl declare --enable-* args and collect ac_help strings
AC_ARG_ENABLE(debug,
- AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
+ AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
[turn on debugging @<:@default=glib_debug_default@:>@]),,
enable_debug=glib_debug_default)
AC_ARG_ENABLE(gc_friendly,
- [AC_HELP_STRING([--enable-gc-friendly],
+ [AS_HELP_STRING([--enable-gc-friendly],
[turn on garbage collector friendliness [default=no]])],,
[enable_gc_friendly=no])
AC_ARG_ENABLE(mem_pools,
- [AC_HELP_STRING([--disable-mem-pools],
+ [AS_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],
+ [AS_HELP_STRING([--disable-rebuilds],
[disable all source autogeneration rules])],,
[enable_rebuilds=yes])
+AC_ARG_ENABLE(kdbus,
+ [AS_HELP_STRING([--enable-kdbus],
+ [enable kdbus [default=no]])],,
+ [enable_kdbus=no])
-if test "x$enable_threads" != "xyes"; then
- enable_threads=no
-fi
+GLIB_TESTS
AC_MSG_CHECKING([whether to enable garbage collector friendliness])
-if test "x$enable_gc_friendly" = "xyes"; then
+AS_IF([test "x$enable_gc_friendly" = "xyes"], [
AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
AC_MSG_RESULT([yes])
-else
- AC_MSG_RESULT([no])
-fi
+], [ AC_MSG_RESULT([no]) ])
AC_MSG_CHECKING([whether to disable memory pools])
-if test "x$disable_mem_pools" = "xno"; then
+AS_IF([test "x$disable_mem_pools" = "xno"], [
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
+])
+
+AC_MSG_CHECKING([whether to enable kdbus])
+AM_CONDITIONAL(KDBUS_TRANSPORT, [test "x$enable_kdbus" = "xyes"])
+AS_IF([test "x$enable_kdbus" = "xyes"], [
+ AC_DEFINE(KDBUS_TRANSPORT, 1, [Whether to enable kdbus])
+ AC_MSG_RESULT([yes])
+], [ AC_MSG_RESULT([no]) ])
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])],
+ [AS_HELP_STRING([--with-runtime-libdir=RELPATH],
+ [install runtime libraries relative to libdir])],
[],
[with_runtime_libdir=""])
GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
AC_LANG_RESTORE
-AM_PROG_CC_STDC
AM_PROG_CC_C_O
AC_PROG_INSTALL
PKG_PROG_PKG_CONFIG(0.16)
if test "x$enable_debug" = "xyes"; then
- if test x$cflags_set != xset ; then
+ if test "x$cflags_set" != "x" ; then
case " $CFLAGS " in
*[[\ \ ]]-g[[\ \ ]]*) ;;
*) CFLAGS="$CFLAGS -g" ;;
esac
fi
-
GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
else
GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
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")
dnl On Windows we use a native implementation
-if test x"$glib_native_win32" = xyes; then
+AS_IF([ test x"$glib_native_win32" = xyes], [
with_libiconv=native
-else
+], [
AC_ARG_WITH(libiconv,
- [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
+ [AS_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
[use the libiconv library])],,
[with_libiconv=maybe])
if test "x$found_iconv" = "xno" ; then
AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
fi
-fi
-
-AC_ARG_ENABLE(iconv-cache,
- [AC_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
PKG_CHECK_MODULES([ZLIB], [zlib], [found_zlib=yes], [found_zlib=no])
-if test "x$found_zlib" = "xno" ; then
+AS_IF([test "x$found_zlib" = "xno"], [
AC_CHECK_LIB(z, inflate, [AC_CHECK_HEADER(zlib.h, found_zlib=yes)])
if test "x$found_zlib" = "xno" ; then
AC_MSG_ERROR([*** Working zlib library and headers not found ***])
fi
ZLIB_LIBS='-lz'
AC_SUBST(ZLIB_LIBS)
-fi
+])
PKG_CHECK_MODULES(LIBFFI, [libffi >= 3.0.0])
AC_SUBST(LIBFFI_CFLAGS)
dnl Now we are done with gettext checks, figure out ICONV_LIBS
dnl
-if test x"$glib_native_win32" != xyes; then
+AS_IF([test x"$glib_native_win32" != xyes], [
if test x$with_libiconv != xno ; then
case " $INTLLIBS " in
*[[\ \ ]]-liconv[[\ \ ]]*) ;;
*) ICONV_LIBS="-liconv" ;;
esac
fi
-fi
+])
AC_SUBST(ICONV_LIBS)
case $with_libiconv in
m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
-if test "x$GCC" = "xyes"; then
- case " $CFLAGS " in
- *[[\ \ ]]-Wall[[\ \ ]]*) ;;
- *) CFLAGS="$CFLAGS -Wall" ;;
- esac
-fi
-
-CPPFLAGS="$CPPFLAGS -DG_DISABLE_SINGLE_INCLUDES"
-
-if test "$glib_native_win32" = "yes"; then
+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.])
fi
#define GOBJECT_STATIC_COMPILATION 1"
AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
fi
-fi
+])
AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
-dnl
-dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
-dnl
-if test $cross_compiling != yes ; then
- AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
- glib_save_LIBS=$LIBS
- LIBS="$LIBS -lm"
- AC_TRY_RUN([#include <math.h>
- int main (void) { return (log(1) != log(1.)); }],
- AC_MSG_RESULT(none needed),
- glib_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -std1"
- AC_TRY_RUN([#include <math.h>
- int main (void) { return (log(1) != log(1.)); }],
- AC_MSG_RESULT(-std1),
- AC_MSG_RESULT()
- CFLAGS=$glib_save_CFLAGS
- AC_MSG_WARN(
- [No ANSI prototypes found in library. (-std1 didn't work.)])
- )
- )
- LIBS=$glib_save_LIBS
-fi
-
-dnl NeXTStep cc seems to need this
-AC_MSG_CHECKING([for extra flags for POSIX compliance])
-AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
- AC_MSG_RESULT(none needed),
- glib_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -posix"
- AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
- AC_MSG_RESULT(-posix),
- AC_MSG_RESULT()
- 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_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid)
+AC_CHECK_FUNCS(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 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
])
fi
-if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
+AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
# long long is a 64 bit integer.
AC_MSG_CHECKING(for format to printf and scanf a guint64)
AC_CACHE_VAL(glib_cv_long_long_format,[
break],
[],[:])
done])
- if test -n "$glib_cv_long_long_format"; then
+ AS_IF([ test -n "$glib_cv_long_long_format"], [
AC_MSG_RESULT(%${glib_cv_long_long_format}u)
AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
if test x"$glib_cv_long_long_format" = xI64; then
AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
- fi
- else
- AC_MSG_RESULT(none)
- fi
-elif test x$ac_cv_sizeof___int64 = x8; then
+ fi
+ ], [AC_MSG_RESULT(none)])
+],[ test x$ac_cv_sizeof___int64 = x8], [
# __int64 is a 64 bit integer.
AC_MSG_CHECKING(for format to printf and scanf a guint64)
# We know this is MSVCRT.DLL, and what the formats are
AC_MSG_RESULT(%${glib_cv_long_long_format}u)
AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
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
-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
-if test "x$GCC" = "xyes"; then
- 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)
-fi
-AC_MSG_RESULT($SANE_MALLOC_PROTOS)
-CFLAGS=$glib_save_CFLAGS
-
dnl
dnl check in which direction the stack grows
dnl
AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
AC_TRY_RUN([
volatile int *a = 0, *b = 0;
- void foo (void);
- int main () { volatile int y = 7; a = &y; foo (); return b > a; }
- void foo (void) { volatile int x = 5; b = &x; }
+ void f (int i) { volatile int x = 5; if (i == 0) b = &x; else f (i - 1); }
+ int main () { volatile int y = 7; a = &y; f (100); return b > a ? 0 : 1; }
],
- glib_cv_stack_grows=no
- ,
glib_cv_stack_grows=yes
+ ,
+ glib_cv_stack_grows=no
,)
])
}]])],[g_can_inline=yes],[g_can_inline=no])
AC_MSG_RESULT($g_can_inline)
-dnl *** check for working do while(0) macros ***
-AC_CACHE_CHECK([for working do while(0) macros], g_cv_support_dowhile_macros, [
- AC_TRY_COMPILE([],[
- #define STMT_START do
- #define STMT_END while(0)
- #define STMT_TEST STMT_START { i = 0; } STMT_END
- int main(void) { int i = 1; STMT_TEST; return i; }],
- [g_cv_support_dowhile_macros=yes],
- [g_cv_support_dowhile_macros=no],
- [g_cv_support_dowhile_macros=yes])
-])
-if test x$g_cv_support_dowhile_macros = xyes; then
- AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
-fi
-
# check for flavours of varargs macros
AC_MSG_CHECKING(for ISO C99 varargs macros in C)
AC_TRY_COMPILE([],[
AC_MSG_RESULT($g_have_iso_c_varargs)
AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
-if test "$CXX" = ""; then
+AS_IF([test "$CXX" = ""], [
dnl No C++ compiler
g_have_iso_cxx_varargs=no
else
call_a(2,3);
],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
AC_LANG_C
-fi
+])
AC_MSG_RESULT($g_have_iso_cxx_varargs)
AC_MSG_CHECKING(for GNUC varargs macros)
f_default (void)
{
}
-int main (int argc, char **argv)
+int main (void)
{
f_hidden();
f_internal();
# check for header files
-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/uio.h sys/mkdev.h])
-AC_CHECK_HEADERS([linux/magic.h])
+AC_CHECK_HEADERS([sys/param.h sys/resource.h mach/mach_time.h])
+AC_CHECK_HEADERS([sys/select.h stdint.h inttypes.h sched.h malloc.h])
+AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h sys/filio.h])
+AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h])
+AC_CHECK_HEADERS([linux/magic.h linux/memfd.h sys/prctl.h])
+
+# Some versions of MSC lack these
+AC_CHECK_HEADERS([dirent.h sys/time.h])
+
+# We don't care about this, but we need to keep including it in
+# glibconfig.h for backward compatibility
+AC_CHECK_HEADERS([values.h])
+
+AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
+[#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+])
+AC_CHECK_FUNCS(sysctlbyname)
+
+AC_HEADER_MAJOR
+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>
#include <sys/stat.h>
+#ifdef G_OS_UNIX
#include <unistd.h>
+#endif
#ifdef HAVE_SYS_STATFS_H
#include <sys/statfs.h>
#endif
#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])
-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
dnl warnings when used in the location as size_t. (This matters
dnl on AIX with xlc)
dnl
-if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
- test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
+AS_IF([test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
+ test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long], [
GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
#if defined(_AIX) && !defined(__GNUC__)
#pragma options langlvl=stdc89
return (int)*size_long;
}
]])],glib_size_type=long)])
-fi
+])
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
+#include <sys/types.h>
+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
+#include <sys/types.h>
+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 getmntinfo)
-# Check for high-resolution sleep functions
+AC_CHECK_FUNCS(lstat strsignal vsnprintf stpcpy strcasecmp strncasecmp poll vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
+AC_CHECK_FUNCS(lchmod lchown fchmod fchown utimes getresuid)
+AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate)
+case $host_os in aix*) ac_cv_func_splice=no ;; esac # AIX splice() is something else
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
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)
-AC_FUNC_VSNPRINTF_C99
-AC_FUNC_PRINTF_UNIX98
+AC_CHECK_FUNCS(newlocale uselocale strtod_l strtoll_l strtoull_l)
# Internet address families
if test $glib_native_win32 = yes; 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])
-
-# 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)
+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)
# 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)
-fi
+ 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)
+
+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* )
dnl
dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
dnl
-if test "$ac_cv_func_statfs" = yes ; then
+AS_IF([test "$ac_cv_func_statfs" = yes], [
AC_MSG_CHECKING([number of arguments to statfs()])
AC_TRY_COMPILE([#include <unistd.h>
#ifdef HAVE_SYS_PARAM_H
AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
AC_MSG_RESULT(unknown)
AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
-fi
+])
+
+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
#
+AC_FUNC_VSNPRINTF_C99
+AC_FUNC_PRINTF_UNIX98
AC_ARG_ENABLE(included-printf,
- [AC_HELP_STRING([--enable-included-printf],
+ [AS_HELP_STRING([--enable-included-printf],
[use included printf [default=auto]])],
enable_included_printf="$enableval")
enable_included_printf=$need_included_printf
AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
-if test "$enable_included_printf" != "yes" ; then
+AS_IF([test "$enable_included_printf" != "yes"], [
AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
-else
+], [
if test -z "$glib_cv_long_long_format" ; then
glib_cv_long_long_format="ll"
fi
AC_DEFINE(HAVE_VASPRINTF,1)
-fi
+])
# Checks needed for gnulib vasnprintf
bh_C_SIGNED
AC_CHECK_FUNCS([snprintf wcslen])
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.
-if test "$ac_cv_func_memmove" != "yes"; then
- AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
- glib_cv_working_bcopy,[AC_TRY_RUN([
- int main() {
- char buf[128], abc[128], *b;
- int len, off, align;
- bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
- for (align = 7; align >= 0; align--) {
- for (len = 36; len; len--) {
- b = buf+align; bcopy(abc, b, len);
- for (off = 1; off <= len; off++) {
- bcopy(b, b+off, len); bcopy(b+off, b, len);
- if (bcmp(b, abc, len)) return(1);
- }
- }
- }
- return(0);
- }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
-
- GLIB_ASSERT_SET(glib_cv_working_bcopy)
- if test "$glib_cv_working_bcopy" = "yes"; then
- AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
- 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>],
[fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
-if test "$gtk_ok" = "yes"; then
+AS_IF([test "$gtk_ok" = "yes"], [
AC_MSG_RESULT([yes, found in sys/types.h])
-else
+], [
AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
if test "$gtk_ok" = "yes"; then
# *** FIXME: give it a different name
AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
AC_MSG_RESULT(no)
fi
-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])
])
-if test x$glib_cv_sane_realloc = xyes; then
- AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
-fi
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
AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
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_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);
+ 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);
+ str = nl_langinfo (ABDAY_7);])],
+ [glib_cv_langinfo_time=yes],
+ [glib_cv_langinfo_time=no])])
+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_LINK_IFELSE([AC_LANG_PROGRAM([#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
+AC_LANG_RESTORE
+
dnl ****************************************
dnl *** posix_memalign ***
dnl ****************************************
:
fi
])
-if test "$glib_cv_compliant_posix_memalign" = "1"; then
+AS_IF([test "$glib_cv_compliant_posix_memalign" = "1"], [
AC_MSG_RESULT(yes)
AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
-else
+], [
AC_MSG_RESULT(no)
-fi
+])
dnl ****************************************
[glib_cv_va_val_copy=yes])
])
-if test "x$glib_cv_va_val_copy" = "xno"; then
+AS_IF([ test "x$glib_cv_va_val_copy" = "xno"], [
AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
-fi
+])
dnl ***********************
dnl *** g_module checks ***
esac
fi
dnl *** dlopen() and dlsym() in system libraries
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
AC_CHECK_FUNC(dlopen,
[AC_CHECK_FUNC(dlsym,
[G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
[])
-fi
-dnl *** load_image (BeOS)
-if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
- AC_CHECK_LIB(root, load_image,
- [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
- G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
- G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
- G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
- [])
-fi
+])
dnl *** NSLinkModule (dyld) in system libraries (Darwin)
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL" ], [
AC_CHECK_FUNC(NSLinkModule,
[G_MODULE_IMPL=G_MODULE_IMPL_DYLD
G_MODULE_NEED_USCORE=1],
[])
-fi
+])
dnl *** dlopen() and dlsym() in libdl
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
AC_CHECK_LIB(dl, dlopen,
[AC_CHECK_LIB(dl, dlsym,
[G_MODULE_LIBS=-ldl
G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
[])
-fi
-dnl *** shl_load() in libdld (HP-UX)
-if test -z "$G_MODULE_IMPL"; then
- AC_CHECK_LIB(dld, shl_load,
- [G_MODULE_LIBS=-ldld
- G_MODULE_IMPL=G_MODULE_IMPL_DLD],
- [])
-fi
+])
dnl *** additional checks for G_MODULE_IMPL_DL
-if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
+AS_IF([ test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ], [
LIBS_orig="$LIBS"
LDFLAGS_orig="$LDFLAGS"
LIBS="$G_MODULE_LIBS $LIBS"
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([
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;
[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
[G_MODULE_HAVE_DLERROR=1],
[G_MODULE_HAVE_DLERROR=0])
LIBS="$LIBS_orig"
-fi
+])
dnl *** done, have we got an implementation?
if test -z "$G_MODULE_IMPL"; then
G_MODULE_IMPL=0
dnl *********************************
AC_ARG_WITH(gio-module-dir,
- [AC_HELP_STRING([--with-gio-module-dir=PATH],
- [Load gio modules from this directory [LIBDIR/gio/modules]])],
+ [AS_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
dnl **********************************
dnl *** Check for libselinux (GIO) ***
dnl **********************************
-AC_ARG_ENABLE(selinux, [ --disable-selinux build without selinux support])
+AC_ARG_ENABLE(selinux,
+ AS_HELP_STRING([--disable-selinux],
+ [build without selinux support]))
msg_selinux=no
SELINUX_LIBS=
-if test "x$enable_selinux" != "xno"; then
+AS_IF([ test "x$enable_selinux" != "xno"], [
AC_CHECK_LIB(selinux, is_selinux_enabled,
[AC_CHECK_HEADERS(selinux/selinux.h,
msg_selinux=yes])
])
])
-fi
+])
AC_SUBST(SELINUX_LIBS)
dnl *****************************
inotify_support=no
AC_CHECK_HEADERS([sys/inotify.h],
[
- inotify_support=yes
- AC_CHECK_FUNCS(inotify_init1)
+ AC_CHECK_FUNCS(inotify_init1, [inotify_support=yes], [inotify_support=no])
])
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 *********************************
should_disable_fam=no
-AC_ARG_ENABLE(fam, [ --disable-fam build without enabling fam for file system monitoring],
+AC_ARG_ENABLE(fam,
+ AS_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
]
)
dnl *****************************
dnl *** Check for xattr (GIO) ***
dnl *****************************
-AC_ARG_ENABLE(xattr, [ --disable-xattr build without xattr support])
+AC_ARG_ENABLE(xattr,
+ AS_HELP_STRING([--disable-xattr], [build without xattr support]))
msg_xattr=no
XATTR_LIBS=
-if test "x$enable_xattr" != "xno"; then
+AS_IF([ test "x$enable_xattr" != "xno"], [
dnl either glibc or libattr can provide xattr support
msg_xattr=yes])
])
- if test "x$msg_xattr" != "xyes"; then
+ AS_IF([ test "x$msg_xattr" != "xyes"], [
dnl failure. try libattr
AC_CHECK_LIB(attr, getxattr,
[AC_CHECK_HEADERS(attr/xattr.h,
XATTR_LIBS="-lattr"
msg_xattr=yes])
])
- fi
+ ])
- if test "x$msg_xattr" = "xyes"; then
+ AS_IF([ test "x$msg_xattr" = "xyes"], [
AC_MSG_CHECKING([for XATTR_NOFOLLOW])
AC_TRY_COMPILE([
#include <stdio.h>
],
[AC_MSG_RESULT([no])]
)
+ ])
+])
+AC_SUBST(XATTR_LIBS)
+
+dnl ************************
+dnl *** check for libelf ***
+dnl ************************
+AC_ARG_ENABLE(libelf,
+ AS_HELP_STRING([--disable-libelf], [build without libelf support]))
+AS_IF([ test "x$enable_libelf" != "xno"],[
+PKG_CHECK_MODULES([LIBELF], [libelf >= 0.8.12], [have_libelf=yes], [have_libelf=maybe])
+AS_IF([ test $have_libelf = maybe ], [
+ glib_save_LIBS=$LIBS
+ 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])
+ LIBS=$glib_save_LIBS
+
+ if test $have_libelf != no; then
+ LIBELF_LIBS=-lelf
+ have_libelf=yes
fi
+])
+])
+if test x$have_libelf = xyes; then
+ AC_DEFINE(HAVE_LIBELF, 1, [Define if libelf is available])
fi
-AC_SUBST(XATTR_LIBS)
dnl ****************************************
dnl *** platform dependent source checks ***
dnl ***********************
AC_ARG_WITH(threads,
- [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/win32@:>@],
+ [AS_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
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
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
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
- # -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"
- glib_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- if test "x$have_threads" = xno; then
+AS_IF([ test "x$with_threads" = xyes || test "x$with_threads" = xposix], [
+ AS_IF([ test "x$have_threads" = xno], [
AC_TRY_COMPILE([#include <pthread.h>],
[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
- AC_TRY_COMPILE([#include <pthread.h>],
+ glib_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -pthread"
+ AC_TRY_COMPILE([#include <pthread.h>],
[pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
have_threads=posix)
+ CPPFLAGS="$glib_save_CPPFLAGS"
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
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
+AS_IF([ test x"$have_threads" = xposix], [
+ # 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
+])
- if test x"$G_THREAD_CFLAGS" = x; then
+AS_IF([ test x"$G_THREAD_CFLAGS" = x], [
- # 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.
G_THREAD_CFLAGS="-D_THREAD_SAFE"
fi
;;
- *-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"
*)
G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
;;
- esac
-
- fi
+ esac
+])
- # 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)
+AS_IF([test x$have_threads = xposix], [
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- if test x"$G_THREAD_LIBS" = x; then
+ AS_IF([ test x"$G_THREAD_LIBS" = x ], [
case $host in
*-aix*)
# We are not using gcc (would have set G_THREAD_LIBS) and thus
*)
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=""
LIBS="$glib_save_LIBS"
;;
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_DEFINE([THREADS_POSIX], [1], [Use pthreads])
AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
CPPFLAGS="$glib_save_CPPFLAGS"
- ;;
- win32)
+], [test x$have_threads = xwin32], [
+ AC_DEFINE([THREADS_WIN32], [1], [Use w32 threads])
g_threads_impl="WIN32"
- ;;
- none|no)
- g_threads_impl="NONE"
- ;;
- *)
+], [
+ AC_DEFINE([THREADS_NONE], [1], [Use no threads])
g_threads_impl="NONE"
G_THREAD_LIBS=error
- ;;
-esac
+])
+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)
fi
-case $host in
- *-*-beos*)
- G_THREAD_LIBS="-lbe -lroot -lglib-2.0 "
- G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
- ;;
- *)
- ;;
-esac
-
AC_MSG_CHECKING(thread related libraries)
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)
+AS_IF([ test "$glib_native_win32" != "yes"], [
+ AC_CACHE_CHECK([for posix getpwuid_r],
+ ac_cv_func_posix_getpwuid_r,
+ [AC_TRY_RUN([
#include <errno.h>
#include <pwd.h>
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([
+])
+AS_IF([ test "$glib_native_win32" != "yes"], [
+ AC_CACHE_CHECK([for posix getgrgid_r],
+ ac_cv_func_posix_getgrgid_r,
+ [AC_TRY_RUN([
#include <errno.h>
#include <grp.h>
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)
+ AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [
+ AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
+ [Have POSIX function getgrgid_r])
+ ], [
+ 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"
+ ])
+])
+LIBS="$G_THREAD_LIBS $LIBS"
+AS_IF([ test x"$have_threads" = xposix], [
+ 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)])
+ AC_MSG_CHECKING(for pthread_cond_timedwait_relative_np)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <pthread.h>],
+ [pthread_cond_timedwait_relative_np(NULL, NULL, NULL)])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP,1,
+ [Have function pthread_cond_timedwait_relative_np])],
+ [AC_MSG_RESULT(no)])
+ CPPFLAGS="$glib_save_CPPFLAGS"
+])
- # 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
+LIBS="$glib_save_LIBS"
-if test x"$glib_cv_sizeof_system_thread" = x; then
- # use a pointer as a fallback.
- GLIB_SIZEOF(,void *, system_thread)
+# 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
#
# 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/`"
;;
- *)
- G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
+ *)
+ 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
+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 (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
+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, [
+ 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])
-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
+
+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
+ 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) **
#include <sys/syscall.h>
#include <unistd.h>
],[
-int
-main (void)
-{
- /* it is not like this actually runs or anything... */
syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
- return 0;
-}
])],glib_cv_futex=yes,glib_cv_futex=no))
if test x"$glib_cv_futex" = xyes; then
AC_DEFINE(HAVE_FUTEX, 1, [we have the futex(2) system call])
#include <sys/eventfd.h>
#include <unistd.h>
],[
-int
-main (void)
-{
eventfd (0, EFD_CLOEXEC);
- return 0;
-}
])],glib_cv_eventfd=yes,glib_cv_eventfd=no))
if test x"$glib_cv_eventfd" = x"yes"; then
AC_DEFINE(HAVE_EVENTFD, 1, [we have the eventfd(2) system call])
glib_poll_includes=["
#include <sys/types.h>
-#include <sys/poll.h>
+#include <poll.h>
"]
-if test $ac_cv_header_sys_types_h = yes &&
- test $ac_cv_header_sys_poll_h = yes ; then
+AS_IF([ test $ac_cv_header_sys_types_h = yes &&
+ test $ac_cv_func_poll = yes ], [
glib_failed=false
GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
if $glib_failed ; then
AC_MSG_ERROR([Could not determine values for POLL* constants])
fi
-else
+], [
glib_cv_value_POLLIN=1
glib_cv_value_POLLOUT=4
glib_cv_value_POLLPRI=2
glib_cv_value_POLLERR=8
glib_cv_value_POLLHUP=16
glib_cv_value_POLLNVAL=32
-fi
+])
AC_MSG_CHECKING([for broken poll])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#include <fcntl.h>
#include <poll.h>
- #ifdef HAVE_SYS_POLL_H
- #include <sys/poll.h>
- #endif
int main(void) {
struct pollfd fds[1];
int fd;
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
+
+PCRE_REQUIRED_VERSION=8.13
+
+# Check if we should use the internal or the system-supplied pcre
+AC_ARG_WITH(pcre,
+ [AS_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
+ [whether to use system PCRE [default=internal]])])
+
+AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
+
+AS_IF([ test "x$with_pcre" = xsystem], [
+ 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)
-else
- AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
-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)
+], [
+ # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
+ AS_IF([ test x"$GCC" = xyes], [
+ 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"
+ ])
+])
+AC_SUBST(PCRE_WARN_CFLAGS)
dnl **********************
dnl *** Win32 API libs ***
G_LIBS_EXTRA="-luser32 -lkernel32"
;;
*-*-mingw*)
- G_LIBS_EXTRA="-lws2_32 -lole32"
+ G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi"
;;
*)
G_LIBS_EXTRA=""
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
-if test $cross_compiling = yes; then
+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)
if test x$GLIB_COMPILE_SCHEMAS = xno; then
AC_MSG_ERROR(Could not find a glib-compile-schemas in your PATH)
fi
-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
+])
dnl **************************
dnl *** Checks for gtk-doc ***
dnl **************************
-
-GTK_DOC_CHECK([1.15])
+# gtkdocize greps for ^GTK_DOC_CHECK and parses it, so you need to have
+# it on it's own line.
+m4_ifdef([GTK_DOC_CHECK], [
+GTK_DOC_CHECK([1.20], [--flavour no-tmpl])
+],[
+AM_CONDITIONAL([ENABLE_GTK_DOC],[false])
+])
AC_ARG_ENABLE(man,
- [AC_HELP_STRING([--enable-man],
- [regenerate man pages from Docbook [default=no]])],enable_man=yes,
- enable_man=no)
-
-if test "${enable_man}" != no; then
-dnl
-dnl Check for xsltproc
-dnl
-AC_PATH_PROG([XSLTPROC], [xsltproc])
- if test -z "$XSLTPROC"; then
+ [AS_HELP_STRING([--enable-man],
+ [generate man pages [default=auto]])],,
+ enable_man=maybe)
+
+AS_IF([test "$enable_man" != no], [
+ AC_PATH_PROG([XSLTPROC], [xsltproc])
+ AS_IF([test -z "$XSLTPROC"], [
+ AS_IF([test "$enable_man" = yes], [
+ AC_MSG_ERROR([xsltproc is required for --enable-man])
+ ])
enable_man=no
- fi
+ ])
+])
- dnl check for DocBook DTD and stylesheets in the local catalog.
+AS_IF([ test "$enable_man" != no ], [
+ dnl check for DocBook DTD in the local catalog
JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
- [DocBook XML DTD V4.1.2],,enable_man=no)
+ [DocBook XML DTD V4.1.2], [have_docbook_dtd=yes], [have_docbook_dtd=no])
+ AS_IF([test "$have_docbook_dtd" != yes], [
+ AS_IF([test "$enable_man" = yes ], [
+ AC_MSG_ERROR([DocBook DTD is required for --enable-man])
+ ])
+ enable_man=no
+ ])
+])
+
+AS_IF([test "$enable_man" != no], [
+ dnl check for DocBook XSL stylesheets in the local catalog
JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
- [DocBook XSL Stylesheets],,enable_man=no)
-fi
+ [DocBook XSL Stylesheets], [have_docbook_style=yes],[have_docbook_style=no])
+ AS_IF([ test "$have_docbook_dtd" != yes ], [
+ AS_IF([ test "$enable_man" = yes ], [
+ AC_MSG_ERROR([DocBook XSL Stylesheets are required for --enable-man])
+ ])
+ enable_man=no
+ ])
+])
-AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
+AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
+
+AC_MSG_CHECKING([whether to generate man pages])
+AS_IF([ test "$enable_man" != no ], [
+ AC_MSG_RESULT([yes])
+], [
+ AC_MSG_RESULT([no])
+])
dnl
dnl Tracing
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
+AS_IF([ test "x$enable_dtrace" != xno], [
if test x$glib_have_carbon = xyes; then
AC_MSG_RESULT([no (not yet compatible with MacOS dtrace)])
else
fi])
fi
fi
-else
+], [
AC_MSG_RESULT([no])
-fi
+])
if test "x$have_dtrace" = xyes; then
AC_DEFINE([HAVE_DTRACE], [1], [Define to 1 if using dtrace probes.])
fi
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
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
dnl *** Enable lcov coverage reports ***
dnl ************************************
-AC_ARG_ENABLE(gcov,
- AS_HELP_STRING([--enable-gcov],
- [Enable gcov]),
+AC_ARG_ENABLE(coverage,
+ AS_HELP_STRING([--enable-coverage],
+ [enable coverage testing with gcov]),
[use_gcov=$enableval], [use_gcov=no])
-if test "x$use_gcov" = "xyes"; then
+AS_IF([ test "x$use_gcov" = "xyes"], [
dnl we need gcc:
if test "$GCC" != "yes"; then
- AC_MSG_ERROR([GCC is required for --enable-gcov])
+ AC_MSG_ERROR([GCC is required for --enable-coverage])
fi
dnl Check if ccache is being used
esac
if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
- AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
+ AC_MSG_ERROR([ccache must be disabled when --enable-coverage 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)
- if test "$LTP"; then
+ AS_IF([ test "$LTP" ], [
AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
glib_cv_ltp_version=invalid
ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
fi
done
])
- else
+ ], [
ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
AC_MSG_ERROR([$ltp_msg])
- fi
+ ])
case $glib_cv_ltp_version in
""|invalid[)]
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'`
dnl Add the special gcc flags
CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
LDFLAGS="$LDFLAGS -lgcov"
-fi
+])
dnl ******************************
dnl *** output the whole stuff ***
* 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>
_______EOF
- if test x$glib_limits_h = xyes; then
- echo '#include <limits.h>' >> $outfile
- fi
- if test x$glib_float_h = xyes; then
- echo '#include <float.h>' >> $outfile
- fi
+ echo '#include <limits.h>' >> $outfile
+ echo '#include <float.h>' >> $outfile
if test x$glib_values_h = xyes; then
echo '#include <values.h>' >> $outfile
fi
if test "$glib_header_alloca_h" = "yes"; then
echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
fi
- if test x$glib_sys_poll_h = xyes; then
- echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
- fi
if test x$glib_included_printf != xyes; then
echo "
/* Specifies that GLib's g_print*() functions wrap the
G_BEGIN_DECLS
-#define G_MINFLOAT $glib_mf
-#define G_MAXFLOAT $glib_Mf
-#define G_MINDOUBLE $glib_md
-#define G_MAXDOUBLE $glib_Md
-#define G_MINSHORT $glib_ms
-#define G_MAXSHORT $glib_Ms
-#define G_MAXUSHORT $glib_Mus
-#define G_MININT $glib_mi
-#define G_MAXINT $glib_Mi
-#define G_MAXUINT $glib_Mui
-#define G_MINLONG $glib_ml
-#define G_MAXLONG $glib_Ml
-#define G_MAXULONG $glib_Mul
+#define G_MINFLOAT FLT_MIN
+#define G_MAXFLOAT FLT_MAX
+#define G_MINDOUBLE DBL_MIN
+#define G_MAXDOUBLE DBL_MAX
+#define G_MINSHORT SHRT_MIN
+#define G_MAXSHORT SHRT_MAX
+#define G_MAXUSHORT USHRT_MAX
+#define G_MININT INT_MIN
+#define G_MAXINT INT_MAX
+#define G_MAXUINT UINT_MAX
+#define G_MINLONG LONG_MIN
+#define G_MAXLONG LONG_MAX
+#define G_MAXULONG ULONG_MAX
_______EOF
### this should always be true in a modern C/C++ compiler
+ ### and is statically asserted by glib-init.c
cat >>$outfile <<_______EOF
typedef signed char gint8;
typedef unsigned char guint8;
#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
cat >>$outfile <<_______EOF
-$glib_atexit
-$glib_memmove
+#ifndef G_DISABLE_DEPRECATED
+#define g_ATEXIT(proc) (atexit (proc))
+#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END
+#endif
$glib_defines
$glib_os
$glib_static_compilation
if test x$g_have_eilseq = xno; then
cat >>$outfile <<_______EOF
#ifndef EILSEQ
-/* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
+/* On some pre-C99 systems, EILSEQ is not defined.
* The correspondence between this and the corresponding definition
* in libiconv is essential.
*/
#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"
#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
#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
G_END_DECLS
-#endif /* GLIBCONFIG_H */
+#endif /* __GLIBCONFIG_H__ */
_______EOF
glib_header_alloca_h="$ac_cv_header_alloca_h"
fi
-case xyes in
-x$ac_cv_header_float_h)
- glib_float_h=yes
- glib_mf=FLT_MIN glib_Mf=FLT_MAX
- glib_md=DBL_MIN glib_Md=DBL_MAX
- ;;
-x$ac_cv_header_values_h)
- glib_values_h=yes
- glib_mf=MINFLOAT glib_Mf=MAXFLOAT
- glib_md=MINDOUBLE glib_Md=MAXDOUBLE
- ;;
-esac
-
-case xyes in
-x$ac_cv_header_limits_h)
- glib_limits_h=yes
- glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
- glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
- glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
- ;;
-x$ac_cv_header_values_h)
- glib_values_h=yes
- glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
- glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
- glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
- ;;
-esac
-
-if test x$ac_cv_header_sys_poll_h = xyes ; then
- glib_sys_poll_h=yes
-fi
-
if test x$enable_included_printf = xyes ; then
glib_included_printf=yes
fi
;;
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
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)
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
esac
-case xyes in
-x$ac_cv_func_atexit)
- glib_atexit="
-#ifdef NeXT /* @#%@! NeXTStep */
-# define g_ATEXIT(proc) (!atexit (proc))
-#else
-# define g_ATEXIT(proc) (atexit (proc))
-#endif"
- ;;
-x$ac_cv_func_on_exit)
- glib_atexit="
-#define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
- ;;
-esac
-
-case xyes in
-x$ac_cv_func_memmove)
- glib_memmove='
-#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END'
- ;;
-x$glib_cv_working_bcopy)
- glib_memmove="
-/* memmove isn't available, but bcopy can copy overlapping memory regions */
-#define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
- ;;
-*)
- glib_memmove="
-/* memmove isn't found and bcopy can't copy overlapping memory regions,
- * so we have to roll our own copy routine. */
-void g_memmove (void* dest, const void * src, unsigned long len);"
- ;;
-esac
-
glib_defines="
#define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
#define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
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
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"
g_pid_type="$glib_pid_type"
case $host in
- *-*-beos*)
- glib_os="#define G_OS_BEOS"
- ;;
*-*-cygwin*)
glib_os="#define G_OS_UNIX
#define G_PLATFORM_WIN32
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_TYPE([guint32],,,[typedef unsigned $gint32 guint32;])
+AC_CHECK_ALIGNOF([guint32], [AC_INCLUDES_DEFAULT
+typedef unsigned $gint32 guint32;])
+AC_CHECK_TYPE([guint64],,,[typedef unsigned $gint64 guint64;])
+AC_CHECK_ALIGNOF([guint64], [AC_INCLUDES_DEFAULT
+typedef unsigned $gint64 guint64;])
+AC_CHECK_TYPE([unsigned long])
+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)
+ 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])
+AM_CONDITIONAL([HAVE_DBUS_DAEMON], [test x$DBUS_DAEMON = xdbus-daemon ])
+
dnl
dnl Check for -Bsymbolic-functions linker flag used to avoid
dnl intra-library PLT jumps, if available.
dnl
AC_ARG_ENABLE(Bsymbolic,
- [AC_HELP_STRING([--disable-Bsymbolic],
+ [AS_HELP_STRING([--disable-Bsymbolic],
[avoid linking with -Bsymbolic])],,
- [SAVED_LDFLAGS="${LDFLAGS}"
+ [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
LDFLAGS=-Wl,-Bsymbolic-functions
- AC_TRY_LINK([], [int main (void) { return 0; }],
+ LIBS=
+ AC_TRY_LINK([], [return 0],
AC_MSG_RESULT(yes)
enable_Bsymbolic=yes,
AC_MSG_RESULT(no)
enable_Bsymbolic=no)
- LDFLAGS="${SAVED_LDFLAGS}"])
+ LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
-if test "x${enable_Bsymbolic}" == "xyes"; then
+if test "x${enable_Bsymbolic}" = "xyes"; then
GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions
fi
AC_SUBST(GLIB_LINK_FLAGS)
+dnl
+dnl Check for -z,nodelete linker flag: the type system assumes that
+dnl libgobject stays loaded for the lifetime of the process.
+dnl Since ld.bfd does not treat wrong -z options as fatal by default,
+dnl we also try to check for the --fatal-warnings linker flag if
+dnl auto-detecting.
+dnl
+
+AC_ARG_ENABLE([znodelete],
+ [AS_HELP_STRING([--disable-znodelete],
+ [avoid linking with -z,nodelete])],,
+ [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
+ AC_MSG_CHECKING([for --fatal-warnings linker flag])
+ LDFLAGS=-Wl,--fatal-warnings
+ LIBS=
+ AC_TRY_LINK([], [return 0],
+ AC_MSG_RESULT(yes)
+ [ldflags_fatal=-Wl,--fatal-warnings],
+ AC_MSG_RESULT(no)
+ ldflags_fatal=)
+ AC_MSG_CHECKING([for -z,nodelete linker flag])
+ LDFLAGS="$ldflags_fatal -Wl,-z,nodelete"
+ AC_TRY_LINK([], [return 0],
+ AC_MSG_RESULT(yes)
+ enable_znodelete=yes,
+ AC_MSG_RESULT(no)
+ enable_znodelete=no)
+ LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
+
+if test "x${enable_znodelete}" = "xyes"; then
+ GOBJECT_LINK_FLAGS=-Wl,-z,nodelete
+fi
+
+AC_SUBST(GOBJECT_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([], [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.
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:
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
build/win32/dirent/Makefile
build/win32/vs9/Makefile
build/win32/vs10/Makefile
+build/win32/vs11/Makefile
+build/win32/vs12/Makefile
glib/Makefile
glib/glib.stp
glib/libcharset/Makefile
gobject/glib-mkenums
gobject/tests/Makefile
gthread/Makefile
-gthread/tests/Makefile
gio/Makefile
-gio/gdbus-codegen/Makefile
-gio/gdbus-codegen/config.py
+gio/gdbus-2.0/codegen/Makefile
+gio/gdbus-2.0/codegen/config.py
+gio/gnetworking.h
gio/xdgmime/Makefile
gio/inotify/Makefile
-gio/libasyncns/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
+gio/tests/modules/Makefile
po/Makefile.in
docs/Makefile
docs/reference/Makefile