1 # Process this file with autoconf to produce a configure script.
4 dnl ***********************************
5 dnl *** include special GLib macros ***
6 dnl ***********************************
8 m4_define(glib_configure_ac)
11 # The following version number definitions apply to GLib, GModule, GObject,
12 # GThread and GIO as a whole, so if changes occurred in any of them, they are
13 # all treated with the same interface and binary age.
16 # glib_micro_version += 1;
17 # glib_interface_age += 1;
18 # glib_binary_age += 1;
19 # if any functions have been added, set glib_interface_age to 0.
20 # if backwards compatibility has been broken,
21 # set glib_binary_age _and_ glib_interface_age to 0.
23 # remember to add a GLIB_VERSION_2_xx macro every time the minor version is
24 # bumped, as well as the GLIB_DEPRECATED_IN and GLIB_AVAILABLE_IN macros
25 # for that version - see gversion.h for further information.
27 # in easier to understand terms:
29 # <mclasen> on the stable branch, interface age == micro
30 # <mclasen> on the unstable (ie master), interface age = 0
32 m4_define([glib_major_version], [2])
33 m4_define([glib_minor_version], [37])
34 m4_define([glib_micro_version], [5])
35 m4_define([glib_interface_age], [0])
36 m4_define([glib_binary_age],
37 [m4_eval(100 * glib_minor_version + glib_micro_version)])
38 m4_define([glib_version],
39 [glib_major_version.glib_minor_version.glib_micro_version])
41 # libtool version related macros
42 m4_define([glib_lt_release], [glib_major_version.glib_minor_version])
43 m4_define([glib_lt_current],
44 [m4_eval(100 * glib_minor_version + glib_micro_version - glib_interface_age)])
45 m4_define([glib_lt_revision], [glib_interface_age])
46 m4_define([glib_lt_age], [m4_eval(glib_binary_age - glib_interface_age)])
47 m4_define([glib_lt_current_minus_age],
48 [m4_eval(glib_lt_current - glib_lt_age)])
50 # if the minor version number is odd, then we want debugging. Otherwise
51 # we only want minimal debugging support.
52 m4_define([glib_debug_default],
53 [m4_if(m4_eval(glib_minor_version % 2), [1], [yes], [minimum])])dnl
56 AC_INIT(glib, [glib_version],
57 [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
59 AC_CONFIG_HEADERS([config.h])
60 AC_CONFIG_SRCDIR([glib/glib.h])
61 AC_CONFIG_MACRO_DIR([m4macros])
63 # Save this value here, since automake will set cflags later
64 cflags_set=${CFLAGS+set}
66 AM_INIT_AUTOMAKE([1.11 -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
67 AM_MAINTAINER_MODE([enable])
69 # Support silent build rules. Disable
70 # by either passing --disable-silent-rules to configure or passing V=1
72 AM_SILENT_RULES([yes])
74 GLIB_MAJOR_VERSION=glib_major_version
75 GLIB_MINOR_VERSION=glib_minor_version
76 GLIB_MICRO_VERSION=glib_micro_version
77 GLIB_INTERFACE_AGE=glib_interface_age
78 GLIB_BINARY_AGE=glib_binary_age
79 GLIB_VERSION=glib_version
81 AC_SUBST(GLIB_MAJOR_VERSION)
82 AC_SUBST(GLIB_MINOR_VERSION)
83 AC_SUBST(GLIB_MICRO_VERSION)
84 AC_SUBST(GLIB_VERSION)
85 AC_SUBST(GLIB_INTERFACE_AGE)
86 AC_SUBST(GLIB_BINARY_AGE)
88 AC_DEFINE(GLIB_MAJOR_VERSION, [glib_major_version],
89 [Define to the GLIB major version])
90 AC_DEFINE(GLIB_MINOR_VERSION, [glib_minor_version],
91 [Define to the GLIB minor version])
92 AC_DEFINE(GLIB_MICRO_VERSION, [glib_micro_version],
93 [Define to the GLIB micro version])
94 AC_DEFINE(GLIB_INTERFACE_AGE, [glib_interface_age],
95 [Define to the GLIB interface age])
96 AC_DEFINE(GLIB_BINARY_AGE, [glib_binary_age],
97 [Define to the GLIB binary age])
100 LT_RELEASE=glib_lt_release
101 LT_CURRENT=glib_lt_current
102 LT_REVISION=glib_lt_revision
104 LT_CURRENT_MINUS_AGE=glib_lt_current_minus_age
107 AC_SUBST(LT_REVISION)
109 AC_SUBST(LT_CURRENT_MINUS_AGE)
111 dnl Checks for programs.
114 AC_USE_SYSTEM_EXTENSIONS
116 AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
120 AC_MSG_CHECKING([for the BeOS])
123 glib_native_beos="yes"
126 glib_native_beos="no"
129 AC_MSG_RESULT([$glib_native_beos])
133 AC_MSG_CHECKING([for Win32])
134 LIB_EXE_MACHINE_FLAG=X86
137 glib_native_win32=yes
138 glib_pid_type='void *'
139 glib_cv_stack_grows=no
140 # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
141 # don't seem to be quite good enough, at least not in mingw-runtime-3.14.
142 # (Sorry, I don't know exactly what is the problem, but it is related to
143 # floating point formatting and decimal point vs. comma.)
144 # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
145 # rigorous enough to notice, though.
146 # So preset the autoconf cache variables.
147 ac_cv_func_vsnprintf_c99=no
148 ac_cv_func_snprintf_c99=no
151 LIB_EXE_MACHINE_FLAG=X64
155 AC_DEFINE([_WIN32_WINNT], [0x0501], [Target the Windows XP API])
168 AC_MSG_RESULT([$glib_native_win32])
170 AC_MSG_CHECKING([for the Android])
173 glib_native_android="yes"
176 glib_native_android="no"
179 AC_MSG_RESULT([$glib_native_android])
181 AC_SUBST(LIB_EXE_MACHINE_FLAG)
184 AC_MSG_CHECKING([for Mac OS X Carbon support])
186 #include <Carbon/Carbon.h>
187 #include <CoreServices/CoreServices.h>
188 ], glib_have_carbon=yes)
190 AC_MSG_RESULT([$glib_have_carbon])
193 AC_MSG_CHECKING([for Mac OS X Cocoa support])
195 #include <Cocoa/Cocoa.h>
196 #ifdef GNUSTEP_BASE_VERSION
197 #error "Detected GNUstep, not Cocoa"
199 ], glib_have_cocoa=yes)
201 AC_MSG_RESULT([$glib_have_cocoa])
203 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
204 AM_CONDITIONAL(OS_WIN32_X64, [test "$LIB_EXE_MACHINE_FLAG" = "X64"])
205 AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
206 AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
207 AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
208 AM_CONDITIONAL(OS_COCOA, [test "$glib_have_cocoa" = "yes"])
210 AS_IF([test "$glib_native_win32" = "yes"], [
211 AC_CHECK_TOOL(WINDRES, windres, no)
212 if test "$WINDRES" = no; then
213 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
215 AC_CHECK_TOOL(NM, nm, no)
216 if test "$NM" = no; then
217 AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
219 AC_CHECK_TOOL(RANLIB, ranlib, :)
220 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
221 AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
223 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
225 AS_IF([test "x$glib_have_carbon" = "xyes"], [
226 AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
227 LDFLAGS="$LDFLAGS -Wl,-framework,Carbon"
230 if test "x$glib_have_cocoa" = "xyes"; then
231 AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available])
232 LDFLAGS="$LDFLAGS -Wl,-framework,Foundation"
235 dnl declare --enable-* args and collect ac_help strings
237 AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
238 [turn on debugging @<:@default=glib_debug_default@:>@]),,
239 enable_debug=glib_debug_default)
241 AC_ARG_ENABLE(gc_friendly,
242 [AS_HELP_STRING([--enable-gc-friendly],
243 [turn on garbage collector friendliness [default=no]])],,
244 [enable_gc_friendly=no])
245 AC_ARG_ENABLE(mem_pools,
246 [AS_HELP_STRING([--disable-mem-pools],
247 [disable all glib memory pools])],,
248 [disable_mem_pools=no])
249 AC_ARG_ENABLE(rebuilds,
250 [AS_HELP_STRING([--disable-rebuilds],
251 [disable all source autogeneration rules])],,
252 [enable_rebuilds=yes])
256 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
257 AS_IF([test "x$enable_gc_friendly" = "xyes"], [
258 AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
260 ], [ AC_MSG_RESULT([no]) ])
262 AC_MSG_CHECKING([whether to disable memory pools])
263 AS_IF([test "x$disable_mem_pools" = "xno"], [
266 AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
270 dnl location to install runtime libraries, e.g. ../../lib to install
271 dnl to /lib if libdir is /usr/lib
272 AC_ARG_WITH(runtime-libdir,
273 [AS_HELP_STRING([--with-runtime-libdir=RELPATH],
274 [install runtime libraries relative to libdir])],
276 [with_runtime_libdir=""])
277 GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
278 ABS_GLIB_RUNTIME_LIBDIR="`readlink -f $libdir/$with_runtime_libdir`"
279 AC_SUBST(GLIB_RUNTIME_LIBDIR)
280 AC_SUBST(ABS_GLIB_RUNTIME_LIBDIR)
281 AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
283 dnl Check for a working C++ compiler, but do not bail out, if none is found.
284 AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
287 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
288 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
296 PKG_PROG_PKG_CONFIG(0.16)
298 if test "x$enable_debug" = "xyes"; then
299 if test x$cflags_set != xset ; then
301 *[[\ \ ]]-g[[\ \ ]]*) ;;
302 *) CFLAGS="$CFLAGS -g" ;;
305 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
307 GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
309 if test "x$enable_debug" = "xno"; then
310 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
314 # Ensure MSVC-compatible struct packing convention is used when
315 # compiling for Win32 with gcc.
316 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
317 # gcc2 uses "-fnative-struct".
318 if test x"$glib_native_win32" = xyes; then
319 if test x"$GCC" = xyes; then
321 AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
322 if test -z "$ac_cv_prog_CC"; then
325 our_gcc="$ac_cv_prog_CC"
327 case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
329 if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
330 msnative_struct='-fnative-struct'
334 if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
335 msnative_struct='-mms-bitfields'
339 if test x"$msnative_struct" = x ; then
340 AC_MSG_RESULT([no way])
341 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
343 CFLAGS="$CFLAGS $msnative_struct"
344 AC_MSG_RESULT([${msnative_struct}])
348 GLIB_EXTRA_CFLAGS="${msnative_struct}"
349 AC_SUBST(GLIB_EXTRA_CFLAGS)
353 # define a MAINT-like variable REBUILD which is set if Perl
354 # and awk are found, so autogenerated sources can be rebuilt
356 AC_CHECK_PROGS(PERL, [perl5 perl])
357 # We would like indent, but don't require it.
358 AC_CHECK_PROG(INDENT, indent, indent)
360 if test "x$enable_rebuilds" = "xyes" && \
362 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
363 test -n "$AWK" ; then
368 # Need full path to Perl for glib-mkenums
370 if test "x$PERL" != x ; then
371 AC_PATH_PROG(PERL_PATH, [$PERL])
373 if test "x$PERL_PATH" = x ; then
374 PERL_PATH="/usr/bin/env perl"
378 # option to specify python interpreter to use; this just sets $PYTHON, so that
379 # we will fallback to reading $PYTHON if --with-python is not given, and
380 # python.m4 will get the expected input
382 AS_HELP_STRING([--with-python=PATH],
383 [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"]),
384 [PYTHON="$withval"], [])
385 if test x"$PYTHON" = xyes; then
386 AC_MSG_ERROR([--with-python option requires a path or program argument])
388 AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
391 dnl ***********************
392 dnl *** Tests for iconv ***
393 dnl ***********************
395 dnl We do this before the gettext checks, to avoid distortion
397 dnl On Windows we use a native implementation
399 AS_IF([ test x"$glib_native_win32" = xyes], [
402 AC_ARG_WITH(libiconv,
403 [AS_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
404 [use the libiconv library])],,
405 [with_libiconv=maybe])
408 case $with_libiconv in
410 # Check in the C library first
411 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
412 # Check if we have GNU libiconv
413 if test $found_iconv = "no"; then
414 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
416 # Check if we have a iconv in -liconv, possibly from vendor
417 if test $found_iconv = "no"; then
418 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
422 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
425 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
428 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
432 if test "x$found_iconv" = "xno" ; then
433 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
437 AC_ARG_ENABLE(iconv-cache,
438 [AS_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
439 [cache iconv descriptors [default=auto]])],,
440 [enable_iconv_cache=auto])
442 AC_MSG_CHECKING([whether to cache iconv descriptors])
443 case $enable_iconv_cache in
445 if test $ac_cv_gnu_library_2_1 = yes; then
446 enable_iconv_cache=no
448 enable_iconv_cache=yes
453 *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
457 if test $enable_iconv_cache = yes; then
458 AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
461 AC_MSG_RESULT($enable_iconv_cache)
467 PKG_CHECK_MODULES([ZLIB], [zlib], [found_zlib=yes], [found_zlib=no])
468 AS_IF([test "x$found_zlib" = "xno"], [
469 AC_CHECK_LIB(z, inflate, [AC_CHECK_HEADER(zlib.h, found_zlib=yes)])
470 if test "x$found_zlib" = "xno" ; then
471 AC_MSG_ERROR([*** Working zlib library and headers not found ***])
477 PKG_CHECK_MODULES(LIBFFI, [libffi >= 3.0.0])
478 AC_SUBST(LIBFFI_CFLAGS)
479 AC_SUBST(LIBFFI_LIBS)
485 ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
486 AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS'])
489 if test "$gt_cv_have_gettext" != "yes" ; then
491 *** You must have either have gettext support in your C library, or use the
492 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
496 LIBS="$INTLLIBS $LIBS"
498 GETTEXT_PACKAGE=glib20
499 AC_SUBST(GETTEXT_PACKAGE)
500 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"],
501 [Define the gettext package to be used])
503 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
506 dnl Now we are done with gettext checks, figure out ICONV_LIBS
509 AS_IF([test x"$glib_native_win32" != xyes], [
510 if test x$with_libiconv != xno ; then
511 case " $INTLLIBS " in
512 *[[\ \ ]]-liconv[[\ \ ]]*) ;;
513 *) ICONV_LIBS="-liconv" ;;
519 case $with_libiconv in
521 AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
524 AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
528 dnl Initialize libtool
530 LT_INIT([disable-static win32-dll])
531 dnl when using libtool 2.x create libtool early, because it's used in configure
532 m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
535 AS_IF([test "$glib_native_win32" = "yes"], [
536 if test x$enable_static = xyes -a x$enable_shared = xyes; then
537 AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
539 if test x$enable_static = xyes; then
540 glib_win32_static_compilation=yes
541 GLIB_WIN32_STATIC_COMPILATION_DEFINE="#define GLIB_STATIC_COMPILATION 1
542 #define GOBJECT_STATIC_COMPILATION 1"
543 AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
546 AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
549 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
551 AS_IF([test $cross_compiling != yes], [
552 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
555 AC_TRY_RUN([#include <math.h>
556 int main (void) { return (log(1) != log(1.)); }],
557 AC_MSG_RESULT(none needed),
558 glib_save_CFLAGS=$CFLAGS
559 CFLAGS="$CFLAGS -std1"
560 AC_TRY_RUN([#include <math.h>
561 int main (void) { return (log(1) != log(1.)); }],
562 AC_MSG_RESULT(-std1),
564 CFLAGS=$glib_save_CFLAGS
566 [No ANSI prototypes found in library. (-std1 didn't work.)])
572 dnl NeXTStep cc seems to need this
573 AC_MSG_CHECKING([for extra flags for POSIX compliance])
574 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
575 AC_MSG_RESULT(none needed),
576 glib_save_CFLAGS=$CFLAGS
577 CFLAGS="$CFLAGS -posix"
578 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
579 AC_MSG_RESULT(-posix),
581 CFLAGS=$glib_save_CFLAGS
582 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
584 # Checks for library functions.
587 AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid)
588 AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
590 AC_CACHE_CHECK([for __libc_enable_secure], glib_cv_have_libc_enable_secure,
591 [AC_TRY_LINK([#include <unistd.h>
592 extern int __libc_enable_secure;],
593 [return __libc_enable_secure;],
594 glib_cv_have_libc_enable_secure=yes,
595 glib_cv_have_libc_enable_secure=no)])
596 AS_IF([test x$glib_cv_have_libc_enable_secure = xyes], [
597 AC_DEFINE(HAVE_LIBC_ENABLE_SECURE, 1,
598 [Define if you have the __libc_enable_secure variable (GNU libc, eglibc)])
601 AC_CHECK_SIZEOF(char)
602 AC_CHECK_SIZEOF(short)
603 AC_CHECK_SIZEOF(long)
605 AC_CHECK_SIZEOF(void *)
606 AC_CHECK_SIZEOF(long long)
607 AC_CHECK_SIZEOF(__int64)
609 AC_CACHE_CHECK([for sig_atomic_t], ac_cv_type_sig_atomic_t,
610 [AC_TRY_LINK([#include <signal.h>
611 #include <sys/types.h>
612 sig_atomic_t val = 42;],
613 [return val == 42 ? 0 : 1],
614 ac_cv_type_sig_atomic_t=yes,
615 ac_cv_type_sig_atomic_t=no)])
616 if test x$ac_cv_type_sig_atomic_t = xyes; then
617 AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
618 [Define if you have the 'sig_atomic_t' type.])
621 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
625 *** GLib requires a 64 bit type. You might want to consider
626 *** using the GNU C compiler.
630 AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
631 # long long is a 64 bit integer.
632 AC_MSG_CHECKING(for format to printf and scanf a guint64)
633 AC_CACHE_VAL(glib_cv_long_long_format,[
634 for format in ll q I64; do
635 AC_TRY_RUN([#include <stdio.h>
638 long long b, a = -0x3AFAFAFAFAFAFAFALL;
640 sprintf (buffer, "%${format}u", a);
641 sscanf (buffer, "%${format}u", &b);
645 [glib_cv_long_long_format=${format}
649 AS_IF([ test -n "$glib_cv_long_long_format"], [
650 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
651 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
652 if test x"$glib_cv_long_long_format" = xI64; then
653 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
655 ], [AC_MSG_RESULT(none)])
656 ],[ test x$ac_cv_sizeof___int64 = x8], [
657 # __int64 is a 64 bit integer.
658 AC_MSG_CHECKING(for format to printf and scanf a guint64)
659 # We know this is MSVCRT.DLL, and what the formats are
660 glib_cv_long_long_format=I64
661 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
662 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
663 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
669 dnl check in which direction the stack grows
671 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
673 volatile int *a = 0, *b = 0;
675 int main () { volatile int y = 7; a = &y; foo (); return b > a; }
676 void foo (void) { volatile int x = 5; b = &x; }
678 glib_cv_stack_grows=no
680 glib_cv_stack_grows=yes
684 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
685 dnl truely know which ones of `inline', `__inline' and `__inline__' are
686 dnl actually supported.
687 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
688 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
689 __inline int foo () { return 0; }
690 int main () { return foo (); }
692 glib_cv_has__inline=yes
694 glib_cv_has__inline=no
697 case x$glib_cv_has__inline in
698 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
700 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
701 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
702 __inline__ int foo () { return 0; }
703 int main () { return foo (); }
705 glib_cv_has__inline__=yes
707 glib_cv_has__inline__=no
710 case x$glib_cv_has__inline__ in
711 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
713 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
714 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
716 inline int foo () { return 0; }
717 int main () { return foo (); }
719 glib_cv_hasinline=yes
724 case x$glib_cv_hasinline in
725 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
728 # if we can use inline functions in headers
729 AC_MSG_CHECKING(if inline functions in headers work)
730 AC_LINK_IFELSE([AC_LANG_SOURCE([[
731 #if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
733 # define inline __inline__
734 #elif !defined (G_HAVE_INLINE)
736 # if defined (G_HAVE___INLINE__)
737 # define inline __inline__
738 # elif defined (G_HAVE___INLINE)
739 # define inline __inline
743 int glib_test_func2 (int);
746 glib_test_func1 (void) {
747 return glib_test_func2 (1);
753 }]])],[g_can_inline=yes],[g_can_inline=no])
754 AC_MSG_RESULT($g_can_inline)
756 dnl *** check for working do while(0) macros ***
757 AC_CACHE_CHECK([for working do while(0) macros], g_cv_support_dowhile_macros, [
759 #define STMT_START do
760 #define STMT_END while(0)
761 #define STMT_TEST STMT_START { i = 0; } STMT_END
762 int main(void) { int i = 1; STMT_TEST; return i; }],
763 [g_cv_support_dowhile_macros=yes],
764 [g_cv_support_dowhile_macros=no],
765 [g_cv_support_dowhile_macros=yes])
767 if test x$g_cv_support_dowhile_macros = xyes; then
768 AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
771 # check for flavours of varargs macros
772 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
774 int a(int p1, int p2, int p3);
775 #define call_a(...) a(1,__VA_ARGS__)
777 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
778 AC_MSG_RESULT($g_have_iso_c_varargs)
780 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
781 AS_IF([test "$CXX" = ""], [
783 g_have_iso_cxx_varargs=no
787 int a(int p1, int p2, int p3);
788 #define call_a(...) a(1,__VA_ARGS__)
790 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
793 AC_MSG_RESULT($g_have_iso_cxx_varargs)
795 AC_MSG_CHECKING(for GNUC varargs macros)
797 int a(int p1, int p2, int p3);
798 #define call_a(params...) a(1,params)
800 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
801 AC_MSG_RESULT($g_have_gnuc_varargs)
803 # check for GNUC visibility support
804 AC_MSG_CHECKING(for GNUC visibility attribute)
805 GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
807 __attribute__ ((visibility ("hidden")))
812 __attribute__ ((visibility ("internal")))
817 __attribute__ ((visibility ("protected")))
822 __attribute__ ((visibility ("default")))
834 ]])],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
835 AC_MSG_RESULT($g_have_gnuc_visibility)
836 AM_CONDITIONAL(HAVE_GNUC_VISIBILITY, [test x$g_have_gnuc_visibility = xyes])
838 AC_MSG_CHECKING([whether using Sun Studio C compiler])
839 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550)
841 # include "error: this is not Sun Studio."
843 ]], [[]])], [ g_have_sunstudio_visibility=yes ], [ g_have_sunstudio_visibility=no ])
844 AC_MSG_RESULT($g_have_sunstudio_visibility)
845 AM_CONDITIONAL(HAVE_SUNSTUDIO_VISIBILITY, [test x$g_have_sunstudio_visibility = xyes])
847 # check for bytesex stuff
849 if test x$ac_cv_c_bigendian = xuniversal ; then
850 AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __BIG_ENDIAN
852 #error Not a big endian.
854 ac_cv_c_bigendian=yes
855 ,AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __LITTLE_ENDIAN
857 #error Not a little endian.
860 ,AC_MSG_WARN([Could not determine endianness.])))
864 # check for header files
865 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h grp.h sys/param.h sys/poll.h sys/resource.h])
866 AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
867 AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h inttypes.h sched.h malloc.h])
868 AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h sys/filio.h])
869 AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h])
870 AC_CHECK_HEADERS([sys/uio.h sys/mkdev.h])
871 AC_CHECK_HEADERS([linux/magic.h])
872 AC_CHECK_HEADERS([sys/prctl.h])
874 AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
875 [#if HAVE_SYS_PARAM_H
876 #include <sys/param.h>
879 AC_CHECK_FUNCS(sysctlbyname)
881 AC_CHECK_HEADERS([xlocale.h])
883 # check for structure fields
884 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])
885 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename, struct statfs.f_bavail],,, [#include <sys/types.h>
886 #include <sys/stat.h>
888 #ifdef HAVE_SYS_STATFS_H
889 #include <sys/statfs.h>
891 #ifdef HAVE_SYS_PARAM_H
892 #include <sys/param.h>
894 #ifdef HAVE_SYS_MOUNT_H
895 #include <sys/mount.h>
897 # struct statvfs.f_basetype is available on Solaris but not for Linux.
898 AC_CHECK_MEMBERS([struct statvfs.f_basetype],,, [#include <sys/statvfs.h>])
899 AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,, [#include <sys/statvfs.h>])
900 AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[#include <time.h>])
902 AC_STRUCT_DIRENT_D_TYPE
904 # Checks for libcharset
906 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
907 AC_CHECK_FUNCS(setlocale)
909 # check additional type sizes
910 AC_CHECK_SIZEOF(size_t)
912 dnl Try to figure out whether gsize should be long or int
913 AC_MSG_CHECKING([for the appropriate definition for size_t])
915 case $ac_cv_sizeof_size_t in
925 $ac_cv_sizeof_long_long)
926 glib_size_type='long long'
928 $ac_cv_sizeof__int64)
929 glib_size_type='__int64'
931 *) AC_MSG_ERROR([No type matching size_t in size])
935 dnl If int/long are the same size, we see which one produces
936 dnl warnings when used in the location as size_t. (This matters
939 AS_IF([test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
940 test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long], [
941 GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
942 #if defined(_AIX) && !defined(__GNUC__)
943 #pragma options langlvl=stdc89
949 unsigned int *size_int = &s;
950 return (int)*size_int;
952 ]])],glib_size_type=int,
953 [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
954 #if defined(_AIX) && !defined(__GNUC__)
955 #pragma options langlvl=stdc89
961 unsigned long *size_long = &s;
962 return (int)*size_long;
964 ]])],glib_size_type=long)])
967 AC_MSG_RESULT(unsigned $glib_size_type)
969 AC_CHECK_SIZEOF(ssize_t)
971 dnl Try to figure out whether gssize should be long or int
972 AC_MSG_CHECKING([for the appropriate definition for ssize_t])
974 case $ac_cv_sizeof_ssize_t in
976 glib_ssize_type=short
984 $ac_cv_sizeof_long_long)
985 glib_ssize_type='long long'
987 $ac_cv_sizeof__int64)
988 glib_ssize_type='__int64'
990 *) AC_MSG_ERROR([No type matching ssize_t in size])
994 dnl If int/long are the same size, we see which one produces
995 dnl warnings when used in the location as ssize_t. (This matters
996 dnl on Android where ssize_t is long and size_t is unsigned int)
998 AS_IF([test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_int &&
999 test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_long], [
1000 GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
1001 #if defined(_AIX) && !defined(__GNUC__)
1002 #pragma options langlvl=stdc89
1005 #ifdef HAVE_INTTYPES_H
1006 # include <inttypes.h>
1008 #ifdef HAVE_STDINT_H
1009 # include <stdint.h>
1011 #ifdef HAVE_UNISTD_H
1012 # include <unistd.h>
1014 #ifdef HAVE_SYS_TYPES_H
1015 # include <sys/types.h>
1021 return (int)*size_int;
1023 ]])],glib_ssize_type=int,
1024 [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
1025 #if defined(_AIX) && !defined(__GNUC__)
1026 #pragma options langlvl=stdc89
1029 #ifdef HAVE_INTTYPES_H
1030 # include <inttypes.h>
1032 #ifdef HAVE_STDINT_H
1033 # include <stdint.h>
1035 #ifdef HAVE_UNISTD_H
1036 # include <unistd.h>
1038 #ifdef HAVE_SYS_TYPES_H
1039 # include <sys/types.h>
1044 long *size_long = &s;
1045 return (int)*size_long;
1047 ]])],glib_ssize_type=long)])
1050 AC_MSG_RESULT($glib_ssize_type)
1052 # Check for some functions
1053 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
1054 AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid getresuid)
1055 AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate)
1056 # Check for high-resolution sleep functions
1057 AC_CHECK_FUNCS(splice)
1058 AC_CHECK_FUNCS(prlimit)
1060 # To avoid finding a compatibility unusable statfs, which typically
1061 # successfully compiles, but warns to use the newer statvfs interface:
1062 AS_IF([test $ac_cv_header_sys_statvfs_h = yes], [AC_CHECK_FUNCS([statvfs])])
1063 AS_IF([test $ac_cv_header_sys_statfs_h = yes -o $ac_cv_header_sys_mount_h = yes], [AC_CHECK_FUNCS([statfs])])
1065 AC_MSG_CHECKING([whether to use statfs or statvfs])
1066 # Some systems have both statfs and statvfs, pick the most "native" for these
1067 AS_IF([test x$ac_cv_func_statfs = xyes && test x$ac_cv_func_statvfs = xyes],
1069 # on solaris and irix, statfs doesn't even have the f_bavail field
1070 AS_IF([test x$ac_cv_member_struct_statfs_f_bavail = xno],
1071 [ac_cv_func_statfs=no],
1072 # else, at least on linux, statfs is the actual syscall
1073 [ac_cv_func_statvfs=no])
1076 AS_IF([test x$ac_cv_func_statfs = xyes],
1078 AC_DEFINE([USE_STATFS], [1], [Define to use statfs()])
1079 AC_MSG_RESULT([statfs])
1081 [test x$ac_cv_func_statvfs = xyes],
1083 AC_DEFINE([USE_STATVFS], [1], [Define to use statvfs()])
1084 AC_MSG_RESULT([statvfs])
1086 [ AC_MSG_RESULT([neither])])
1088 AC_CHECK_HEADERS(crt_externs.h)
1089 AC_CHECK_FUNCS(_NSGetEnviron)
1091 AC_CHECK_FUNCS(newlocale uselocale strtod_l strtoll_l strtoull_l)
1093 AC_FUNC_VSNPRINTF_C99
1094 AC_FUNC_PRINTF_UNIX98
1096 # Internet address families
1097 if test $glib_native_win32 = yes; then
1098 glib_inet_includes=["
1099 #include <winsock2.h>
1102 glib_inet_includes=["
1103 #include <sys/types.h>
1104 #include <sys/socket.h>
1109 GLIB_CHECK_VALUE(AF_INET, $glib_inet_includes, glib_failed=true)
1110 GLIB_CHECK_VALUE(AF_INET6, $glib_inet_includes, glib_failed=true)
1111 # winsock defines this even though it doesn't support it
1112 GLIB_CHECK_VALUE(AF_UNIX, $glib_inet_includes, glib_failed=true)
1113 if $glib_failed ; then
1114 AC_MSG_ERROR([Could not determine values for AF_INET* constants])
1118 GLIB_CHECK_VALUE(MSG_PEEK, $glib_inet_includes, glib_failed=true)
1119 GLIB_CHECK_VALUE(MSG_OOB, $glib_inet_includes, glib_failed=true)
1120 GLIB_CHECK_VALUE(MSG_DONTROUTE, $glib_inet_includes, glib_failed=true)
1121 if $glib_failed ; then
1122 AC_MSG_ERROR([Could not determine values for MSG_* constants])
1125 AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex if_indextoname)
1127 AS_IF([test $glib_native_win32 = yes], [
1128 # <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
1129 # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
1130 # they aren't present at run-time (on Windows 2000).
1131 AC_CHECK_HEADER([wspiapi.h], [WSPIAPI_INCLUDE="#include <wspiapi.h>"])
1132 AC_SUBST(WSPIAPI_INCLUDE)
1134 # Android does not have C_IN in public headers, we define it wherever necessary
1135 AS_IF([test $glib_native_android != yes], [
1136 AC_MSG_CHECKING([if arpa/nameser_compat.h is needed])
1137 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
1138 #include <arpa/nameser.h>],
1139 [int qclass = C_IN;])],
1140 [AC_MSG_RESULT([no])],
1141 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
1142 #include <arpa/nameser.h>
1143 #include <arpa/nameser_compat.h>],
1144 [int qclass = C_IN;])],
1145 [AC_MSG_RESULT([yes])
1146 NAMESER_COMPAT_INCLUDE="#include <arpa/nameser_compat.h>"],
1147 [AC_MSG_ERROR([could not compile test program either way])])])])
1148 AC_SUBST(NAMESER_COMPAT_INCLUDE)
1150 # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
1152 AC_MSG_CHECKING([for res_query])
1153 AC_TRY_LINK([#include <sys/types.h>
1154 #include <netinet/in.h>
1155 #include <arpa/nameser.h>
1158 res_query("test", 0, 0, (void *)0, 0);
1159 ],[AC_MSG_RESULT([yes])],
1161 LIBS="-lresolv $LIBS"
1162 AC_TRY_LINK([#include <sys/types.h>
1163 #include <netinet/in.h>
1164 #include <arpa/nameser.h>
1167 res_query("test", 0, 0, (void *)0, 0);
1168 ],[AC_MSG_RESULT([in -lresolv])
1169 NETWORK_LIBS="-lresolv $NETWORK_LIBS"],
1170 [LIBS="-lbind $save_libs"
1171 AC_TRY_LINK([#include <resolv.h>],
1172 [res_query("test", 0, 0, (void *)0, 0);],
1173 [AC_MSG_RESULT([in -lbind])
1174 NETWORK_LIBS="-lbind $NETWORK_LIBS"],
1175 [AC_MSG_ERROR(not found)])])
1177 AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket,
1178 [NETWORK_LIBS="-lsocket $NETWORK_LIBS"],
1179 [AC_MSG_ERROR(Could not find socket())]))
1181 LIBS="$LIBS $NETWORK_LIBS"
1182 AC_MSG_CHECKING([for res_init])
1183 AC_TRY_LINK([#include <sys/types.h>
1184 #include <netinet/in.h>
1185 #include <arpa/nameser.h>
1189 ],[AC_MSG_RESULT([yes])
1190 AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if you have the 'res_init' function.])
1191 ],[AC_MSG_RESULT([no])])
1194 AC_SUBST(NETWORK_LIBS)
1196 AC_CHECK_HEADER([linux/netlink.h],
1197 [AC_DEFINE(HAVE_NETLINK, 1, [We have AF_NETLINK sockets])],,
1198 [#include <sys/socket.h>])
1199 AM_CONDITIONAL(HAVE_NETLINK, [test "$ac_cv_header_linux_netlink_h" = "yes"])
1201 AC_CHECK_TYPE([struct ip_mreqn], [
1202 AC_DEFINE(HAVE_IP_MREQN,, [Define if we have struct ip_mreqn])],,
1203 [#include <netinet/in.h>])
1207 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
1208 AC_DEFINE(_XOPEN_SOURCE, 2, Needed to get declarations for msg_control and msg_controllen on Solaris)
1209 AC_DEFINE(__EXTENSIONS__, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
1214 dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
1216 AS_IF([test "$ac_cv_func_statfs" = yes], [
1217 AC_MSG_CHECKING([number of arguments to statfs()])
1218 AC_TRY_COMPILE([#include <unistd.h>
1219 #ifdef HAVE_SYS_PARAM_H
1220 #include <sys/param.h>
1222 #ifdef HAVE_SYS_VFS_H
1223 #include <sys/vfs.h>
1225 #ifdef HAVE_SYS_MOUNT_H
1226 #include <sys/mount.h>
1228 #ifdef HAVE_SYS_STATFS_H
1229 #include <sys/statfs.h>
1230 #endif], [struct statfs st;
1231 statfs(NULL, &st);],[
1233 AC_DEFINE(STATFS_ARGS, 2, [Number of arguments to statfs()])],[
1234 AC_TRY_COMPILE([#include <unistd.h>
1235 #ifdef HAVE_SYS_PARAM_H
1236 #include <sys/param.h>
1238 #ifdef HAVE_SYS_VFS_H
1239 #include <sys/vfs.h>
1241 #ifdef HAVE_SYS_MOUNT_H
1242 #include <sys/mount.h>
1244 #ifdef HAVE_SYS_STATFS_H
1245 #include <sys/statfs.h>
1246 #endif], [struct statfs st;
1247 statfs(NULL, &st, sizeof (st), 0);],[
1249 AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
1250 AC_MSG_RESULT(unknown)
1251 AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
1255 # Check whether to use an included printf
1258 AC_ARG_ENABLE(included-printf,
1259 [AS_HELP_STRING([--enable-included-printf],
1260 [use included printf [default=auto]])],
1261 enable_included_printf="$enableval")
1263 need_included_printf=no
1264 if test "x$enable_included_printf" = "xyes" ; then
1265 need_included_printf=yes
1267 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
1268 need_included_printf=yes
1270 if test "$ac_cv_func_printf_unix98" != "yes" ; then
1271 need_included_printf=yes
1273 if test "x$ac_cv_sizeof_long_long" = "x8" &&
1274 test -z "$glib_cv_long_long_format" ; then
1275 need_included_printf=yes
1278 if test "x$enable_included_printf" = "xno" &&
1279 test "x$need_included_printf" = "xyes" ; then
1281 *** Your C library's printf doesn't appear to have the features that
1282 *** GLib needs, but you specified --enable-included-printf=no.])
1285 enable_included_printf=$need_included_printf
1287 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
1288 AS_IF([test "$enable_included_printf" != "yes"], [
1289 AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
1291 if test -z "$glib_cv_long_long_format" ; then
1292 glib_cv_long_long_format="ll"
1294 AC_DEFINE(HAVE_VASPRINTF,1)
1297 # Checks needed for gnulib vasnprintf
1299 jm_AC_TYPE_LONG_LONG
1304 AC_CHECK_TYPES(ptrdiff_t)
1306 AC_CHECK_FUNCS([snprintf wcslen])
1307 AC_FUNC_SNPRINTF_C99
1309 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
1310 # The check is borrowed from the PERL Configure script.
1311 AS_IF([test "$ac_cv_func_memmove" != "yes"], [
1312 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
1313 glib_cv_working_bcopy,[AC_TRY_RUN([
1315 char buf[128], abc[128], *b;
1316 int len, off, align;
1317 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
1318 for (align = 7; align >= 0; align--) {
1319 for (len = 36; len; len--) {
1320 b = buf+align; bcopy(abc, b, len);
1321 for (off = 1; off <= len; off++) {
1322 bcopy(b, b+off, len); bcopy(b+off, b, len);
1323 if (bcmp(b, abc, len)) return(1);
1328 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
1330 GLIB_ASSERT_SET(glib_cv_working_bcopy)
1331 if test "$glib_cv_working_bcopy" = "yes"; then
1332 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
1336 # Check if <sys/select.h> needs to be included for fd_set
1337 AC_MSG_CHECKING([for fd_set])
1338 AC_TRY_COMPILE([#include <sys/types.h>],
1339 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
1340 AS_IF([test "$gtk_ok" = "yes"], [
1341 AC_MSG_RESULT([yes, found in sys/types.h])
1343 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
1344 if test "$gtk_ok" = "yes"; then
1345 # *** FIXME: give it a different name
1346 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
1347 AC_MSG_RESULT([yes, found in sys/select.h])
1349 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
1354 dnl Check for nl_langinfo and CODESET
1357 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
1358 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
1359 [char *codeset = nl_langinfo (CODESET);])],
1360 [glib_cv_langinfo_codeset=yes],
1361 [glib_cv_langinfo_codeset=no])])
1362 if test x$glib_cv_langinfo_codeset = xyes; then
1363 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
1366 dnl Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
1367 AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
1368 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
1370 str = nl_langinfo (PM_STR);
1371 str = nl_langinfo (D_T_FMT);
1372 str = nl_langinfo (D_FMT);
1373 str = nl_langinfo (T_FMT);
1374 str = nl_langinfo (T_FMT_AMPM);
1375 str = nl_langinfo (MON_1);
1376 str = nl_langinfo (ABMON_12);
1377 str = nl_langinfo (DAY_1);
1378 str = nl_langinfo (ABDAY_7);])],
1379 [glib_cv_langinfo_time=yes],
1380 [glib_cv_langinfo_time=no])])
1381 if test x$glib_cv_langinfo_time = xyes; then
1382 AC_DEFINE(HAVE_LANGINFO_TIME,1,[Have nl_langinfo (PM_STR)])
1385 dnl Check for nl_langinfo and _NL_CTYPE_OUTDIGITn_MB
1386 AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)], glib_cv_langinfo_outdigit,[
1387 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
1389 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
1390 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
1391 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB);
1392 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB);
1393 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB);
1394 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB);
1395 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
1396 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
1397 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
1398 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);])],
1399 [glib_cv_langinfo_outdigit=yes],
1400 [glib_cv_langinfo_outdigit=no])])
1401 if test x$glib_cv_langinfo_outdigit = xyes; then
1402 AC_DEFINE(HAVE_LANGINFO_OUTDIGIT,1,[Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)])
1406 dnl ****************************************
1407 dnl *** posix_memalign ***
1408 dnl ****************************************
1409 AC_MSG_CHECKING(for a compliant posix_memalign() implementation)
1410 AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
1411 glib_cv_compliant_posix_memalign=0
1412 if test "$ac_cv_func_posix_memalign" = "yes" ; then
1414 #define _XOPEN_SOURCE 600
1415 #include <stdlib.h> /* posix_memalign() should be defined here */
1416 /* some systems break if #include <malloc.h> used */
1417 static void test_memalign (size_t boundary, size_t size) {
1419 if (posix_memalign (&mem, boundary, size) != 0 || !mem)
1425 test_memalign ( 128, 128 - 2 * sizeof (void*));
1426 test_memalign ( 256, 256 - 2 * sizeof (void*));
1427 test_memalign ( 512, 512 - 2 * sizeof (void*));
1428 test_memalign ( 1024, 1024 - 2 * sizeof (void*));
1429 test_memalign ( 2048, 2048 - 2 * sizeof (void*));
1430 test_memalign ( 4096, 4096 - 2 * sizeof (void*));
1431 test_memalign ( 8192, 8192 - 2 * sizeof (void*));
1432 test_memalign (16384, 16384 - 2 * sizeof (void*));
1433 test_memalign (32768, 32768 - 2 * sizeof (void*));
1434 exit (0); /* success */
1437 [glib_cv_compliant_posix_memalign=1], [], [:])
1441 AS_IF([test "$glib_cv_compliant_posix_memalign" = "1"], [
1443 AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
1449 dnl ****************************************
1450 dnl *** strlcpy/strlcat ***
1451 dnl ****************************************
1453 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
1454 AC_TRY_RUN([#include <stdlib.h>
1458 (void) strlcpy (p, "hi", 10);
1459 if (strlcat (p, "bye", 0) != 3)
1462 }], glib_cv_have_strlcpy=yes,
1463 glib_cv_have_strlcpy=no,
1464 glib_cv_have_strlcpy=no)])
1465 if test "$glib_cv_have_strlcpy" = "yes"; then
1466 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
1470 dnl **********************
1471 dnl *** va_copy checks ***
1472 dnl **********************
1473 dnl we currently check for all three va_copy possibilities, so we get
1474 dnl all results in config.log for bug reports.
1475 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
1476 AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <stdarg.h>
1478 void f (int i, ...) {
1479 va_list args1, args2;
1480 va_start (args1, i);
1481 va_copy (args2, args1);
1482 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1484 va_end (args1); va_end (args2);
1490 [glib_cv_va_copy=yes],
1491 [glib_cv_va_copy=no])
1493 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
1494 AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <stdarg.h>
1496 void f (int i, ...) {
1497 va_list args1, args2;
1498 va_start (args1, i);
1499 __va_copy (args2, args1);
1500 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1502 va_end (args1); va_end (args2);
1508 [glib_cv___va_copy=yes],
1509 [glib_cv___va_copy=no])
1512 if test "x$glib_cv_va_copy" = "xyes"; then
1513 g_va_copy_func=va_copy
1514 else if test "x$glib_cv___va_copy" = "xyes"; then
1515 g_va_copy_func=__va_copy
1519 if test -n "$g_va_copy_func"; then
1520 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
1523 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
1524 AC_TRY_RUN([#include <stdarg.h>
1526 void f (int i, ...) {
1527 va_list args1, args2;
1528 va_start (args1, i);
1530 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1532 va_end (args1); va_end (args2);
1538 [glib_cv_va_val_copy=yes],
1539 [glib_cv_va_val_copy=no],
1540 [glib_cv_va_val_copy=yes])
1543 AS_IF([ test "x$glib_cv_va_val_copy" = "xno"], [
1544 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
1547 dnl ***********************
1548 dnl *** g_module checks ***
1549 dnl ***********************
1551 G_MODULE_LIBS_EXTRA=
1552 G_MODULE_PLUGIN_LIBS=
1553 if test x"$glib_native_win32" = xyes; then
1554 dnl No use for this on Win32
1558 G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1560 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1561 G_MODULE_NEED_USCORE=0
1562 G_MODULE_BROKEN_RTLD_GLOBAL=0
1563 G_MODULE_HAVE_DLERROR=0
1564 dnl *** force native WIN32 shared lib loader
1565 if test -z "$G_MODULE_IMPL"; then
1567 *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1570 dnl *** force native AIX library loader
1571 dnl *** dlopen() filepath must be of the form /path/libname.a(libname.so)
1572 if test -z "$G_MODULE_IMPL"; then
1574 *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
1577 dnl *** dlopen() and dlsym() in system libraries
1578 AS_IF([ test -z "$G_MODULE_IMPL"], [
1579 AC_CHECK_FUNC(dlopen,
1580 [AC_CHECK_FUNC(dlsym,
1581 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1584 dnl *** load_image (BeOS)
1585 AS_IF([test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"], [
1586 AC_CHECK_LIB(root, load_image,
1587 [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
1588 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1589 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1590 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1593 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1594 AS_IF([ test -z "$G_MODULE_IMPL" ], [
1595 AC_CHECK_FUNC(NSLinkModule,
1596 [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1597 G_MODULE_NEED_USCORE=1],
1600 dnl *** dlopen() and dlsym() in libdl
1601 AS_IF([ test -z "$G_MODULE_IMPL"], [
1602 AC_CHECK_LIB(dl, dlopen,
1603 [AC_CHECK_LIB(dl, dlsym,
1605 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1608 dnl *** shl_load() in libdld (HP-UX)
1609 AS_IF([ test -z "$G_MODULE_IMPL"], [
1610 AC_CHECK_LIB(dld, shl_load,
1611 [G_MODULE_LIBS=-ldld
1612 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1615 dnl *** additional checks for G_MODULE_IMPL_DL
1616 AS_IF([ test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ], [
1618 LDFLAGS_orig="$LDFLAGS"
1619 LIBS="$G_MODULE_LIBS $LIBS"
1620 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1621 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1622 echo "void glib_plugin_test(void) { }" > plugin.c
1623 ${SHELL} ./libtool --mode=compile --tag=CC ${CC} ${CFLAGS} \
1624 ${CPPFLAGS} -c -o plugin.lo plugin.c >/dev/null 2>&1
1625 ${SHELL} ./libtool --mode=link --tag=CC ${CC} ${CFLAGS} \
1626 ${LDFLAGS} -module -o plugin.la -export-dynamic \
1627 -shrext ".o" -avoid-version plugin.lo \
1628 -rpath /dont/care >/dev/null 2>&1
1629 eval `./libtool --config | grep ^objdir`
1630 AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1631 glib_cv_rtldglobal_broken,[
1635 # define RTLD_GLOBAL 0
1638 # define RTLD_LAZY 0
1640 int glib_plugin_test;
1642 void *handle, *global, *local;
1643 global = &glib_plugin_test;
1644 handle = dlopen ("./$objdir/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
1645 if (!handle) return 0;
1646 local = dlsym (handle, "glib_plugin_test");
1647 return global == local;
1649 [glib_cv_rtldglobal_broken=no],
1650 [glib_cv_rtldglobal_broken=yes],
1651 [glib_cv_rtldglobal_broken=no])
1652 rm -f plugin.c plugin.o plugin.lo plugin.la ${objdir}/plugin.*
1653 rmdir ${objdir} 2>/dev/null
1655 if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1656 G_MODULE_BROKEN_RTLD_GLOBAL=1
1658 G_MODULE_BROKEN_RTLD_GLOBAL=0
1660 dnl *** check whether we need preceeding underscores
1661 AC_CACHE_CHECK([for preceeding underscore in symbols],
1663 AC_TRY_RUN([#include <dlfcn.h>
1664 int glib_underscore_test (void) { return 42; }
1666 void *f1 = (void*)0, *f2 = (void*)0, *handle;
1667 handle = dlopen ((void*)0, 0);
1669 f1 = dlsym (handle, "glib_underscore_test");
1670 f2 = dlsym (handle, "_glib_underscore_test");
1671 } return (!f2 || f1);
1673 [glib_cv_uscore=yes],
1674 [glib_cv_uscore=no],
1676 rm -f plugin.c plugin.$ac_objext plugin.lo
1678 GLIB_ASSERT_SET(glib_cv_uscore)
1679 if test "x$glib_cv_uscore" = "xyes"; then
1680 G_MODULE_NEED_USCORE=1
1682 G_MODULE_NEED_USCORE=0
1685 LDFLAGS="$LDFLAGS_orig"
1686 dnl *** check for having dlerror()
1687 AC_CHECK_FUNC(dlerror,
1688 [G_MODULE_HAVE_DLERROR=1],
1689 [G_MODULE_HAVE_DLERROR=0])
1692 dnl *** done, have we got an implementation?
1693 if test -z "$G_MODULE_IMPL"; then
1695 G_MODULE_SUPPORTED=false
1697 G_MODULE_SUPPORTED=true
1700 AC_MSG_CHECKING(for the suffix of module shared libraries)
1702 shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
1704 module=yes eval std_shrext=$shrext_cmds
1705 # chop the initial dot
1706 glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'`
1707 AC_MSG_RESULT(.$glib_gmodule_suffix)
1708 # any reason it may fail?
1709 if test "x$glib_gmodule_suffix" = x; then
1710 AC_MSG_ERROR(Cannot determine shared library suffix from libtool)
1713 AC_SUBST(G_MODULE_SUPPORTED)
1714 AC_SUBST(G_MODULE_IMPL)
1715 AC_SUBST(G_MODULE_LIBS)
1716 AC_SUBST(G_MODULE_LIBS_EXTRA)
1717 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1718 AC_SUBST(G_MODULE_LDFLAGS)
1719 AC_SUBST(G_MODULE_HAVE_DLERROR)
1720 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1721 AC_SUBST(G_MODULE_NEED_USCORE)
1722 AC_SUBST(GLIB_DEBUG_FLAGS)
1724 dnl **********************
1725 dnl *** g_spawn checks ***
1726 dnl **********************
1728 AC_MSG_CHECKING(for gspawn implementation)
1731 GSPAWN=gspawn-win32.lo
1737 AC_MSG_RESULT($GSPAWN)
1740 dnl *************************
1741 dnl *** GIOChannel checks ***
1742 dnl *************************
1744 AC_MSG_CHECKING(for GIOChannel implementation)
1756 dnl *********************************
1757 dnl *** Directory for GIO modules ***
1758 dnl *********************************
1760 AC_ARG_WITH(gio-module-dir,
1761 [AS_HELP_STRING([--with-gio-module-dir=DIR],
1762 [load gio modules from this directory [LIBDIR/gio/modules]])],
1764 [with_gio_module_dir='${libdir}/gio/modules'])
1765 GIO_MODULE_DIR=$with_gio_module_dir
1766 AC_SUBST(GIO_MODULE_DIR)
1768 dnl **********************************
1769 dnl *** Check for libselinux (GIO) ***
1770 dnl **********************************
1771 AC_ARG_ENABLE(selinux,
1772 AS_HELP_STRING([--disable-selinux],
1773 [build without selinux support]))
1776 AS_IF([ test "x$enable_selinux" != "xno"], [
1778 AC_CHECK_LIB(selinux, is_selinux_enabled,
1779 [AC_CHECK_HEADERS(selinux/selinux.h,
1780 [AC_CHECK_LIB(selinux, lgetfilecon_raw,
1781 [AC_DEFINE(HAVE_SELINUX, 1, [Define to 1 if libselinux is available])
1782 SELINUX_LIBS="-lselinux"
1787 AC_SUBST(SELINUX_LIBS)
1789 dnl *****************************
1790 dnl ** Check for inotify (GIO) **
1791 dnl *****************************
1793 AC_CHECK_HEADERS([sys/inotify.h],
1796 AC_CHECK_FUNCS(inotify_init1)
1799 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
1801 dnl ****************************
1802 dnl ** Check for kqueue (GIO) **
1803 dnl ****************************
1805 AC_CHECK_HEADERS([sys/event.h],
1807 AC_CHECK_FUNCS(kqueue kevent, [kqueue_support=yes])
1810 AM_CONDITIONAL(HAVE_KQUEUE, [test "$kqueue_support" = "yes"])
1812 dnl *********************************
1813 dnl ** Check for Solaris FEN (GIO) **
1814 dnl *********************************
1816 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
1818 #ifndef PORT_SOURCE_FILE
1819 #error "Please upgrade to Nevada 72 or above to suppoert FEN"
1821 int main() { return 0; } ]])],
1826 AM_CONDITIONAL(HAVE_FEN, [test "$fen_support" = "yes"])
1828 dnl ****************************
1829 dnl *** Checks for FAM (GIO) ***
1830 dnl ****************************
1832 should_disable_fam=no
1835 AS_HELP_STRING([--disable-fam],
1836 [don't use fam for file system monitoring]),
1838 if test "x$enable_fam" = "xno"; then
1839 should_disable_fam=yes
1845 if test "x$should_disable_fam" = "xno"; then
1846 AC_CHECK_LIB(fam, FAMOpen,
1847 [AC_CHECK_HEADERS(fam.h,
1848 [AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
1849 AC_CHECK_LIB(fam, FAMNoExists,
1850 AC_DEFINE(HAVE_FAM_NO_EXISTS, [], [Define if we have FAMNoExists in fam]))
1853 AC_MSG_WARN(*** FAM support will not be built (header files not found) ***))],
1854 AC_MSG_WARN(*** FAM support will not be built (FAM library not found) ***))
1857 AM_CONDITIONAL(HAVE_FAM, [test "$fam_support" = "yes"])
1860 dnl *****************************
1861 dnl *** Check for xattr (GIO) ***
1862 dnl *****************************
1863 AC_ARG_ENABLE(xattr,
1864 AS_HELP_STRING([--disable-xattr], [build without xattr support]))
1867 AS_IF([ test "x$enable_xattr" != "xno"], [
1869 dnl either glibc or libattr can provide xattr support
1871 dnl for both of them, we check for getxattr being in
1872 dnl the library and a valid xattr header.
1875 AC_CHECK_LIB(c, getxattr,
1876 [AC_CHECK_HEADERS(sys/xattr.h,
1877 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1881 AS_IF([ test "x$msg_xattr" != "xyes"], [
1882 dnl failure. try libattr
1883 AC_CHECK_LIB(attr, getxattr,
1884 [AC_CHECK_HEADERS(attr/xattr.h,
1885 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1891 AS_IF([ test "x$msg_xattr" = "xyes"], [
1892 AC_MSG_CHECKING([for XATTR_NOFOLLOW])
1895 #ifdef HAVE_SYS_TYPES_H
1896 #include <sys/types.h>
1898 #ifdef HAVE_SYS_XATTR_H
1899 #include <sys/xattr.h>
1900 #elif HAVE_ATTR_XATTR_H
1901 #include <attr/xattr.h>
1904 [ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);],
1906 AC_DEFINE([HAVE_XATTR_NOFOLLOW], [1], [Define to 1 if xattr API uses XATTR_NOFOLLOW])
1907 AC_MSG_RESULT([yes])
1909 [AC_MSG_RESULT([no])]
1913 AC_SUBST(XATTR_LIBS)
1915 dnl ************************
1916 dnl *** check for libelf ***
1917 dnl ************************
1918 AC_ARG_ENABLE(libelf,
1919 AS_HELP_STRING([--disable-libelf], [build without libelf support]))
1920 AS_IF([ test "x$enable_libelf" != "xno"],[
1921 PKG_CHECK_MODULES([LIBELF], [libelf >= 0.8.12], [have_libelf=yes], [have_libelf=maybe])
1922 AS_IF([ test $have_libelf = maybe ], [
1923 glib_save_LIBS=$LIBS
1924 AC_CHECK_LIB([elf], [elf_begin], [:], [have_libelf=no])
1925 AC_CHECK_LIB([elf], [elf_getshdrstrndx], [:], [have_libelf=no])
1926 AC_CHECK_LIB([elf], [elf_getshdrnum], [:], [have_libelf=no])
1927 AC_CHECK_HEADER([libelf.h], [:], [have_libelf=no])
1928 LIBS=$glib_save_LIBS
1930 if test $have_libelf != no; then
1937 if test x$have_libelf = xyes; then
1938 AC_DEFINE(HAVE_LIBELF, 1, [Define if libelf is available])
1941 dnl ****************************************
1942 dnl *** platform dependent source checks ***
1943 dnl ****************************************
1945 AC_MSG_CHECKING(for platform-dependent source)
1947 *-*-cygwin*|*-*-mingw*)
1948 PLATFORMDEP=gwin32.lo
1954 AC_MSG_RESULT($PLATFORMDEP)
1955 AC_SUBST(PLATFORMDEP)
1957 AC_MSG_CHECKING([whether to compile timeloop])
1959 *-*-cygwin*|*-*-mingw*|*-*-minix)
1966 AC_MSG_RESULT($enable_timeloop)
1967 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1969 AC_MSG_CHECKING([if building for some Win32 platform])
1971 *-*-mingw*|*-*-cygwin*)
1978 AC_MSG_RESULT($platform_win32)
1979 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1981 dnl ***********************
1982 dnl *** g_thread checks ***
1983 dnl ***********************
1985 AC_ARG_WITH(threads,
1986 [AS_HELP_STRING([--with-threads=@<:@posix/win32@:>@],
1987 [specify a thread implementation to use])],
1991 dnl error and warning message
1992 dnl *************************
1994 THREAD_NO_IMPLEMENTATION="No thread implementation found."
1996 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1997 platform (normally it's "_REENTRANT"). I'll not use any flag on
1998 compilation now, but then your programs might not work.
1999 Please provide information on how it is done on your system."
2001 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
2004 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
2005 provide information on your thread implementation."
2007 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
2008 functions will not be MT-safe during their first call because
2009 there is no working 'getpwuid_r' on your system."
2011 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
2012 because there is no 'localtime_r' on your system."
2014 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
2015 linking threaded applications. As GLib cannot do that
2016 automatically, you will get an linkg error everytime you are
2017 not using the right compiler. In that case you have to relink
2018 with the right compiler. Ususally just '_r' is appended
2019 to the compiler name."
2021 dnl determination of thread implementation
2022 dnl ***************************************
2024 AC_MSG_CHECKING(for thread implementation)
2027 AS_IF([ test "x$with_threads" = xyes || test "x$with_threads" = xposix], [
2028 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
2029 # -U_OSF_SOURCE is for Digital UNIX 4.0d
2030 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
2031 glib_save_CPPFLAGS="$CPPFLAGS"
2032 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2033 AS_IF([ test "x$have_threads" = xno], [
2034 AC_TRY_COMPILE([#include <pthread.h>],
2035 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
2038 # Tru64Unix requires -pthread to find pthread.h. See #103020
2039 CPPFLAGS="$CPPFLAGS -pthread"
2040 if test "x$have_threads" = xno; then
2041 AC_TRY_COMPILE([#include <pthread.h>],
2042 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
2045 CPPFLAGS="$glib_save_CPPFLAGS"
2047 if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then
2055 if test "x$have_threads" = xno; then
2056 AC_MSG_RESULT(none available)
2057 AC_MSG_ERROR($THREAD_NO_IMPLEMENTATION)
2059 AC_MSG_RESULT($have_threads)
2063 dnl determination of G_THREAD_CFLAGS
2064 dnl ********************************
2067 G_THREAD_LIBS_EXTRA=
2071 dnl Test program for basic POSIX threads functionality
2073 m4_define([glib_thread_test],[
2074 #include <pthread.h>
2076 void* func(void* data) {check_me = 42; return &check_me;}
2080 pthread_create (&t, $1, func, 0);
2081 pthread_join (t, &ret);
2082 return (check_me != 42 || ret != &check_me);
2085 AS_IF([ test x"$have_threads" = xposix], [
2086 # First we test for posix, whether -pthread or -pthreads do the trick as
2087 # both CPPFLAG and LIBS.
2088 # One of them does for most gcc versions and some other platforms/compilers
2089 # too and could be considered as the canonical way to go.
2091 *-*-cygwin*|*-*-darwin*)
2092 # skip cygwin and darwin -pthread or -pthreads test
2095 # These compiler/linker flags work with both Sun Studio and gcc
2096 # Sun Studio expands -mt to -D_REENTRANT and -lthread
2097 # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
2098 G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
2099 G_THREAD_LIBS="-lpthread -lthread"
2102 for flag in pthread pthreads mt; do
2103 glib_save_CFLAGS="$CFLAGS"
2104 CFLAGS="$CFLAGS -$flag"
2105 AC_TRY_RUN(glib_thread_test(0),
2106 glib_flag_works=yes,
2108 [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test(0))],
2109 glib_flag_works=yes,
2110 glib_flag_works=no)])
2111 CFLAGS="$glib_save_CFLAGS"
2112 if test $glib_flag_works = yes ; then
2113 G_THREAD_CFLAGS=-$flag
2114 G_THREAD_LIBS=-$flag
2122 AS_IF([ test x"$G_THREAD_CFLAGS" = x], [
2124 # The canonical -pthread[s] does not work. Try something different.
2128 if test x"$GCC" = xyes; then
2129 # GCC 3.0 and above needs -pthread.
2130 # Should be coverd by the case above.
2131 # GCC 2.x and below needs -mthreads
2132 G_THREAD_CFLAGS="-mthreads"
2133 G_THREAD_LIBS=$G_THREAD_CFLAGS
2135 # We are probably using the aix compiler. Normaly a
2136 # program would have to be compiled with the _r variant
2137 # of the corresponding compiler, but we as GLib cannot
2138 # do that: but the good news is that for compiling the
2139 # only difference is the added -D_THREAD_SAFE compile
2140 # option. This is according to the "C for AIX User's
2142 G_THREAD_CFLAGS="-D_THREAD_SAFE"
2146 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
2148 *-sysv5uw7*) # UnixWare 7
2149 # We are not using gcc with -pthread. Catched above.
2150 G_THREAD_CFLAGS="-Kthread"
2151 G_THREAD_LIBS=$G_THREAD_CFLAGS
2154 # No flag needed when using MSVCRT.DLL
2158 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
2163 # if we are not finding the localtime_r function, then we probably are
2164 # not using the proper multithread flag
2166 glib_save_CPPFLAGS="$CPPFLAGS"
2167 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
2169 # First we test, whether localtime_r is declared in time.h
2170 # directly. Then we test whether a macro localtime_r exists, in
2171 # which case localtime_r in the test program is replaced and thus
2172 # if we still find localtime_r in the output, it is not defined as
2175 AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
2176 [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>
2178 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
2180 CPPFLAGS="$glib_save_CPPFLAGS"
2182 AC_MSG_CHECKING(thread related cflags)
2183 AC_MSG_RESULT($G_THREAD_CFLAGS)
2184 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
2186 dnl determination of G_THREAD_LIBS
2187 dnl ******************************
2189 AS_IF([test x$have_threads = xposix], [
2190 glib_save_CPPFLAGS="$CPPFLAGS"
2191 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2192 AS_IF([ test x"$G_THREAD_LIBS" = x ], [
2195 # We are not using gcc (would have set G_THREAD_LIBS) and thus
2196 # probably using the aix compiler.
2197 AC_MSG_WARN($AIX_COMPILE_INFO)
2201 glib_save_LIBS="$LIBS"
2202 for thread_lib in "" pthread pthread32 pthreads thread; do
2203 if test x"$thread_lib" = x; then
2207 add_thread_lib="-l$thread_lib"
2208 IN=" in -l$thread_lib"
2210 if test x"$have_threads" = xposix; then
2213 defattr=pthread_attr_default
2216 LIBS="$add_thread_lib $glib_save_LIBS"
2218 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
2219 AC_TRY_RUN(glib_thread_test($defattr),
2222 [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test($defattr))],
2225 AC_MSG_RESULT($glib_result)
2227 if test "$glib_result" = "yes" ; then
2228 G_THREAD_LIBS="$add_thread_lib"
2232 if test "x$G_THREAD_LIBS" = xerror; then
2233 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2235 LIBS="$glib_save_LIBS"
2240 g_threads_impl="POSIX"
2241 AC_DEFINE([THREADS_POSIX], [1], [Use pthreads])
2242 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
2243 CPPFLAGS="$glib_save_CPPFLAGS"
2244 ], [test x$have_threads = xwin32], [
2245 AC_DEFINE([THREADS_WIN32], [1], [Use w32 threads])
2246 g_threads_impl="WIN32"
2248 AC_DEFINE([THREADS_NONE], [1], [Use no threads])
2249 g_threads_impl="NONE"
2252 AM_CONDITIONAL(THREADS_POSIX, [test "$g_threads_impl" = "POSIX"])
2253 AM_CONDITIONAL(THREADS_WIN32, [test "$g_threads_impl" = "WIN32"])
2254 AM_CONDITIONAL(THREADS_NONE, [test "$g_threads_impl" = "NONE"])
2256 if test "x$G_THREAD_LIBS" = xerror; then
2257 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2262 G_THREAD_LIBS="-lbe -lroot -lglib-2.0 "
2263 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
2269 AC_MSG_CHECKING(thread related libraries)
2270 AC_MSG_RESULT($G_THREAD_LIBS)
2272 dnl check for mt safe function variants and some posix functions
2273 dnl ************************************************************
2275 glib_save_LIBS="$LIBS"
2276 # we are not doing the following for now, as this might require glib
2277 # to always be linked with the thread libs on some platforms.
2278 # LIBS="$LIBS $G_THREAD_LIBS"
2279 AC_CHECK_FUNCS(localtime_r gmtime_r)
2280 AS_IF([ test "$ac_cv_header_pwd_h" = "yes"], [
2281 AC_CACHE_CHECK([for posix getpwuid_r],
2282 ac_cv_func_posix_getpwuid_r,
2288 struct passwd pwd, *pwptr = &pwd;
2291 error = getpwuid_r (0, &pwd, buffer,
2292 sizeof (buffer), &pwptr);
2293 return (error < 0 && errno == ENOSYS)
2296 [ac_cv_func_posix_getpwuid_r=yes],
2297 [ac_cv_func_posix_getpwuid_r=no])])
2298 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
2299 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
2300 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
2301 [Have POSIX function getpwuid_r])
2303 AC_CACHE_CHECK([for nonposix getpwuid_r],
2304 ac_cv_func_nonposix_getpwuid_r,
2305 [AC_TRY_LINK([#include <pwd.h>],
2306 [char buffer[10000];
2308 getpwuid_r (0, &pwd, buffer,
2310 [ac_cv_func_nonposix_getpwuid_r=yes],
2311 [ac_cv_func_nonposix_getpwuid_r=no])])
2312 GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
2313 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
2314 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
2315 [Have non-POSIX function getpwuid_r])
2319 AS_IF([ test "$ac_cv_header_grp_h" = "yes"], [
2320 AC_CACHE_CHECK([for posix getgrgid_r],
2321 ac_cv_func_posix_getgrgid_r,
2327 struct group grp, *grpptr = &grp;
2330 error = getgrgid_r (0, &grp, buffer,
2331 sizeof (buffer), &grpptr);
2332 return (error < 0 && errno == ENOSYS)
2335 [ac_cv_func_posix_getgrgid_r=yes],
2336 [ac_cv_func_posix_getgrgid_r=no])])
2337 GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
2338 AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [
2339 AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
2340 [Have POSIX function getgrgid_r])
2342 AC_CACHE_CHECK([for nonposix getgrgid_r],
2343 ac_cv_func_nonposix_getgrgid_r,
2344 [AC_TRY_LINK([#include <grp.h>],
2345 [char buffer[10000];
2347 getgrgid_r (0, &grp, buffer,
2349 [ac_cv_func_nonposix_getgrgid_r=yes],
2350 [ac_cv_func_nonposix_getgrgid_r=no])])
2351 GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
2352 if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
2353 AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
2354 [Have non-POSIX function getgrgid_r])
2358 LIBS="$G_THREAD_LIBS $LIBS"
2359 AS_IF([ test x"$have_threads" = xposix], [
2360 glib_save_CPPFLAGS="$CPPFLAGS"
2361 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2362 # This is not AC_CHECK_FUNC to also work with function
2363 # name mangling in header files.
2364 AC_MSG_CHECKING(for pthread_attr_setstacksize)
2367 [#include <pthread.h>],
2368 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)])],
2370 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
2371 [Have function pthread_attr_setstacksize])],
2372 [AC_MSG_RESULT(no)])
2373 AC_MSG_CHECKING(for pthread_condattr_setclock)
2376 [#include <pthread.h>],
2377 [pthread_condattr_t a; pthread_condattr_setclock(&a,0)])],
2379 AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK,1,
2380 [Have function pthread_condattr_setclock])],
2381 [AC_MSG_RESULT(no)])
2382 AC_MSG_CHECKING(for pthread_cond_timedwait_monotonic)
2385 [#include <pthread.h>],
2386 [pthread_cond_timedwait_monotonic(NULL, NULL, NULL)])],
2388 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC,1,
2389 [Have function pthread_cond_timedwait_monotonic])],
2390 [AC_MSG_RESULT(no)])
2391 AC_MSG_CHECKING(for pthread_cond_timedwait_monotonic_np)
2394 [#include <pthread.h>],
2395 [pthread_cond_timedwait_monotonic_np(NULL, NULL, NULL)])],
2397 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC_NP,1,
2398 [Have function pthread_cond_timedwait_monotonic_np])],
2399 [AC_MSG_RESULT(no)])
2400 CPPFLAGS="$glib_save_CPPFLAGS"
2403 LIBS="$glib_save_LIBS"
2405 # now spit out all the warnings.
2406 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
2407 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
2408 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
2410 if test "$ac_cv_func_localtime_r" != "yes"; then
2411 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
2415 # Hack to deal with:
2417 # a) GCC < 3.3 for Linux doesn't include -lpthread when
2418 # building shared libraries with linux.
2419 # b) FreeBSD doesn't do this either.
2423 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
2425 *-*-freebsd*|*-*-linux*)
2426 G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
2429 LDFLAGS="$LDFLAGS -pthread"
2432 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
2436 AC_SUBST(G_THREAD_CFLAGS)
2437 AC_SUBST(G_THREAD_LIBS)
2438 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
2439 AC_SUBST(G_THREAD_LIBS_EXTRA)
2441 AC_CHECK_FUNCS(clock_gettime, [], [
2442 AC_CHECK_LIB(rt, clock_gettime, [
2443 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
2444 G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
2445 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
2450 dnl ************************
2451 dnl *** g_atomic_* tests ***
2452 dnl ************************
2454 dnl We need to decide at configure time if GLib will use real atomic
2455 dnl operations ("lock free") or emulated ones with a mutex. This is
2456 dnl because we must put this information in glibconfig.h so we know if
2457 dnl it is safe or not to inline using compiler intrinsics directly from
2460 dnl We also publish the information via G_ATOMIC_LOCK_FREE in case the
2461 dnl user is interested in knowing if they can use the atomic ops across
2464 dnl We can currently support the atomic ops natively when building GLib
2465 dnl with recent versions of GCC or MSVC. MSVC doesn't run ./configure,
2466 dnl so we skip that case here and define G_ATOMIC_LOCK_FREE exactly when
2467 dnl we are using GCC (and not mingw*).
2469 dnl Note that the atomic ops are only available with GCC on x86 when
2470 dnl using -march=i486 or higher. If we detect that the atomic ops are
2471 dnl not available but would be available given the right flags, we want
2472 dnl to abort and advise the user to fix their CFLAGS. It's better to do
2473 dnl that then to silently fall back on emulated atomic ops just because
2474 dnl the user had the wrong build environment.
2476 dnl We may add other compilers here in the future...
2478 AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
2481 glib_cv_g_atomic_lock_free=yes
2485 [volatile int atomic = 2;\
2486 __sync_bool_compare_and_swap (&atomic, 2, 3);],
2487 [glib_cv_g_atomic_lock_free=yes],
2488 [glib_cv_g_atomic_lock_free=no])
2489 if test "$glib_cv_g_atomic_lock_free" = "no"; then
2490 SAVE_CFLAGS="${CFLAGS}"
2491 CFLAGS="-march=i486"
2493 [volatile int atomic = 2;\
2494 __sync_bool_compare_and_swap (&atomic, 2, 3);],
2495 [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
2497 CFLAGS="${SAVE_CFLAGS}"
2507 # Some compilers support atomic operations but do not define
2508 # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
2509 if test x"$glib_cv_g_atomic_lock_free" = xyes; then
2511 [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
2513 [AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
2518 dnl We need a more robust approach here...
2520 i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
2521 glib_memory_barrier_needed=no
2523 sparc*|alpha*|powerpc*|ia64)
2524 glib_memory_barrier_needed=yes
2527 glib_memory_barrier_needed=yes
2531 dnl ************************
2532 dnl ** Check for futex(2) **
2533 dnl ************************
2534 AC_CACHE_CHECK(for futex(2) system call,
2535 glib_cv_futex,AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
2536 #include <linux/futex.h>
2537 #include <sys/syscall.h>
2543 /* it is not like this actually runs or anything... */
2544 syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
2547 ])],glib_cv_futex=yes,glib_cv_futex=no))
2548 if test x"$glib_cv_futex" = xyes; then
2549 AC_DEFINE(HAVE_FUTEX, 1, [we have the futex(2) system call])
2552 AC_CACHE_CHECK(for eventfd(2) system call,
2553 glib_cv_eventfd,AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
2554 #include <sys/eventfd.h>
2560 eventfd (0, EFD_CLOEXEC);
2563 ])],glib_cv_eventfd=yes,glib_cv_eventfd=no))
2564 if test x"$glib_cv_eventfd" = x"yes"; then
2565 AC_DEFINE(HAVE_EVENTFD, 1, [we have the eventfd(2) system call])
2567 AM_CONDITIONAL(HAVE_EVENTFD, [test "$glib_cv_eventfd" = "yes"])
2569 dnl ****************************************
2570 dnl *** GLib POLL* compatibility defines ***
2571 dnl ****************************************
2573 glib_poll_includes=["
2574 #include <sys/types.h>
2575 #include <sys/poll.h>
2578 AS_IF([ test $ac_cv_header_sys_types_h = yes &&
2579 test $ac_cv_header_sys_poll_h = yes ], [
2581 GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
2582 GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
2583 GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
2584 GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
2585 GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
2586 GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
2587 if $glib_failed ; then
2588 AC_MSG_ERROR([Could not determine values for POLL* constants])
2591 glib_cv_value_POLLIN=1
2592 glib_cv_value_POLLOUT=4
2593 glib_cv_value_POLLPRI=2
2594 glib_cv_value_POLLERR=8
2595 glib_cv_value_POLLHUP=16
2596 glib_cv_value_POLLNVAL=32
2599 AC_MSG_CHECKING([for broken poll])
2600 AC_RUN_IFELSE([AC_LANG_SOURCE([[
2604 #ifdef HAVE_SYS_POLL_H
2605 #include <sys/poll.h>
2608 struct pollfd fds[1];
2610 fd = open("/dev/null", 1);
2612 fds[0].events = POLLIN;
2614 if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
2615 exit(1); /* Does not work for devices -- fail */
2621 AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
2622 [broken_poll="no (cross compiling)"])
2623 AC_MSG_RESULT($broken_poll)
2625 dnl *********************
2626 dnl *** GRegex checks ***
2627 dnl *********************
2629 PCRE_REQUIRED_VERSION=8.13
2631 # Check if we should use the internal or the system-supplied pcre
2633 [AS_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
2634 [whether to use system PCRE [default=internal]])])
2636 AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
2638 AS_IF([ test "x$with_pcre" = xsystem], [
2639 PKG_CHECK_MODULES(PCRE,
2640 libpcre >= $PCRE_REQUIRED_VERSION)
2641 AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
2642 glib_save_CFLAGS="$CFLAGS"
2643 glib_save_LIBS="$LIBS"
2644 CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
2645 AC_TRY_RUN([#include <pcre.h>
2648 pcre_config (PCRE_CONFIG_UTF8, &support);
2651 pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
2656 glib_cv_pcre_has_unicode=yes,
2657 glib_cv_pcre_has_unicode=no,
2658 glib_cv_pcre_has_unicode=yes)
2659 CFLAGS="$glib_save_CFLAGS"
2660 LIBS="$glib_save_LIBS"
2662 if test "$glib_cv_pcre_has_unicode" = "no"; then
2663 AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
2665 AC_SUBST(PCRE_CFLAGS)
2667 AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
2668 PCRE_REQUIRES=libpcre
2669 AC_SUBST(PCRE_REQUIRES)
2671 # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
2672 AS_IF([ test x"$GCC" = xyes], [
2673 AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
2674 save_CFLAGS="$CFLAGS"
2675 CFLAGS="$CFLAGS -Wno-pointer-sign"
2676 AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
2677 AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
2678 CFLAGS="$save_CFLAGS"
2681 AC_SUBST(PCRE_WARN_CFLAGS)
2683 dnl **********************
2684 dnl *** Win32 API libs ***
2685 dnl **********************
2689 G_LIBS_EXTRA="-luser32 -lkernel32"
2692 G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi"
2698 AC_SUBST(G_LIBS_EXTRA)
2700 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
2701 dnl since we need it for g_iconv()
2703 AC_MSG_CHECKING([for EILSEQ])
2709 ], have_eilseq=yes, have_eilseq=no);
2710 AC_MSG_RESULT($have_eilseq)
2712 dnl ******************************************************************
2713 dnl *** If we are cross-compiling, look for glib-genmarshal and ***
2714 dnl *** glib-compile-schemas in PATH ***
2715 dnl ******************************************************************
2717 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
2719 AS_IF([ test $cross_compiling = yes ], [
2720 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
2721 if test x$GLIB_GENMARSHAL = xno; then
2722 AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
2725 AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas, no)
2726 if test x$GLIB_COMPILE_SCHEMAS = xno; then
2727 AC_MSG_ERROR(Could not find a glib-compile-schemas in your PATH)
2730 AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
2731 if test x$GLIB_COMPILE_RESOURCES = xno; then
2732 AC_MSG_ERROR(Could not find a glib-compile-resources in your PATH)
2736 dnl **************************
2737 dnl *** Checks for gtk-doc ***
2738 dnl **************************
2739 # gtkdocize greps for ^GTK_DOC_CHECK and parses it, so you need to have
2740 # it on it's own line.
2741 m4_ifdef([GTK_DOC_CHECK], [
2742 GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
2744 AM_CONDITIONAL([ENABLE_GTK_DOC],[false])
2748 [AS_HELP_STRING([--enable-man],
2749 [generate man pages [default=auto]])],,
2752 AS_IF([test "$enable_man" != no], [
2753 AC_PATH_PROG([XSLTPROC], [xsltproc])
2754 AS_IF([test -z "$XSLTPROC"], [
2755 AS_IF([test "$enable_man" = yes], [
2756 AC_MSG_ERROR([xsltproc is required for --enable-man])
2762 AS_IF([ test "$enable_man" != no ], [
2763 dnl check for DocBook DTD in the local catalog
2764 JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
2765 [DocBook XML DTD V4.1.2], [have_docbook_dtd=yes], [have_docbook_dtd=no])
2766 AS_IF([test "$have_docbook_dtd" != yes], [
2767 AS_IF([test "$enable_man" = yes ], [
2768 AC_MSG_ERROR([DocBook DTD is required for --enable-man])
2774 AS_IF([test "$enable_man" != no], [
2775 dnl check for DocBook XSL stylesheets in the local catalog
2776 JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
2777 [DocBook XSL Stylesheets], [have_docbook_style=yes],[have_docbook_style=no])
2778 AS_IF([ test "$have_docbook_dtd" != yes ], [
2779 AS_IF([ test "$enable_man" = yes ], [
2780 AC_MSG_ERROR([DocBook XSL Stylesheets are required for --enable-man])
2786 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
2788 AC_MSG_CHECKING([whether to generate man pages])
2789 AS_IF([ test "$enable_man" != no ], [
2790 AC_MSG_RESULT([yes])
2799 AC_ARG_ENABLE([dtrace],
2800 [AS_HELP_STRING([--enable-dtrace],
2801 [include tracing support for dtrace])])
2803 AC_MSG_CHECKING([whether to include dtrace tracing support])
2804 AS_IF([ test "x$enable_dtrace" != xno], [
2805 if test x$glib_have_carbon = xyes; then
2806 AC_MSG_RESULT([no (not yet compatible with MacOS dtrace)])
2808 AC_MSG_RESULT([yes])
2809 AC_CHECK_PROGS(DTRACE, dtrace)
2810 if test -z "$DTRACE"; then
2811 if test "x$enable_dtrace" = xyes; then
2812 AC_MSG_ERROR([dtrace not found])
2815 AC_CHECK_HEADER([sys/sdt.h],have_dtrace=yes,
2816 [if test "x$enable_dtrace" = xyes; then
2817 AC_MSG_ERROR([dtrace support needs sys/sdt.h header])
2824 if test "x$have_dtrace" = xyes; then
2825 AC_DEFINE([HAVE_DTRACE], [1], [Define to 1 if using dtrace probes.])
2827 AM_CONDITIONAL([ENABLE_DTRACE], [test x$have_dtrace = xyes ])
2829 AC_MSG_CHECKING([whether to include systemtap tracing support])
2830 AC_ARG_ENABLE([systemtap],
2831 [AS_HELP_STRING([--enable-systemtap],
2832 [include tracing support for systemtap])])
2834 if test "x$enable_systemtap" != xno -a "x$have_dtrace" = xyes; then
2837 AC_MSG_RESULT(${have_systemtap})
2839 AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$have_systemtap = xyes])
2841 AC_ARG_WITH([tapset-install-dir],
2842 AS_HELP_STRING([--with-tapset-install-dir=DIR],
2843 [path where systemtap tapsets are installed [DATADIR/systemtap/tapset]]),
2844 [if test "x${withval}" = x; then
2845 ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"
2847 ABS_TAPSET_DIR="${withval}"
2849 [ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"])
2850 AC_SUBST(ABS_TAPSET_DIR)
2852 dnl ************************************
2853 dnl *** Enable lcov coverage reports ***
2854 dnl ************************************
2857 AS_HELP_STRING([--enable-gcov],
2858 [enable coverage testing with gcov]),
2859 [use_gcov=$enableval], [use_gcov=no])
2861 AS_IF([ test "x$use_gcov" = "xyes"], [
2863 if test "$GCC" != "yes"; then
2864 AC_MSG_ERROR([GCC is required for --enable-gcov])
2867 dnl Check if ccache is being used
2868 AC_CHECK_PROG(SHTOOL, shtool, shtool)
2869 case `$SHTOOL path $CC` in
2870 *ccache*[)] gcc_ccache=yes;;
2871 *[)] gcc_ccache=no;;
2874 if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
2875 AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
2878 ltp_version_list="1.6 1.7 1.8 1.9 1.10"
2879 AC_CHECK_PROG(LTP, lcov, lcov)
2880 AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
2882 AS_IF([ test "$LTP" ], [
2883 AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
2884 glib_cv_ltp_version=invalid
2885 ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
2886 for ltp_check_version in $ltp_version_list; do
2887 if test "$ltp_version" = "$ltp_check_version"; then
2888 glib_cv_ltp_version="$ltp_check_version (ok)"
2893 ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
2894 AC_MSG_ERROR([$ltp_msg])
2897 case $glib_cv_ltp_version in
2899 ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
2900 AC_MSG_ERROR([$ltp_msg])
2905 if test -z "$LTP_GENHTML"; then
2906 AC_MSG_ERROR([Could not find genhtml from the LTP package])
2909 dnl Remove all optimization flags from CFLAGS
2911 CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
2914 dnl Add the special gcc flags
2915 CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
2916 LDFLAGS="$LDFLAGS -lgcov"
2919 dnl ******************************
2920 dnl *** output the whole stuff ***
2921 dnl ******************************
2923 dnl this section will only be run if config.status is invoked with no
2924 dnl arguments, or with "glib/glibconfig.h" as an argument.
2925 AC_CONFIG_COMMANDS([glib/glibconfig.h],
2927 outfile=glib/glibconfig.h-tmp
2928 cat > $outfile <<\_______EOF
2931 * This is a generated file. Please modify 'configure.ac'
2934 #ifndef __GLIBCONFIG_H__
2935 #define __GLIBCONFIG_H__
2937 #include <glib/gmacros.h>
2941 if test x$glib_limits_h = xyes; then
2942 echo '#include <limits.h>' >> $outfile
2944 if test x$glib_float_h = xyes; then
2945 echo '#include <float.h>' >> $outfile
2947 if test x$glib_values_h = xyes; then
2948 echo '#include <values.h>' >> $outfile
2950 if test "$glib_header_alloca_h" = "yes"; then
2951 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
2953 if test x$glib_sys_poll_h = xyes; then
2954 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
2956 if test x$glib_included_printf != xyes; then
2958 /* Specifies that GLib's g_print*() functions wrap the
2959 * system printf functions. This is useful to know, for example,
2960 * when using glibc's register_printf_function().
2962 echo '#define GLIB_USING_SYSTEM_PRINTF' >> $outfile
2965 cat >> $outfile <<_______EOF
2969 #define G_MINFLOAT $glib_mf
2970 #define G_MAXFLOAT $glib_Mf
2971 #define G_MINDOUBLE $glib_md
2972 #define G_MAXDOUBLE $glib_Md
2973 #define G_MINSHORT $glib_ms
2974 #define G_MAXSHORT $glib_Ms
2975 #define G_MAXUSHORT $glib_Mus
2976 #define G_MININT $glib_mi
2977 #define G_MAXINT $glib_Mi
2978 #define G_MAXUINT $glib_Mui
2979 #define G_MINLONG $glib_ml
2980 #define G_MAXLONG $glib_Ml
2981 #define G_MAXULONG $glib_Mul
2986 ### this should always be true in a modern C/C++ compiler
2987 cat >>$outfile <<_______EOF
2988 typedef signed char gint8;
2989 typedef unsigned char guint8;
2993 if test -n "$gint16"; then
2994 cat >>$outfile <<_______EOF
2995 typedef signed $gint16 gint16;
2996 typedef unsigned $gint16 guint16;
2997 #define G_GINT16_MODIFIER $gint16_modifier
2998 #define G_GINT16_FORMAT $gint16_format
2999 #define G_GUINT16_FORMAT $guint16_format
3004 if test -n "$gint32"; then
3005 cat >>$outfile <<_______EOF
3006 typedef signed $gint32 gint32;
3007 typedef unsigned $gint32 guint32;
3008 #define G_GINT32_MODIFIER $gint32_modifier
3009 #define G_GINT32_FORMAT $gint32_format
3010 #define G_GUINT32_FORMAT $guint32_format
3014 cat >>$outfile <<_______EOF
3015 #define G_HAVE_GINT64 1 /* deprecated, always true */
3017 ${glib_extension}typedef signed $gint64 gint64;
3018 ${glib_extension}typedef unsigned $gint64 guint64;
3020 #define G_GINT64_CONSTANT(val) $gint64_constant
3021 #define G_GUINT64_CONSTANT(val) $guint64_constant
3024 if test x$gint64_format != x ; then
3025 cat >>$outfile <<_______EOF
3026 #define G_GINT64_MODIFIER $gint64_modifier
3027 #define G_GINT64_FORMAT $gint64_format
3028 #define G_GUINT64_FORMAT $guint64_format
3031 cat >>$outfile <<_______EOF
3032 #undef G_GINT64_MODIFIER
3033 #undef G_GINT64_FORMAT
3034 #undef G_GUINT64_FORMAT
3038 cat >>$outfile <<_______EOF
3040 #define GLIB_SIZEOF_VOID_P $glib_void_p
3041 #define GLIB_SIZEOF_LONG $glib_long
3042 #define GLIB_SIZEOF_SIZE_T $glib_size_t
3043 #define GLIB_SIZEOF_SSIZE_T $glib_ssize_t
3047 cat >>$outfile <<_______EOF
3048 typedef signed $glib_ssize_type_define gssize;
3049 typedef unsigned $glib_size_type_define gsize;
3050 #define G_GSIZE_MODIFIER $gsize_modifier
3051 #define G_GSSIZE_MODIFIER $gssize_modifier
3052 #define G_GSIZE_FORMAT $gsize_format
3053 #define G_GSSIZE_FORMAT $gssize_format
3055 #define G_MAXSIZE G_MAXU$glib_msize_type
3056 #define G_MINSSIZE G_MIN$glib_mssize_type
3057 #define G_MAXSSIZE G_MAX$glib_mssize_type
3059 typedef gint64 goffset;
3060 #define G_MINOFFSET G_MININT64
3061 #define G_MAXOFFSET G_MAXINT64
3063 #define G_GOFFSET_MODIFIER G_GINT64_MODIFIER
3064 #define G_GOFFSET_FORMAT G_GINT64_FORMAT
3065 #define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
3069 if test -z "$glib_unknown_void_p"; then
3070 cat >>$outfile <<_______EOF
3072 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
3073 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
3075 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
3076 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
3078 typedef signed $glib_intptr_type_define gintptr;
3079 typedef unsigned $glib_intptr_type_define guintptr;
3081 #define G_GINTPTR_MODIFIER $gintptr_modifier
3082 #define G_GINTPTR_FORMAT $gintptr_format
3083 #define G_GUINTPTR_FORMAT $guintptr_format
3086 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
3091 cat >>$outfile <<_______EOF
3096 $glib_static_compilation
3101 #define G_HAVE_INLINE 1
3102 #else /* !__cplusplus */
3104 #endif /* !__cplusplus */
3107 #define G_CAN_INLINE 1
3110 if test x$g_can_inline = xyes ; then
3111 cat >>$outfile <<_______EOF
3112 #else /* !__cplusplus */
3113 #define G_CAN_INLINE 1
3117 cat >>$outfile <<_______EOF
3122 if test x$g_have_iso_c_varargs = xyes ; then
3123 cat >>$outfile <<_______EOF
3125 # define G_HAVE_ISO_VARARGS 1
3129 if test x$g_have_iso_cxx_varargs = xyes ; then
3130 cat >>$outfile <<_______EOF
3132 # define G_HAVE_ISO_VARARGS 1
3136 if test x$g_have_gnuc_varargs = xyes ; then
3137 cat >>$outfile <<_______EOF
3139 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
3140 * is passed ISO vararg support is turned off, and there is no work
3141 * around to turn it on, so we unconditionally turn it off.
3143 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
3144 # undef G_HAVE_ISO_VARARGS
3147 #define G_HAVE_GNUC_VARARGS 1
3151 case x$g_stack_grows in
3152 xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
3153 *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
3158 if test x$g_have_eilseq = xno; then
3159 cat >>$outfile <<_______EOF
3161 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
3162 * The correspondence between this and the corresponding definition
3163 * in libiconv is essential.
3165 # define EILSEQ ENOENT
3171 if test x$g_have_gnuc_visibility = xyes; then
3172 cat >>$outfile <<_______EOF
3173 #define G_HAVE_GNUC_VISIBILITY 1
3176 cat >>$outfile <<_______EOF
3177 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
3178 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
3179 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
3180 #define G_GNUC_INTERNAL __hidden
3181 #elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
3182 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
3184 #define G_GNUC_INTERNAL
3189 cat >>$outfile <<_______EOF
3190 #define G_THREADS_ENABLED
3191 #define G_THREADS_IMPL_$g_threads_impl_def
3194 if test x"$g_memory_barrier_needed" != xno; then
3196 echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
3198 if test x"$g_atomic_lock_free" = xyes; then
3200 echo "#define G_ATOMIC_LOCK_FREE" >>$outfile
3203 g_bit_sizes="16 32 64"
3204 for bits in $g_bit_sizes; do
3205 cat >>$outfile <<_______EOF
3206 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
3207 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
3208 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
3209 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
3213 cat >>$outfile <<_______EOF
3214 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
3215 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
3216 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
3217 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
3218 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
3219 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
3220 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
3221 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
3222 #define GSIZE_TO_LE(val) ((gsize) GUINT${gsizebits}_TO_LE (val))
3223 #define GSSIZE_TO_LE(val) ((gssize) GINT${gssizebits}_TO_LE (val))
3224 #define GSIZE_TO_BE(val) ((gsize) GUINT${gsizebits}_TO_BE (val))
3225 #define GSSIZE_TO_BE(val) ((gssize) GINT${gssizebits}_TO_BE (val))
3226 #define G_BYTE_ORDER $g_byte_order
3228 #define GLIB_SYSDEF_POLLIN =$g_pollin
3229 #define GLIB_SYSDEF_POLLOUT =$g_pollout
3230 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
3231 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
3232 #define GLIB_SYSDEF_POLLERR =$g_pollerr
3233 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
3235 #define G_MODULE_SUFFIX "$g_module_suffix"
3237 typedef $g_pid_type GPid;
3239 #define GLIB_SYSDEF_AF_UNIX $g_af_unix
3240 #define GLIB_SYSDEF_AF_INET $g_af_inet
3241 #define GLIB_SYSDEF_AF_INET6 $g_af_inet6
3243 #define GLIB_SYSDEF_MSG_OOB $g_msg_oob
3244 #define GLIB_SYSDEF_MSG_PEEK $g_msg_peek
3245 #define GLIB_SYSDEF_MSG_DONTROUTE $g_msg_dontroute
3249 #endif /* __GLIBCONFIG_H__ */
3253 if cmp -s $outfile glib/glibconfig.h; then
3254 AC_MSG_NOTICE([glib/glibconfig.h is unchanged])
3257 mv $outfile glib/glibconfig.h
3261 # Note that if two cases are the same, case goes with the first one.
3262 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
3263 # on variable expansion in case labels. Look at the generated config.status
3266 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
3267 glib_header_alloca_h="$ac_cv_working_alloca_h"
3269 glib_header_alloca_h="$ac_cv_header_alloca_h"
3273 x$ac_cv_header_float_h)
3275 glib_mf=FLT_MIN glib_Mf=FLT_MAX
3276 glib_md=DBL_MIN glib_Md=DBL_MAX
3278 x$ac_cv_header_values_h)
3280 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
3281 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
3286 x$ac_cv_header_limits_h)
3288 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
3289 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
3290 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
3292 x$ac_cv_header_values_h)
3294 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
3295 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
3296 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
3300 if test x$ac_cv_header_sys_poll_h = xyes ; then
3304 if test x$enable_included_printf = xyes ; then
3305 glib_included_printf=yes
3309 $ac_cv_sizeof_short)
3311 gint16_modifier='"h"'
3312 gint16_format='"hi"'
3313 guint16_format='"hu"'
3317 gint16_modifier='""'
3319 guint16_format='"u"'
3323 $ac_cv_sizeof_short)
3325 gint32_modifier='"h"'
3326 gint32_format='"hi"'
3327 guint32_format='"hu"'
3331 gint32_modifier='""'
3333 guint32_format='"u"'
3337 gint32_modifier='"l"'
3338 gint32_format='"li"'
3339 guint32_format='"lu"'
3345 gint64_modifier='""'
3347 guint64_format='"u"'
3349 gint64_constant='(val)'
3350 guint64_constant='(val)'
3354 gint64_modifier='"l"'
3355 gint64_format='"li"'
3356 guint64_format='"lu"'
3358 gint64_constant='(val##L)'
3359 guint64_constant='(val##UL)'
3361 $ac_cv_sizeof_long_long)
3363 if test -n "$glib_cv_long_long_format"; then
3364 gint64_modifier='"'$glib_cv_long_long_format'"'
3365 gint64_format='"'$glib_cv_long_long_format'i"'
3366 guint64_format='"'$glib_cv_long_long_format'u"'
3368 glib_extension='G_GNUC_EXTENSION '
3369 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
3370 guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
3372 $ac_cv_sizeof___int64)
3374 if test -n "$glib_cv_long_long_format"; then
3375 gint64_modifier='"'$glib_cv_long_long_format'"'
3376 gint64_format='"'$glib_cv_long_long_format'i"'
3377 guint64_format='"'$glib_cv_long_long_format'u"'
3380 gint64_constant='(val##i64)'
3381 guint64_constant='(val##ui64)'
3384 glib_size_t=$ac_cv_sizeof_size_t
3385 glib_ssize_t=$ac_cv_sizeof_ssize_t
3386 glib_size_type_define="$glib_size_type"
3387 glib_ssize_type_define="$glib_ssize_type"
3388 glib_void_p=$ac_cv_sizeof_void_p
3389 glib_long=$ac_cv_sizeof_long
3391 case "$glib_size_type" in
3393 gsize_modifier='"h"'
3395 glib_msize_type='SHRT'
3400 glib_msize_type='INT'
3403 gsize_modifier='"l"'
3405 glib_msize_type='LONG'
3407 "long long"|__int64)
3408 gsize_modifier='"I64"'
3409 gsize_format='"I64u"'
3410 glib_msize_type='INT64'
3414 case "$glib_ssize_type" in
3416 gssize_modifier='"h"'
3417 gssize_format='"hi"'
3418 glib_mssize_type='SHRT'
3421 gssize_modifier='""'
3423 glib_mssize_type='INT'
3426 gssize_modifier='"l"'
3427 gssize_format='"li"'
3428 glib_mssize_type='LONG'
3430 "long long"|__int64)
3431 gssize_modifier='"I64"'
3432 gssize_format='"I64i"'
3433 glib_mssize_type='INT64'
3437 gintbits=`expr $ac_cv_sizeof_int \* 8`
3438 glongbits=`expr $ac_cv_sizeof_long \* 8`
3439 gsizebits=`expr $ac_cv_sizeof_size_t \* 8`
3440 gssizebits=`expr $ac_cv_sizeof_ssize_t \* 8`
3442 case $ac_cv_sizeof_void_p in
3444 glib_intptr_type_define=int
3445 gintptr_modifier='""'
3446 gintptr_format='"i"'
3447 guintptr_format='"u"'
3448 glib_gpi_cast='(gint)'
3449 glib_gpui_cast='(guint)'
3452 glib_intptr_type_define=long
3453 gintptr_modifier='"l"'
3454 gintptr_format='"li"'
3455 guintptr_format='"lu"'
3456 glib_gpi_cast='(glong)'
3457 glib_gpui_cast='(gulong)'
3459 $ac_cv_sizeof_long_long)
3460 glib_intptr_type_define='long long'
3461 gintptr_modifier='"I64"'
3462 gintptr_format='"I64i"'
3463 guintptr_format='"I64u"'
3464 glib_gpi_cast='(gint64)'
3465 glib_gpui_cast='(guint64)'
3467 $ac_cv_sizeof___int64)
3468 glib_intptr_type_define=__int64
3469 gintptr_modifier='"I64"'
3470 gintptr_format='"I64i"'
3471 guintptr_format='"I64u"'
3472 glib_gpi_cast='(gint64)'
3473 glib_gpui_cast='(guint64)'
3476 glib_unknown_void_p=yes
3482 x$ac_cv_func_atexit)
3484 #ifdef NeXT /* @#%@! NeXTStep */
3485 # define g_ATEXIT(proc) (!atexit (proc))
3487 # define g_ATEXIT(proc) (atexit (proc))
3490 x$ac_cv_func_on_exit)
3492 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
3497 x$ac_cv_func_memmove)
3499 #define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END'
3501 x$glib_cv_working_bcopy)
3503 /* memmove isn't available, but bcopy can copy overlapping memory regions */
3504 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
3508 /* memmove isn't found and bcopy can't copy overlapping memory regions,
3509 * so we have to roll our own copy routine. */
3510 void g_memmove (void* dest, const void * src, unsigned long len);"
3515 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
3516 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
3517 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
3521 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
3522 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
3526 if test x$glib_cv_va_val_copy = xno; then
3527 glib_vacopy="\$glib_vacopy
3528 #define G_VA_COPY_AS_ARRAY 1"
3531 if test x$glib_cv_hasinline = xyes; then
3532 glib_inline='#define G_HAVE_INLINE 1'
3534 if test x$glib_cv_has__inline = xyes; then
3535 glib_inline="\$glib_inline
3536 #define G_HAVE___INLINE 1"
3538 if test x$glib_cv_has__inline__ = xyes; then
3539 glib_inline="\$glib_inline
3540 #define G_HAVE___INLINE__ 1"
3543 g_have_gnuc_varargs=$g_have_gnuc_varargs
3544 g_have_iso_c_varargs=$g_have_iso_c_varargs
3545 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
3547 g_can_inline=$g_can_inline
3548 g_have_gnuc_visibility=$g_have_gnuc_visibility
3549 g_have_sunstudio_visibility=$g_have_sunstudio_visibility
3551 if test x$ac_cv_c_bigendian = xyes; then
3552 g_byte_order=G_BIG_ENDIAN
3556 g_byte_order=G_LITTLE_ENDIAN
3561 g_pollin=$glib_cv_value_POLLIN
3562 g_pollout=$glib_cv_value_POLLOUT
3563 g_pollpri=$glib_cv_value_POLLPRI
3564 g_pollhup=$glib_cv_value_POLLHUP
3565 g_pollerr=$glib_cv_value_POLLERR
3566 g_pollnval=$glib_cv_value_POLLNVAL
3568 # If a family is not found on the system, define that family to
3569 # a negative value, picking a different one for each undefined
3570 # family (-1 for AF_UNIX, -2 for the next one, -3 ...)
3571 # This is needed because glib-mkenums doesn't handle optional
3572 # values in enums, and thus we have to have all existing values
3573 # defined in the enum.
3574 if test "x$glib_cv_value_AF_UNIX" != "x"; then
3575 g_af_unix=$glib_cv_value_AF_UNIX
3579 g_af_inet=$glib_cv_value_AF_INET
3580 g_af_inet6=$glib_cv_value_AF_INET6
3582 g_msg_peek=$glib_cv_value_MSG_PEEK
3583 g_msg_oob=$glib_cv_value_MSG_OOB
3584 g_msg_dontroute=$glib_cv_value_MSG_DONTROUTE
3586 g_stack_grows=$glib_cv_stack_grows
3588 g_have_eilseq=$have_eilseq
3590 g_threads_impl_def=$g_threads_impl
3592 g_atomic_lock_free="$glib_cv_g_atomic_lock_free"
3593 g_memory_barrier_needed="$glib_memory_barrier_needed"
3594 g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations"
3596 g_module_suffix="$glib_gmodule_suffix"
3598 g_pid_type="$glib_pid_type"
3601 glib_os="#define G_OS_BEOS"
3604 glib_os="#define G_OS_UNIX
3605 #define G_PLATFORM_WIN32
3606 #define G_WITH_CYGWIN"
3609 glib_os="#define G_OS_WIN32
3610 #define G_PLATFORM_WIN32"
3613 glib_os="#define G_OS_UNIX"
3616 glib_static_compilation=""
3617 if test x$glib_win32_static_compilation = xyes; then
3618 glib_static_compilation="#define GLIB_STATIC_COMPILATION 1
3619 #define GOBJECT_STATIC_COMPILATION 1"
3623 # Redo enough to get guint32 and guint64 for the alignment checks below
3625 $ac_cv_sizeof_short)
3642 $ac_cv_sizeof_long_long)
3645 $ac_cv_sizeof___int64)
3650 AC_CHECK_TYPE([guint32],,,[typedef unsigned $gint32 guint32;])
3651 AC_CHECK_ALIGNOF([guint32], [AC_INCLUDES_DEFAULT
3652 typedef unsigned $gint32 guint32;])
3653 AC_CHECK_TYPE([guint64],,,[typedef unsigned $gint64 guint64;])
3654 AC_CHECK_ALIGNOF([guint64], [AC_INCLUDES_DEFAULT
3655 typedef unsigned $gint64 guint64;])
3656 AC_CHECK_TYPE([unsigned long])
3657 AC_CHECK_ALIGNOF([unsigned long])
3659 # Check for libdbus1 - Optional - is only used in the GDBus test cases
3661 # 1.2.14 required for dbus_message_set_serial
3662 PKG_CHECK_MODULES(DBUS1,
3664 [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
3666 AC_SUBST(DBUS1_CFLAGS)
3667 AC_SUBST(DBUS1_LIBS)
3668 AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
3670 AC_CHECK_PROGS([DBUS_DAEMON], [dbus-daemon])
3671 AM_CONDITIONAL([HAVE_DBUS_DAEMON], [test x$DBUS_DAEMON = xdbus-daemon ])
3674 dnl Check for -Bsymbolic-functions linker flag used to avoid
3675 dnl intra-library PLT jumps, if available.
3678 AC_ARG_ENABLE(Bsymbolic,
3679 [AS_HELP_STRING([--disable-Bsymbolic],
3680 [avoid linking with -Bsymbolic])],,
3681 [SAVED_LDFLAGS="${LDFLAGS}"
3682 AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
3683 LDFLAGS=-Wl,-Bsymbolic-functions
3684 AC_TRY_LINK([], [int main (void) { return 0; }],
3686 enable_Bsymbolic=yes,
3688 enable_Bsymbolic=no)
3689 LDFLAGS="${SAVED_LDFLAGS}"])
3691 if test "x${enable_Bsymbolic}" = "xyes"; then
3692 GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions
3695 AC_SUBST(GLIB_LINK_FLAGS)
3698 dnl Check for -fvisibility=hidden to determine if we can do GNU-style
3699 dnl visibility attributes for symbol export control
3701 GLIB_HIDDEN_VISIBILITY_CFLAGS=""
3704 dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
3705 AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
3706 [defines how to decorate public symbols while building])
3707 CFLAGS="${CFLAGS} -fvisibility=hidden"
3710 dnl on other compilers, check if we can do -fvisibility=hidden
3711 SAVED_CFLAGS="${CFLAGS}"
3712 CFLAGS="-fvisibility=hidden"
3713 AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
3714 AC_TRY_COMPILE([], [int main (void) { return 0; }],
3716 enable_fvisibility_hidden=yes,
3718 enable_fvisibility_hidden=no)
3719 CFLAGS="${SAVED_CFLAGS}"
3721 AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
3722 AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) extern],
3723 [defines how to decorate public symbols while building])
3724 GLIB_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
3728 AC_SUBST(GLIB_HIDDEN_VISIBILITY_CFLAGS)
3730 dnl Compiler flags; macro originates from systemd
3731 dnl See https://bugzilla.gnome.org/show_bug.cgi?id=608953
3732 AC_ARG_ENABLE(compile-warnings,
3733 [AS_HELP_STRING([--disable-compile-warnings],
3734 [Don't use builtin compiler warnings])],,
3735 enable_compile_warnings=yes)
3736 AS_IF([test "x$enable_compile_warnings" = xyes], [
3737 CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
3738 -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
3739 -Werror=missing-prototypes -Werror=implicit-function-declaration \
3740 -Werror=pointer-arith -Werror=init-self -Werror=format-security \
3741 -Werror=format=2 -Werror=missing-include-dirs])
3743 AC_SUBST(GLIB_WARN_CFLAGS)
3746 # Define variables corresponding to the correct include paths to use for
3751 config_h_INCLUDES='-I$(top_builddir)'
3752 AC_SUBST(config_h_INCLUDES)
3756 # $(top_builddir)/glib: for glibconfig.h
3757 # $(top_srcdir)/glib: for glib.h
3758 # $(top_srcdir): for everything
3759 glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)'
3760 AC_SUBST(glib_INCLUDES)
3764 gobject_INCLUDES='$(glib_INCLUDES)'
3765 AC_SUBST(gobject_INCLUDES)
3769 # $(top_srcdir)/gmodule: for gmodule.h
3770 gmodule_INCLUDES='$(glib_INCLUDES) -I$(top_srcdir)/gmodule'
3771 AC_SUBST(gmodule_INCLUDES)
3775 gio_INCLUDES='$(gmodule_INCLUDES)'
3776 AC_SUBST(gio_INCLUDES)
3782 gmodule-export-2.0.pc
3783 gmodule-no-export-2.0.pc
3793 build/win32/Makefile
3794 build/win32/dirent/Makefile
3795 build/win32/vs9/Makefile
3796 build/win32/vs10/Makefile
3797 build/win32/vs11/Makefile
3800 glib/libcharset/Makefile
3801 glib/gnulib/Makefile
3803 glib/update-pcre/Makefile
3806 gmodule/gmoduleconf.h
3809 gobject/glib-mkenums
3810 gobject/tests/Makefile
3813 gio/gdbus-2.0/codegen/Makefile
3814 gio/gdbus-2.0/codegen/config.py
3816 gio/xdgmime/Makefile
3817 gio/inotify/Makefile
3823 gio/tests/gdbus-object-manager-example/Makefile
3824 gio/tests/services/Makefile
3825 gio/tests/services/org.gtk.GDBus.Examples.ObjectManager.service
3828 docs/reference/Makefile
3829 docs/reference/glib/Makefile
3830 docs/reference/glib/version.xml
3831 docs/reference/gobject/Makefile
3832 docs/reference/gobject/version.xml
3833 docs/reference/gio/Makefile
3834 docs/reference/gio/gdbus-object-manager-example/Makefile
3835 docs/reference/gio/version.xml
3837 tests/gobject/Makefile
3838 tests/refcount/Makefile
3842 AC_CONFIG_COMMANDS([chmod-scripts],
3843 [chmod 0755 glib-zip
3844 chmod 0755 glib-gettextize
3845 chmod 0755 gobject/glib-mkenums])
3847 # we want to invoke this macro solely so that the config.status script
3848 # and automake generated makefiles know about these generated files.
3849 # They are only needed to distcheck the package
3855 glib/glibconfig.h.win32
3858 gmodule/makefile.msc
3860 gobject/makefile.msc
3862 gthread/makefile.msc