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 # in easier to understand terms:
25 # <mclasen> on the stable branch, interface age == micro
26 # <mclasen> on the unstable (ie master), interface age = 0
28 m4_define([glib_major_version], [2])
29 m4_define([glib_minor_version], [31])
30 m4_define([glib_micro_version], [0])
31 m4_define([glib_interface_age], [0])
32 m4_define([glib_binary_age],
33 [m4_eval(100 * glib_minor_version + glib_micro_version)])
34 m4_define([glib_version],
35 [glib_major_version.glib_minor_version.glib_micro_version])
37 # libtool version related macros
38 m4_define([glib_lt_release], [glib_major_version.glib_minor_version])
39 m4_define([glib_lt_current],
40 [m4_eval(100 * glib_minor_version + glib_micro_version - glib_interface_age)])
41 m4_define([glib_lt_revision], [glib_interface_age])
42 m4_define([glib_lt_age], [m4_eval(glib_binary_age - glib_interface_age)])
43 m4_define([glib_lt_current_minus_age],
44 [m4_eval(glib_lt_current - glib_lt_age)])
46 # if the minor version number is odd, then we want debugging. Otherwise
47 # we only want minimal debugging support.
48 m4_define([glib_debug_default],
49 [m4_if(m4_eval(glib_minor_version % 2), [1], [yes], [minimum])])dnl
52 AC_INIT(glib, [glib_version],
53 [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
55 AC_CONFIG_HEADER([config.h])
56 AC_CONFIG_SRCDIR([glib/glib.h])
57 AC_CONFIG_MACRO_DIR([m4macros])
59 # Save this value here, since automake will set cflags later
60 cflags_set=${CFLAGS+set}
62 AM_INIT_AUTOMAKE([1.11 no-define no-dist-gzip dist-xz tar-ustar])
63 AM_MAINTAINER_MODE([enable])
65 # Support silent build rules. Disable
66 # by either passing --disable-silent-rules to configure or passing V=1
68 AM_SILENT_RULES([yes])
70 GLIB_MAJOR_VERSION=glib_major_version
71 GLIB_MINOR_VERSION=glib_minor_version
72 GLIB_MICRO_VERSION=glib_micro_version
73 GLIB_INTERFACE_AGE=glib_interface_age
74 GLIB_BINARY_AGE=glib_binary_age
75 GLIB_VERSION=glib_version
77 AC_SUBST(GLIB_MAJOR_VERSION)
78 AC_SUBST(GLIB_MINOR_VERSION)
79 AC_SUBST(GLIB_MICRO_VERSION)
80 AC_SUBST(GLIB_VERSION)
81 AC_SUBST(GLIB_INTERFACE_AGE)
82 AC_SUBST(GLIB_BINARY_AGE)
84 AC_DEFINE(GLIB_MAJOR_VERSION, [glib_major_version],
85 [Define to the GLIB major version])
86 AC_DEFINE(GLIB_MINOR_VERSION, [glib_minor_version],
87 [Define to the GLIB minor version])
88 AC_DEFINE(GLIB_MICRO_VERSION, [glib_micro_version],
89 [Define to the GLIB micro version])
90 AC_DEFINE(GLIB_INTERFACE_AGE, [glib_interface_age],
91 [Define to the GLIB interface age])
92 AC_DEFINE(GLIB_BINARY_AGE, [glib_binary_age],
93 [Define to the GLIB binary age])
96 LT_RELEASE=glib_lt_release
97 LT_CURRENT=glib_lt_current
98 LT_REVISION=glib_lt_revision
100 LT_CURRENT_MINUS_AGE=glib_lt_current_minus_age
103 AC_SUBST(LT_REVISION)
105 AC_SUBST(LT_CURRENT_MINUS_AGE)
107 dnl Checks for programs.
111 AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
115 AC_MSG_CHECKING([for the BeOS])
118 glib_native_beos="yes"
121 glib_native_beos="no"
124 AC_MSG_RESULT([$glib_native_beos])
128 AC_MSG_CHECKING([for Win32])
129 LIB_EXE_MACHINE_FLAG=X86
132 glib_native_win32=yes
133 glib_pid_type='void *'
134 glib_cv_stack_grows=no
135 # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
136 # don't seem to be quite good enough, at least not in mingw-runtime-3.14.
137 # (Sorry, I don't know exactly what is the problem, but it is related to
138 # floating point formatting and decimal point vs. comma.)
139 # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
140 # rigorous enough to notice, though.
141 # So preset the autoconf cache variables.
142 ac_cv_func_vsnprintf_c99=no
143 ac_cv_func_snprintf_c99=no
146 LIB_EXE_MACHINE_FLAG=X64
161 AC_MSG_RESULT([$glib_native_win32])
163 AC_SUBST(LIB_EXE_MACHINE_FLAG)
166 AC_MSG_CHECKING([for Mac OS X Carbon support])
168 #include <Carbon/Carbon.h>
169 #include <CoreServices/CoreServices.h>
170 ], glib_have_carbon=yes)
172 AC_MSG_RESULT([$glib_have_carbon])
174 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
175 AM_CONDITIONAL(OS_WIN32_X64, [test "$LIB_EXE_MACHINE_FLAG" = "X64"])
176 AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
177 AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
178 AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
180 if test "$glib_native_win32" = "yes"; then
181 AC_CHECK_TOOL(WINDRES, windres, no)
182 if test "$WINDRES" = no; then
183 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
185 AC_CHECK_TOOL(NM, nm, no)
186 if test "$NM" = no; then
187 AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
189 AC_CHECK_TOOL(RANLIB, ranlib, :)
190 AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
192 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
194 if test "$glib_native_win32" != yes; then
195 # libtool option to control which symbols are exported
196 # right now, symbols starting with _ are not exported
197 LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
199 # We currently use .def files on Windows
200 LIBTOOL_EXPORT_OPTIONS=
202 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
204 if test "x$glib_have_carbon" = "xyes"; then
205 AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
206 LDFLAGS="$LDFLAGS -framework Carbon"
210 if test "x$GLIBC21" = "xyes"; then
211 AC_DEFINE([_GNU_SOURCE], 1, [Make all glibc extensions visible])
214 dnl declare --enable-* args and collect ac_help strings
216 AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
217 [turn on debugging @<:@default=glib_debug_default@:>@]),,
218 enable_debug=glib_debug_default)
220 AC_ARG_ENABLE(gc_friendly,
221 [AC_HELP_STRING([--enable-gc-friendly],
222 [turn on garbage collector friendliness [default=no]])],,
223 [enable_gc_friendly=no])
224 AC_ARG_ENABLE(mem_pools,
225 [AC_HELP_STRING([--disable-mem-pools],
226 [disable all glib memory pools])],,
227 [disable_mem_pools=no])
228 AC_ARG_ENABLE(rebuilds,
229 [AC_HELP_STRING([--disable-rebuilds],
230 [disable all source autogeneration rules])],,
231 [enable_rebuilds=yes])
233 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
234 if test "x$enable_gc_friendly" = "xyes"; then
235 AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
241 AC_MSG_CHECKING([whether to disable memory pools])
242 if test "x$disable_mem_pools" = "xno"; then
245 AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
246 AC_SUBST(DISABLE_MEM_POOLS)
250 dnl location to install runtime libraries, e.g. ../../lib to install
251 dnl to /lib if libdir is /usr/lib
252 AC_ARG_WITH(runtime-libdir,
253 [AC_HELP_STRING([--with-runtime-libdir=RELPATH],
254 [install runtime libraries relative to libdir])],
256 [with_runtime_libdir=""])
257 GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
258 ABS_GLIB_RUNTIME_LIBDIR="`readlink -f $libdir/$with_runtime_libdir`"
259 AC_SUBST(GLIB_RUNTIME_LIBDIR)
260 AC_SUBST(ABS_GLIB_RUNTIME_LIBDIR)
261 AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
263 dnl Check for a working C++ compiler, but do not bail out, if none is found.
264 AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
267 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
268 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
277 PKG_PROG_PKG_CONFIG(0.16)
279 if test "x$enable_debug" = "xyes"; then
280 if test x$cflags_set != xset ; then
282 *[[\ \ ]]-g[[\ \ ]]*) ;;
283 *) CFLAGS="$CFLAGS -g" ;;
287 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
289 GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
291 if test "x$enable_debug" = "xno"; then
292 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
296 # Ensure MSVC-compatible struct packing convention is used when
297 # compiling for Win32 with gcc.
298 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
299 # gcc2 uses "-fnative-struct".
300 if test x"$glib_native_win32" = xyes; then
301 if test x"$GCC" = xyes; then
303 AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
304 if test -z "$ac_cv_prog_CC"; then
307 our_gcc="$ac_cv_prog_CC"
309 case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
311 if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
312 msnative_struct='-fnative-struct'
316 if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
317 msnative_struct='-mms-bitfields'
321 if test x"$msnative_struct" = x ; then
322 AC_MSG_RESULT([no way])
323 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
325 CFLAGS="$CFLAGS $msnative_struct"
326 AC_MSG_RESULT([${msnative_struct}])
330 GLIB_EXTRA_CFLAGS="${msnative_struct}"
331 AC_SUBST(GLIB_EXTRA_CFLAGS)
335 # define a MAINT-like variable REBUILD which is set if Perl
336 # and awk are found, so autogenerated sources can be rebuilt
338 AC_CHECK_PROGS(PERL, [perl5 perl])
339 # We would like indent, but don't require it.
340 AC_CHECK_PROG(INDENT, indent, indent)
342 if test "x$enable_rebuilds" = "xyes" && \
344 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
345 test -n "$AWK" ; then
350 # Need full path to Perl for glib-mkenums
352 if test "x$PERL" != x ; then
353 AC_PATH_PROG(PERL_PATH, [$PERL])
355 if test "x$PERL_PATH" = x ; then
356 PERL_PATH="/usr/bin/env perl"
360 # Need suitable python path for greport
361 AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
364 dnl ***********************
365 dnl *** Tests for iconv ***
366 dnl ***********************
368 dnl We do this before the gettext checks, to avoid distortion
370 dnl On Windows we use a native implementation
372 if test x"$glib_native_win32" = xyes; then
375 AC_ARG_WITH(libiconv,
376 [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
377 [use the libiconv library])],,
378 [with_libiconv=maybe])
381 case $with_libiconv in
383 # Check in the C library first
384 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
385 # Check if we have GNU libiconv
386 if test $found_iconv = "no"; then
387 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
389 # Check if we have a iconv in -liconv, possibly from vendor
390 if test $found_iconv = "no"; then
391 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
395 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
398 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
401 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
405 if test "x$found_iconv" = "xno" ; then
406 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
410 AC_ARG_ENABLE(iconv-cache,
411 [AC_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
412 [cache iconv descriptors [default=auto]])],,
413 [enable_iconv_cache=auto])
415 AC_MSG_CHECKING([whether to cache iconv descriptors])
416 case $enable_iconv_cache in
418 if test $ac_cv_gnu_library_2_1 = yes; then
419 enable_iconv_cache=no
421 enable_iconv_cache=yes
426 *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
430 if test $enable_iconv_cache = yes; then
431 AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
434 AC_MSG_RESULT($enable_iconv_cache)
440 PKG_CHECK_MODULES([ZLIB], [zlib], [found_zlib=yes], [found_zlib=no])
441 if test "x$found_zlib" = "xno" ; then
442 AC_CHECK_LIB(z, inflate, [AC_CHECK_HEADER(zlib.h, found_zlib=yes)])
443 if test "x$found_zlib" = "xno" ; then
444 AC_MSG_ERROR([*** Working zlib library and headers not found ***])
450 PKG_CHECK_MODULES(LIBFFI, [libffi >= 3.0.0])
451 AC_SUBST(LIBFFI_CFLAGS)
452 AC_SUBST(LIBFFI_LIBS)
458 ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
459 AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS'])
462 if test "$gt_cv_have_gettext" != "yes" ; then
464 *** You must have either have gettext support in your C library, or use the
465 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
469 LIBS="$INTLLIBS $LIBS"
471 GETTEXT_PACKAGE=glib20
472 AC_SUBST(GETTEXT_PACKAGE)
473 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"],
474 [Define the gettext package to be used])
476 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
479 dnl Now we are done with gettext checks, figure out ICONV_LIBS
482 if test x"$glib_native_win32" != xyes; then
483 if test x$with_libiconv != xno ; then
484 case " $INTLLIBS " in
485 *[[\ \ ]]-liconv[[\ \ ]]*) ;;
486 *) ICONV_LIBS="-liconv" ;;
492 case $with_libiconv in
494 AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
497 AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
501 dnl Initialize libtool
503 LT_INIT([disable-static win32-dll])
504 dnl when using libtool 2.x create libtool early, because it's used in configure
505 m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
508 if test "x$GCC" = "xyes"; then
510 *[[\ \ ]]-Wall[[\ \ ]]*) ;;
511 *) CFLAGS="$CFLAGS -Wall" ;;
515 if test "$glib_native_win32" = "yes"; then
516 if test x$enable_static = xyes -a x$enable_shared = xyes; then
517 AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
519 if test x$enable_static = xyes; then
520 glib_win32_static_compilation=yes
521 GLIB_WIN32_STATIC_COMPILATION_DEFINE="#define GLIB_STATIC_COMPILATION 1
522 #define GOBJECT_STATIC_COMPILATION 1"
523 AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
526 AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
529 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
531 if test $cross_compiling != yes ; then
532 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
535 AC_TRY_RUN([#include <math.h>
536 int main (void) { return (log(1) != log(1.)); }],
537 AC_MSG_RESULT(none needed),
538 glib_save_CFLAGS=$CFLAGS
539 CFLAGS="$CFLAGS -std1"
540 AC_TRY_RUN([#include <math.h>
541 int main (void) { return (log(1) != log(1.)); }],
542 AC_MSG_RESULT(-std1),
544 CFLAGS=$glib_save_CFLAGS
546 [No ANSI prototypes found in library. (-std1 didn't work.)])
552 dnl NeXTStep cc seems to need this
553 AC_MSG_CHECKING([for extra flags for POSIX compliance])
554 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
555 AC_MSG_RESULT(none needed),
556 glib_save_CFLAGS=$CFLAGS
557 CFLAGS="$CFLAGS -posix"
558 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
559 AC_MSG_RESULT(-posix),
561 CFLAGS=$glib_save_CFLAGS
562 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
564 # Checks for header files.
567 # Checks for library functions.
570 AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2)
571 AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
573 dnl don't use AC_CHECK_FUNCS here, otherwise HAVE_QSORT_R will
574 dnl be automatically defined, which we don't want to do
575 dnl until we have checked this function is actually usable
576 AC_CHECK_FUNC([qsort_r])
578 # BSD has a qsort_r with wrong argument order
579 if test x$ac_cv_func_qsort_r = xyes ; then
580 AC_CACHE_CHECK([if qsort_r uses glibc compatible argument order], glib_cv_have_qsort_r, [
581 AC_RUN_IFELSE([AC_LANG_SOURCE([[
586 cmp (const void *a, const void *b, void *c)
600 main (int argc, char **argv)
602 int arr[3] = { 1, 2, 0 };
605 qsort_r (arr, 3, sizeof (int), cmp, &d);
607 if (arr[0] == 0 && arr[1] == 1 && arr[2] == 2)
611 }]])],[glib_cv_have_qsort_r=yes],[glib_cv_have_qsort_r=no])])
614 if test x$glib_cv_have_qsort_r = xyes ; then
615 AC_DEFINE(HAVE_QSORT_R, 1, [Define to 1 if you have the 'qsort_r' function])
618 AC_CHECK_SIZEOF(char)
619 AC_CHECK_SIZEOF(short)
620 AC_CHECK_SIZEOF(long)
622 AC_CHECK_SIZEOF(void *)
623 AC_CHECK_SIZEOF(long long)
624 AC_CHECK_SIZEOF(__int64)
626 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
630 *** GLib requires a 64 bit type. You might want to consider
631 *** using the GNU C compiler.
635 if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
636 # long long is a 64 bit integer.
637 AC_MSG_CHECKING(for format to printf and scanf a guint64)
638 AC_CACHE_VAL(glib_cv_long_long_format,[
639 for format in ll q I64; do
640 AC_TRY_RUN([#include <stdio.h>
643 long long b, a = -0x3AFAFAFAFAFAFAFALL;
645 sprintf (buffer, "%${format}u", a);
646 sscanf (buffer, "%${format}u", &b);
650 [glib_cv_long_long_format=${format}
654 if test -n "$glib_cv_long_long_format"; then
655 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
656 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
657 if test x"$glib_cv_long_long_format" = xI64; then
658 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
663 elif test x$ac_cv_sizeof___int64 = x8; then
664 # __int64 is a 64 bit integer.
665 AC_MSG_CHECKING(for format to printf and scanf a guint64)
666 # We know this is MSVCRT.DLL, and what the formats are
667 glib_cv_long_long_format=I64
668 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
669 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
670 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
673 dnl long doubles were not used, and a portability problem
677 dnl ok, here we try to check whether the systems prototypes for
678 dnl malloc and friends actually match the prototypes provided
679 dnl by gmem.h (keep in sync). i currently only know how to check
680 dnl this reliably with gcc (-Werror), improvements for other
681 dnl compilers are apprechiated.
682 SANE_MALLOC_PROTOS=no
683 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
684 glib_save_CFLAGS=$CFLAGS
685 if test "x$GCC" = "xyes"; then
686 CFLAGS="$CFLAGS -Werror"
687 AC_TRY_COMPILE([#include <stdlib.h>], [
688 void* (*my_calloc_p) (size_t, size_t) = calloc;
689 void* (*my_malloc_p) (size_t) = malloc;
690 void (*my_free_p) (void*) = free;
691 void* (*my_realloc_p) (void*, size_t) = realloc;
697 AC_DEFINE(SANE_MALLOC_PROTOS, 1,
698 [Define if you have correct malloc prototypes])
699 SANE_MALLOC_PROTOS=yes)
701 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
702 CFLAGS=$glib_save_CFLAGS
705 dnl check in which direction the stack grows
707 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
709 volatile int *a = 0, *b = 0;
711 int main () { volatile int y = 7; a = &y; foo (); return b > a; }
712 void foo (void) { volatile int x = 5; b = &x; }
714 glib_cv_stack_grows=no
716 glib_cv_stack_grows=yes
720 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
721 dnl truely know which ones of `inline', `__inline' and `__inline__' are
722 dnl actually supported.
723 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
724 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
725 __inline int foo () { return 0; }
726 int main () { return foo (); }
728 glib_cv_has__inline=yes
730 glib_cv_has__inline=no
733 case x$glib_cv_has__inline in
734 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
736 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
737 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
738 __inline__ int foo () { return 0; }
739 int main () { return foo (); }
741 glib_cv_has__inline__=yes
743 glib_cv_has__inline__=no
746 case x$glib_cv_has__inline__ in
747 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
749 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
752 inline int foo () { return 0; }
753 int main () { return foo (); }
755 glib_cv_hasinline=yes
760 case x$glib_cv_hasinline in
761 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
764 # if we can use inline functions in headers
765 AC_MSG_CHECKING(if inline functions in headers work)
766 AC_LINK_IFELSE([AC_LANG_SOURCE([[
767 #if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
769 # define inline __inline__
770 #elif !defined (G_HAVE_INLINE)
772 # if defined (G_HAVE___INLINE__)
773 # define inline __inline__
774 # elif defined (G_HAVE___INLINE)
775 # define inline __inline
779 int glib_test_func2 (int);
782 glib_test_func1 (void) {
783 return glib_test_func2 (1);
789 }]])],[g_can_inline=yes],[g_can_inline=no])
790 AC_MSG_RESULT($g_can_inline)
792 dnl *** check for working do while(0) macros ***
793 AC_CACHE_CHECK([for working do while(0) macros], g_cv_support_dowhile_macros, [
795 #define STMT_START do
796 #define STMT_END while(0)
797 #define STMT_TEST STMT_START { i = 0; } STMT_END
798 int main(void) { int i = 1; STMT_TEST; return i; }],
799 [g_cv_support_dowhile_macros=yes],
800 [g_cv_support_dowhile_macros=no],
801 [g_cv_support_dowhile_macros=yes])
803 if test x$g_cv_support_dowhile_macros = xyes; then
804 AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
807 # check for flavours of varargs macros
808 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
810 int a(int p1, int p2, int p3);
811 #define call_a(...) a(1,__VA_ARGS__)
813 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
814 AC_MSG_RESULT($g_have_iso_c_varargs)
816 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
817 if test "$CXX" = ""; then
819 g_have_iso_cxx_varargs=no
823 int a(int p1, int p2, int p3);
824 #define call_a(...) a(1,__VA_ARGS__)
826 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
829 AC_MSG_RESULT($g_have_iso_cxx_varargs)
831 AC_MSG_CHECKING(for GNUC varargs macros)
833 int a(int p1, int p2, int p3);
834 #define call_a(params...) a(1,params)
836 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
837 AC_MSG_RESULT($g_have_gnuc_varargs)
839 # check for GNUC visibility support
840 AC_MSG_CHECKING(for GNUC visibility attribute)
841 GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
843 __attribute__ ((visibility ("hidden")))
848 __attribute__ ((visibility ("internal")))
853 __attribute__ ((visibility ("protected")))
858 __attribute__ ((visibility ("default")))
862 int main (int argc, char **argv)
870 ]])],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
871 AC_MSG_RESULT($g_have_gnuc_visibility)
872 AM_CONDITIONAL(HAVE_GNUC_VISIBILITY, [test x$g_have_gnuc_visibility = xyes])
874 AC_MSG_CHECKING([whether using Sun Studio C compiler])
875 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550)
877 # include "error: this is not Sun Studio."
879 ]], [[]])], [ g_have_sunstudio_visibility=yes ], [ g_have_sunstudio_visibility=no ])
880 AC_MSG_RESULT($g_have_sunstudio_visibility)
881 AM_CONDITIONAL(HAVE_SUNSTUDIO_VISIBILITY, [test x$g_have_sunstudio_visibility = xyes])
883 # check for bytesex stuff
885 if test x$ac_cv_c_bigendian = xuniversal ; then
886 AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __BIG_ENDIAN
888 #error Not a big endian.
890 ac_cv_c_bigendian=yes
891 ,AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __LITTLE_ENDIAN
893 #error Not a little endian.
896 ,AC_MSG_WARN([Could not determine endianness.])))
900 # check for header files
901 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h grp.h sys/param.h sys/poll.h sys/resource.h])
902 AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
903 AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h inttypes.h sched.h malloc.h])
904 AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h])
905 AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h])
906 AC_CHECK_HEADERS([sys/uio.h sys/mkdev.h])
907 AC_CHECK_HEADERS([linux/magic.h])
908 AC_CHECK_HEADERS([sys/prctl.h])
910 AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
911 [#if HAVE_SYS_PARAM_H
912 #include <sys/param.h>
916 # check for structure fields
917 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])
918 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename, struct statfs.f_bavail],,, [#include <sys/types.h>
919 #include <sys/stat.h>
921 #ifdef HAVE_SYS_STATFS_H
922 #include <sys/statfs.h>
924 #ifdef HAVE_SYS_PARAM_H
925 #include <sys/param.h>
927 #ifdef HAVE_SYS_MOUNT_H
928 #include <sys/mount.h>
930 # struct statvfs.f_basetype is available on Solaris but not for Linux.
931 AC_CHECK_MEMBERS([struct statvfs.f_basetype],,, [#include <sys/statvfs.h>])
932 AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,, [#include <sys/statvfs.h>])
933 AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[#include <time.h>])
935 # Checks for libcharset
937 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
938 AC_CHECK_FUNCS(setlocale)
940 # check additional type sizes
941 AC_CHECK_SIZEOF(size_t)
943 dnl Try to figure out whether gsize, gssize should be long or int
944 AC_MSG_CHECKING([for the appropriate definition for size_t])
946 case $ac_cv_sizeof_size_t in
956 $ac_cv_sizeof_long_long)
957 glib_size_type='long long'
959 $ac_cv_sizeof__int64)
960 glib_size_type='__int64'
962 *) AC_MSG_ERROR([No type matching size_t in size])
966 dnl If int/long are the same size, we see which one produces
967 dnl warnings when used in the location as size_t. (This matters
970 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
971 test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
972 GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
973 #if defined(_AIX) && !defined(__GNUC__)
974 #pragma options langlvl=stdc89
980 unsigned int *size_int = &s;
981 return (int)*size_int;
983 ]])],glib_size_type=int,
984 [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
985 #if defined(_AIX) && !defined(__GNUC__)
986 #pragma options langlvl=stdc89
992 unsigned long *size_long = &s;
993 return (int)*size_long;
995 ]])],glib_size_type=long)])
998 AC_MSG_RESULT(unsigned $glib_size_type)
1000 # Check for some functions
1001 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
1002 AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid)
1003 AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat)
1004 # Check for high-resolution sleep functions
1005 AC_CHECK_FUNCS(splice)
1006 AC_CHECK_FUNCS(prlimit)
1008 # To avoid finding a compatibility unusable statfs, which typically
1009 # successfully compiles, but warns to use the newer statvfs interface:
1010 AS_IF([test $ac_cv_header_sys_statvfs_h = yes], [AC_CHECK_FUNCS([statvfs])])
1011 AS_IF([test $ac_cv_header_sys_statfs_h = yes -o $ac_cv_header_sys_mount_h = yes], [AC_CHECK_FUNCS([statfs])])
1013 AC_MSG_CHECKING([whether to use statfs or statvfs])
1014 # Some systems have both statfs and statvfs, pick the most "native" for these
1015 AS_IF([test x$ac_cv_func_statfs = xyes && test x$ac_cv_func_statvfs = xyes],
1017 # on solaris and irix, statfs doesn't even have the f_bavail field
1018 AS_IF([test x$ac_cv_member_struct_statfs_f_bavail = xno],
1019 [ac_cv_func_statfs=no],
1020 # else, at least on linux, statfs is the actual syscall
1021 [ac_cv_func_statvfs=no])
1024 AS_IF([test x$ac_cv_func_statfs = xyes],
1026 AC_DEFINE([USE_STATFS], [1], [Define to use statfs()])
1027 AC_MSG_RESULT([statfs])
1029 [test x$ac_cv_func_statvfs = xyes],
1031 AC_DEFINE([USE_STATVFS], [1], [Define to use statvfs()])
1032 AC_MSG_RESULT([statvfs])
1034 [ AC_MSG_RESULT([neither])])
1036 AC_CHECK_HEADERS(crt_externs.h)
1037 AC_CHECK_FUNCS(_NSGetEnviron)
1039 AC_CHECK_FUNCS(newlocale uselocale strtod_l strtoll_l strtoull_l)
1041 AC_FUNC_VSNPRINTF_C99
1042 AC_FUNC_PRINTF_UNIX98
1044 # Internet address families
1045 if test $glib_native_win32 = yes; then
1046 glib_inet_includes=["
1047 #include <winsock2.h>
1050 glib_inet_includes=["
1051 #include <sys/types.h>
1052 #include <sys/socket.h>
1057 GLIB_CHECK_VALUE(AF_INET, $glib_inet_includes, glib_failed=true)
1058 GLIB_CHECK_VALUE(AF_INET6, $glib_inet_includes, glib_failed=true)
1059 # winsock defines this even though it doesn't support it
1060 GLIB_CHECK_VALUE(AF_UNIX, $glib_inet_includes, glib_failed=true)
1061 if $glib_failed ; then
1062 AC_MSG_ERROR([Could not determine values for AF_INET* constants])
1066 GLIB_CHECK_VALUE(MSG_PEEK, $glib_inet_includes, glib_failed=true)
1067 GLIB_CHECK_VALUE(MSG_OOB, $glib_inet_includes, glib_failed=true)
1068 GLIB_CHECK_VALUE(MSG_DONTROUTE, $glib_inet_includes, glib_failed=true)
1069 if $glib_failed ; then
1070 AC_MSG_ERROR([Could not determine values for MSG_* constants])
1073 AC_CHECK_FUNCS(getprotobyname_r endservent)
1074 AC_CHECK_HEADERS([netdb.h wspiapi.h arpa/nameser_compat.h])
1076 if test $glib_native_win32 = no; then
1077 # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
1079 AC_MSG_CHECKING([for res_query])
1080 AC_TRY_LINK([#include <sys/types.h>
1081 #include <netinet/in.h>
1082 #include <arpa/nameser.h>
1085 res_query("test", 0, 0, (void *)0, 0);
1086 ],[AC_MSG_RESULT([yes])],
1088 LIBS="-lresolv $LIBS"
1089 AC_TRY_LINK([#include <sys/types.h>
1090 #include <netinet/in.h>
1091 #include <arpa/nameser.h>
1094 res_query("test", 0, 0, (void *)0, 0);
1095 ],[AC_MSG_RESULT([in -lresolv])
1096 NETWORK_LIBS="-lresolv $NETWORK_LIBS"],
1097 [LIBS="-lbind $save_libs"
1098 AC_TRY_LINK([#include <resolv.h>],
1099 [res_query("test", 0, 0, (void *)0, 0);],
1100 [AC_MSG_RESULT([in -lbind])
1101 NETWORK_LIBS="-lbind $NETWORK_LIBS"],
1102 [AC_MSG_ERROR(not found)])])
1104 AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket,
1105 [NETWORK_LIBS="-lsocket $NETWORK_LIBS"],
1106 [AC_MSG_ERROR(Could not find socket())]))
1108 AC_SUBST(NETWORK_LIBS)
1112 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
1113 AC_DEFINE(_XOPEN_SOURCE, 2, Needed to get declarations for msg_control and msg_controllen on Solaris)
1114 AC_DEFINE(__EXTENSIONS__, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
1119 dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
1121 if test "$ac_cv_func_statfs" = yes ; then
1122 AC_MSG_CHECKING([number of arguments to statfs()])
1123 AC_TRY_COMPILE([#include <unistd.h>
1124 #ifdef HAVE_SYS_PARAM_H
1125 #include <sys/param.h>
1127 #ifdef HAVE_SYS_VFS_H
1128 #include <sys/vfs.h>
1130 #ifdef HAVE_SYS_MOUNT_H
1131 #include <sys/mount.h>
1133 #ifdef HAVE_SYS_STATFS_H
1134 #include <sys/statfs.h>
1135 #endif], [struct statfs st;
1136 statfs(NULL, &st);],[
1138 AC_DEFINE(STATFS_ARGS, 2, [Number of arguments to statfs()])],[
1139 AC_TRY_COMPILE([#include <unistd.h>
1140 #ifdef HAVE_SYS_PARAM_H
1141 #include <sys/param.h>
1143 #ifdef HAVE_SYS_VFS_H
1144 #include <sys/vfs.h>
1146 #ifdef HAVE_SYS_MOUNT_H
1147 #include <sys/mount.h>
1149 #ifdef HAVE_SYS_STATFS_H
1150 #include <sys/statfs.h>
1151 #endif], [struct statfs st;
1152 statfs(NULL, &st, sizeof (st), 0);],[
1154 AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
1155 AC_MSG_RESULT(unknown)
1156 AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
1160 # Check whether to use an included printf
1163 AC_ARG_ENABLE(included-printf,
1164 [AC_HELP_STRING([--enable-included-printf],
1165 [use included printf [default=auto]])],
1166 enable_included_printf="$enableval")
1168 need_included_printf=no
1169 if test "x$enable_included_printf" = "xyes" ; then
1170 need_included_printf=yes
1172 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
1173 need_included_printf=yes
1175 if test "$ac_cv_func_printf_unix98" != "yes" ; then
1176 need_included_printf=yes
1178 if test "x$ac_cv_sizeof_long_long" = "x8" &&
1179 test -z "$glib_cv_long_long_format" ; then
1180 need_included_printf=yes
1183 if test "x$enable_included_printf" = "xno" &&
1184 test "x$need_included_printf" = "xyes" ; then
1186 *** Your C library's printf doesn't appear to have the features that
1187 *** GLib needs, but you specified --enable-included-printf=no.])
1190 enable_included_printf=$need_included_printf
1192 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
1193 if test "$enable_included_printf" != "yes" ; then
1194 AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
1196 if test -z "$glib_cv_long_long_format" ; then
1197 glib_cv_long_long_format="ll"
1199 AC_DEFINE(HAVE_VASPRINTF,1)
1202 # Checks needed for gnulib vasnprintf
1204 jm_AC_TYPE_LONG_LONG
1209 AC_CHECK_TYPES(ptrdiff_t)
1211 AC_CHECK_FUNCS([snprintf wcslen])
1212 AC_FUNC_SNPRINTF_C99
1214 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
1215 # The check is borrowed from the PERL Configure script.
1216 if test "$ac_cv_func_memmove" != "yes"; then
1217 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
1218 glib_cv_working_bcopy,[AC_TRY_RUN([
1220 char buf[128], abc[128], *b;
1221 int len, off, align;
1222 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
1223 for (align = 7; align >= 0; align--) {
1224 for (len = 36; len; len--) {
1225 b = buf+align; bcopy(abc, b, len);
1226 for (off = 1; off <= len; off++) {
1227 bcopy(b, b+off, len); bcopy(b+off, b, len);
1228 if (bcmp(b, abc, len)) return(1);
1233 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
1235 GLIB_ASSERT_SET(glib_cv_working_bcopy)
1236 if test "$glib_cv_working_bcopy" = "yes"; then
1237 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
1241 # Check if <sys/select.h> needs to be included for fd_set
1242 AC_MSG_CHECKING([for fd_set])
1243 AC_TRY_COMPILE([#include <sys/types.h>],
1244 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
1245 if test "$gtk_ok" = "yes"; then
1246 AC_MSG_RESULT([yes, found in sys/types.h])
1248 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
1249 if test "$gtk_ok" = "yes"; then
1250 # *** FIXME: give it a different name
1251 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
1252 AC_MSG_RESULT([yes, found in sys/select.h])
1254 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
1259 dnl *** check for sane realloc() ***
1260 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
1261 AC_TRY_RUN([#include <stdlib.h>
1263 return realloc (0, sizeof (int)) == 0;
1265 [glib_cv_sane_realloc=yes],
1266 [glib_cv_sane_realloc=no],
1267 [glib_cv_sane_realloc=yes])
1269 if test x$glib_cv_sane_realloc = xyes; then
1270 AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
1273 dnl Check for nl_langinfo and CODESET
1274 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
1275 AC_TRY_COMPILE([#include <langinfo.h>],
1276 [char *codeset = nl_langinfo (CODESET);],
1277 [glib_cv_langinfo_codeset=yes],
1278 [glib_cv_langinfo_codeset=no])])
1279 if test x$glib_cv_langinfo_codeset = xyes; then
1280 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
1283 dnl Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
1284 AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
1285 AC_TRY_COMPILE([#include <langinfo.h>],
1287 str = nl_langinfo (PM_STR);
1288 str = nl_langinfo (D_T_FMT);
1289 str = nl_langinfo (D_FMT);
1290 str = nl_langinfo (T_FMT);
1291 str = nl_langinfo (T_FMT_AMPM);
1292 str = nl_langinfo (MON_1);
1293 str = nl_langinfo (ABMON_12);
1294 str = nl_langinfo (DAY_1);
1295 str = nl_langinfo (ABDAY_7);],
1296 [glib_cv_langinfo_time=yes],
1297 [glib_cv_langinfo_time=no])])
1298 if test x$glib_cv_langinfo_time = xyes; then
1299 AC_DEFINE(HAVE_LANGINFO_TIME,1,[Have nl_langinfo (PM_STR)])
1302 dnl Check for nl_langinfo and _NL_CTYPE_OUTDIGITn_WC
1303 AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_WC)], glib_cv_langinfo_outdigit,[
1304 AC_TRY_COMPILE([#include <langinfo.h>],
1306 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_WC);
1307 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_WC);
1308 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_WC);
1309 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_WC);
1310 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_WC);
1311 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_WC);
1312 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_WC);
1313 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_WC);
1314 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_WC);
1315 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_WC);],
1316 [glib_cv_langinfo_outdigit=yes],
1317 [glib_cv_langinfo_outdigit=no])])
1318 if test x$glib_cv_langinfo_outdigit = xyes; then
1319 AC_DEFINE(HAVE_LANGINFO_OUTDIGIT,1,[Have nl_langinfo (_NL_CTYPE_OUTDIGITn_WC)])
1322 dnl ****************************************
1323 dnl *** posix_memalign ***
1324 dnl ****************************************
1325 AC_MSG_CHECKING(for a compliant posix_memalign() implementation)
1326 AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
1327 glib_cv_compliant_posix_memalign=0
1328 if test "$ac_cv_func_posix_memalign" = "yes" ; then
1330 #define _XOPEN_SOURCE 600
1331 #include <stdlib.h> /* posix_memalign() should be defined here */
1332 /* some systems break if #include <malloc.h> used */
1333 static void test_memalign (size_t boundary, size_t size) {
1335 if (posix_memalign (&mem, boundary, size) != 0 || !mem)
1341 test_memalign ( 128, 128 - 2 * sizeof (void*));
1342 test_memalign ( 256, 256 - 2 * sizeof (void*));
1343 test_memalign ( 512, 512 - 2 * sizeof (void*));
1344 test_memalign ( 1024, 1024 - 2 * sizeof (void*));
1345 test_memalign ( 2048, 2048 - 2 * sizeof (void*));
1346 test_memalign ( 4096, 4096 - 2 * sizeof (void*));
1347 test_memalign ( 8192, 8192 - 2 * sizeof (void*));
1348 test_memalign (16384, 16384 - 2 * sizeof (void*));
1349 test_memalign (32768, 32768 - 2 * sizeof (void*));
1350 exit (0); /* success */
1353 [glib_cv_compliant_posix_memalign=1], [], [:])
1357 if test "$glib_cv_compliant_posix_memalign" = "1"; then
1359 AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
1365 dnl ****************************************
1366 dnl *** strlcpy/strlcat ***
1367 dnl ****************************************
1369 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
1370 AC_TRY_RUN([#include <stdlib.h>
1374 (void) strlcpy (p, "hi", 10);
1375 if (strlcat (p, "bye", 0) != 3)
1378 }], glib_cv_have_strlcpy=yes,
1379 glib_cv_have_strlcpy=no,
1380 glib_cv_have_strlcpy=no)])
1381 if test "$glib_cv_have_strlcpy" = "yes"; then
1382 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
1386 dnl **********************
1387 dnl *** va_copy checks ***
1388 dnl **********************
1389 dnl we currently check for all three va_copy possibilities, so we get
1390 dnl all results in config.log for bug reports.
1391 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
1392 AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <stdarg.h>
1394 void f (int i, ...) {
1395 va_list args1, args2;
1396 va_start (args1, i);
1397 va_copy (args2, args1);
1398 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1400 va_end (args1); va_end (args2);
1406 [glib_cv_va_copy=yes],
1407 [glib_cv_va_copy=no])
1409 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
1410 AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <stdarg.h>
1412 void f (int i, ...) {
1413 va_list args1, args2;
1414 va_start (args1, i);
1415 __va_copy (args2, args1);
1416 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1418 va_end (args1); va_end (args2);
1424 [glib_cv___va_copy=yes],
1425 [glib_cv___va_copy=no])
1428 if test "x$glib_cv_va_copy" = "xyes"; then
1429 g_va_copy_func=va_copy
1430 else if test "x$glib_cv___va_copy" = "xyes"; then
1431 g_va_copy_func=__va_copy
1435 if test -n "$g_va_copy_func"; then
1436 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
1439 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
1440 AC_TRY_RUN([#include <stdarg.h>
1442 void f (int i, ...) {
1443 va_list args1, args2;
1444 va_start (args1, i);
1446 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1448 va_end (args1); va_end (args2);
1454 [glib_cv_va_val_copy=yes],
1455 [glib_cv_va_val_copy=no],
1456 [glib_cv_va_val_copy=yes])
1459 if test "x$glib_cv_va_val_copy" = "xno"; then
1460 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
1463 dnl ***********************
1464 dnl *** g_module checks ***
1465 dnl ***********************
1467 G_MODULE_LIBS_EXTRA=
1468 G_MODULE_PLUGIN_LIBS=
1469 if test x"$glib_native_win32" = xyes; then
1470 dnl No use for this on Win32
1474 G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1476 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1477 G_MODULE_NEED_USCORE=0
1478 G_MODULE_BROKEN_RTLD_GLOBAL=0
1479 G_MODULE_HAVE_DLERROR=0
1480 dnl *** force native WIN32 shared lib loader
1481 if test -z "$G_MODULE_IMPL"; then
1483 *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1486 dnl *** force native AIX library loader
1487 dnl *** dlopen() filepath must be of the form /path/libname.a(libname.so)
1488 if test -z "$G_MODULE_IMPL"; then
1490 *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
1493 dnl *** dlopen() and dlsym() in system libraries
1494 if test -z "$G_MODULE_IMPL"; then
1495 AC_CHECK_FUNC(dlopen,
1496 [AC_CHECK_FUNC(dlsym,
1497 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1500 dnl *** load_image (BeOS)
1501 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
1502 AC_CHECK_LIB(root, load_image,
1503 [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
1504 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1505 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1506 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1509 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1510 if test -z "$G_MODULE_IMPL"; then
1511 AC_CHECK_FUNC(NSLinkModule,
1512 [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1513 G_MODULE_NEED_USCORE=1],
1516 dnl *** dlopen() and dlsym() in libdl
1517 if test -z "$G_MODULE_IMPL"; then
1518 AC_CHECK_LIB(dl, dlopen,
1519 [AC_CHECK_LIB(dl, dlsym,
1521 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1524 dnl *** shl_load() in libdld (HP-UX)
1525 if test -z "$G_MODULE_IMPL"; then
1526 AC_CHECK_LIB(dld, shl_load,
1527 [G_MODULE_LIBS=-ldld
1528 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1531 dnl *** additional checks for G_MODULE_IMPL_DL
1532 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1534 LDFLAGS_orig="$LDFLAGS"
1535 LIBS="$G_MODULE_LIBS $LIBS"
1536 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1537 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1538 echo "void glib_plugin_test(void) { }" > plugin.c
1539 ${SHELL} ./libtool --mode=compile ${CC} -shared \
1540 -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
1541 AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1542 glib_cv_rtldglobal_broken,[
1546 # define RTLD_GLOBAL 0
1549 # define RTLD_LAZY 0
1551 int glib_plugin_test;
1553 void *handle, *global, *local;
1554 global = &glib_plugin_test;
1555 handle = dlopen ("./.libs/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
1556 if (!handle) return 0;
1557 local = dlsym (handle, "glib_plugin_test");
1558 return global == local;
1560 [glib_cv_rtldglobal_broken=no],
1561 [glib_cv_rtldglobal_broken=yes],
1562 [glib_cv_rtldglobal_broken=no])
1563 rm -f plugin.c plugin.o plugin.lo .libs/plugin.o
1564 rmdir .libs 2>/dev/null
1566 if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1567 G_MODULE_BROKEN_RTLD_GLOBAL=1
1569 G_MODULE_BROKEN_RTLD_GLOBAL=0
1571 dnl *** check whether we need preceeding underscores
1572 AC_CACHE_CHECK([for preceeding underscore in symbols],
1574 AC_TRY_RUN([#include <dlfcn.h>
1575 int glib_underscore_test (void) { return 42; }
1577 void *f1 = (void*)0, *f2 = (void*)0, *handle;
1578 handle = dlopen ((void*)0, 0);
1580 f1 = dlsym (handle, "glib_underscore_test");
1581 f2 = dlsym (handle, "_glib_underscore_test");
1582 } return (!f2 || f1);
1584 [glib_cv_uscore=yes],
1585 [glib_cv_uscore=no],
1587 rm -f plugin.c plugin.$ac_objext plugin.lo
1589 GLIB_ASSERT_SET(glib_cv_uscore)
1590 if test "x$glib_cv_uscore" = "xyes"; then
1591 G_MODULE_NEED_USCORE=1
1593 G_MODULE_NEED_USCORE=0
1596 LDFLAGS="$LDFLAGS_orig"
1597 dnl *** check for having dlerror()
1598 AC_CHECK_FUNC(dlerror,
1599 [G_MODULE_HAVE_DLERROR=1],
1600 [G_MODULE_HAVE_DLERROR=0])
1603 dnl *** done, have we got an implementation?
1604 if test -z "$G_MODULE_IMPL"; then
1606 G_MODULE_SUPPORTED=false
1608 G_MODULE_SUPPORTED=true
1611 AC_MSG_CHECKING(for the suffix of module shared libraries)
1613 shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
1615 module=yes eval std_shrext=$shrext_cmds
1616 # chop the initial dot
1617 glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'`
1618 AC_MSG_RESULT(.$glib_gmodule_suffix)
1619 # any reason it may fail?
1620 if test "x$glib_gmodule_suffix" = x; then
1621 AC_MSG_ERROR(Cannot determine shared library suffix from libtool)
1624 AC_SUBST(G_MODULE_SUPPORTED)
1625 AC_SUBST(G_MODULE_IMPL)
1626 AC_SUBST(G_MODULE_LIBS)
1627 AC_SUBST(G_MODULE_LIBS_EXTRA)
1628 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1629 AC_SUBST(G_MODULE_LDFLAGS)
1630 AC_SUBST(G_MODULE_HAVE_DLERROR)
1631 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1632 AC_SUBST(G_MODULE_NEED_USCORE)
1633 AC_SUBST(GLIB_DEBUG_FLAGS)
1635 dnl **********************
1636 dnl *** g_spawn checks ***
1637 dnl **********************
1639 AC_MSG_CHECKING(for gspawn implementation)
1642 GSPAWN=gspawn-win32.lo
1648 AC_MSG_RESULT($GSPAWN)
1651 dnl *************************
1652 dnl *** GIOChannel checks ***
1653 dnl *************************
1655 AC_MSG_CHECKING(for GIOChannel implementation)
1667 dnl *********************************
1668 dnl *** Directory for GIO modules ***
1669 dnl *********************************
1671 AC_ARG_WITH(gio-module-dir,
1672 [AC_HELP_STRING([--with-gio-module-dir=DIR],
1673 [load gio modules from this directory [LIBDIR/gio/modules]])],
1675 [with_gio_module_dir='${libdir}/gio/modules'])
1676 GIO_MODULE_DIR=$with_gio_module_dir
1677 AC_SUBST(GIO_MODULE_DIR)
1679 dnl **********************************
1680 dnl *** Check for libselinux (GIO) ***
1681 dnl **********************************
1682 AC_ARG_ENABLE(selinux,
1683 AC_HELP_STRING([--disable-selinux],
1684 [build without selinux support]))
1687 if test "x$enable_selinux" != "xno"; then
1689 AC_CHECK_LIB(selinux, is_selinux_enabled,
1690 [AC_CHECK_HEADERS(selinux/selinux.h,
1691 [AC_CHECK_LIB(selinux, lgetfilecon_raw,
1692 [AC_DEFINE(HAVE_SELINUX, 1, [Define to 1 if libselinux is available])
1693 SELINUX_LIBS="-lselinux"
1698 AC_SUBST(SELINUX_LIBS)
1700 dnl *****************************
1701 dnl ** Check for inotify (GIO) **
1702 dnl *****************************
1704 AC_CHECK_HEADERS([sys/inotify.h],
1707 AC_CHECK_FUNCS(inotify_init1)
1710 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
1712 dnl *********************************
1713 dnl ** Check for Solaris FEN (GIO) **
1714 dnl *********************************
1716 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
1718 #ifndef PORT_SOURCE_FILE
1719 #error "Please upgrade to Nevada 72 or above to suppoert FEN"
1721 int main() { return 0; } ]])],
1726 AM_CONDITIONAL(HAVE_FEN, [test "$fen_support" = "yes"])
1728 dnl ****************************
1729 dnl *** Checks for FAM (GIO) ***
1730 dnl ****************************
1732 should_disable_fam=no
1735 AC_HELP_STRING([--disable-fam],
1736 [don't use fam for file system monitoring]),
1738 if test "x$enable_fam" = "xno"; then
1739 should_disable_fam=yes
1745 if test "x$should_disable_fam" = "xno"; then
1746 AC_CHECK_LIB(fam, FAMOpen,
1747 [AC_CHECK_HEADERS(fam.h,
1748 [AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
1749 AC_CHECK_LIB(fam, FAMNoExists,
1750 AC_DEFINE(HAVE_FAM_NO_EXISTS, [], [Define if we have FAMNoExists in fam]))
1753 AC_MSG_WARN(*** FAM support will not be built (header files not found) ***))],
1754 AC_MSG_WARN(*** FAM support will not be built (FAM library not found) ***))
1757 AM_CONDITIONAL(HAVE_FAM, [test "$fam_support" = "yes"])
1760 dnl *****************************
1761 dnl *** Check for xattr (GIO) ***
1762 dnl *****************************
1763 AC_ARG_ENABLE(xattr,
1764 AC_HELP_STRING([--disable-xattr], [build without xattr support]))
1767 if test "x$enable_xattr" != "xno"; then
1769 dnl either glibc or libattr can provide xattr support
1771 dnl for both of them, we check for getxattr being in
1772 dnl the library and a valid xattr header.
1775 AC_CHECK_LIB(c, getxattr,
1776 [AC_CHECK_HEADERS(sys/xattr.h,
1777 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1781 if test "x$msg_xattr" != "xyes"; then
1782 dnl failure. try libattr
1783 AC_CHECK_LIB(attr, getxattr,
1784 [AC_CHECK_HEADERS(attr/xattr.h,
1785 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1791 if test "x$msg_xattr" = "xyes"; then
1792 AC_MSG_CHECKING([for XATTR_NOFOLLOW])
1795 #ifdef HAVE_SYS_TYPES_H
1796 #include <sys/types.h>
1798 #ifdef HAVE_SYS_XATTR_H
1799 #include <sys/xattr.h>
1800 #elif HAVE_ATTR_XATTR_H
1801 #include <attr/xattr.h>
1804 [ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);],
1806 AC_DEFINE([HAVE_XATTR_NOFOLLOW], [1], [Define to 1 if xattr API uses XATTR_NOFOLLOW])
1807 AC_MSG_RESULT([yes])
1809 [AC_MSG_RESULT([no])]
1814 AC_SUBST(XATTR_LIBS)
1816 dnl ****************************************
1817 dnl *** platform dependent source checks ***
1818 dnl ****************************************
1820 AC_MSG_CHECKING(for platform-dependent source)
1822 *-*-cygwin*|*-*-mingw*)
1823 PLATFORMDEP=gwin32.lo
1829 AC_MSG_RESULT($PLATFORMDEP)
1830 AC_SUBST(PLATFORMDEP)
1832 AC_MSG_CHECKING([whether to compile timeloop])
1834 *-*-cygwin*|*-*-mingw*|*-*-minix)
1841 AC_MSG_RESULT($enable_timeloop)
1842 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1844 AC_MSG_CHECKING([if building for some Win32 platform])
1846 *-*-mingw*|*-*-cygwin*)
1853 AC_MSG_RESULT($platform_win32)
1854 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1856 dnl ***********************
1857 dnl *** g_thread checks ***
1858 dnl ***********************
1860 AC_ARG_WITH(threads,
1861 [AC_HELP_STRING([--with-threads=@<:@posix/win32@:>@],
1862 [specify a thread implementation to use])],
1863 [if test "x$with_threads" = x; then
1866 want_threads=$with_threads
1870 dnl error and warning message
1871 dnl *************************
1873 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1876 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1877 platform (normally it's "_REENTRANT"). I'll not use any flag on
1878 compilation now, but then your programs might not work.
1879 Please provide information on how it is done on your system."
1881 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1884 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1885 provide information on your thread implementation."
1887 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1888 functions will not be MT-safe during their first call because
1889 there is no working 'getpwuid_r' on your system."
1891 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1892 because there is no 'localtime_r' on your system."
1894 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1895 crude surrogate will be used. If you happen to know a
1896 yield function for your system, please inform the GLib
1899 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for
1900 threads on your system. Thus threads can only have the default
1901 priority. If you happen to know these main/max
1902 priorities, please inform the GLib developers."
1904 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1905 linking threaded applications. As GLib cannot do that
1906 automatically, you will get an linkg error everytime you are
1907 not using the right compiler. In that case you have to relink
1908 with the right compiler. Ususally just '_r' is appended
1909 to the compiler name."
1911 dnl determination of thread implementation
1912 dnl ***************************************
1915 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1916 || test "x$want_threads" = xdce; then
1917 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1918 # -U_OSF_SOURCE is for Digital UNIX 4.0d
1919 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1920 glib_save_CPPFLAGS="$CPPFLAGS"
1921 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1922 if test "x$have_threads" = xno; then
1923 AC_TRY_COMPILE([#include <pthread.h>],
1924 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1927 # Tru64Unix requires -pthread to find pthread.h. See #103020
1928 CPPFLAGS="$CPPFLAGS -pthread"
1929 if test "x$have_threads" = xno; then
1930 AC_TRY_COMPILE([#include <pthread.h>],
1931 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1934 CPPFLAGS="$glib_save_CPPFLAGS"
1936 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1944 AC_MSG_CHECKING(for thread implementation)
1946 if test "x$have_threads" = xno; then
1947 AC_MSG_RESULT(none available)
1948 AC_MSG_ERROR($THREAD_NO_IMPLEMENTATION)
1950 AC_MSG_RESULT($have_threads)
1954 dnl determination of G_THREAD_CFLAGS
1955 dnl ********************************
1958 G_THREAD_LIBS_EXTRA=
1962 dnl Test program for basic POSIX threads functionality
1964 m4_define([glib_thread_test],[
1965 #include <pthread.h>
1967 void* func(void* data) {check_me = 42; return &check_me;}
1971 pthread_create (&t, $1, func, 0);
1972 pthread_join (t, &ret);
1973 return (check_me != 42 || ret != &check_me);
1977 dnl Test program for sched_get_priority_min()
1979 m4_define([glib_sched_priority_test],[
1984 return sched_get_priority_min(SCHED_OTHER)==-1
1988 if test x"$have_threads" = xposix; then
1989 # First we test for posix, whether -pthread or -pthreads do the trick as
1990 # both CPPFLAG and LIBS.
1991 # One of them does for most gcc versions and some other platforms/compilers
1992 # too and could be considered as the canonical way to go.
1994 *-*-cygwin*|*-*-darwin*)
1995 # skip cygwin and darwin -pthread or -pthreads test
1998 # These compiler/linker flags work with both Sun Studio and gcc
1999 # Sun Studio expands -mt to -D_REENTRANT and -lthread
2000 # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
2001 G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
2002 G_THREAD_LIBS="-lpthread -lthread"
2005 for flag in pthread pthreads mt; do
2006 glib_save_CFLAGS="$CFLAGS"
2007 CFLAGS="$CFLAGS -$flag"
2008 AC_TRY_RUN(glib_thread_test(0),
2009 glib_flag_works=yes,
2011 [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test(0))],
2012 glib_flag_works=yes,
2013 glib_flag_works=no)])
2014 CFLAGS="$glib_save_CFLAGS"
2015 if test $glib_flag_works = yes ; then
2016 G_THREAD_CFLAGS=-$flag
2017 G_THREAD_LIBS=-$flag
2025 if test x"$G_THREAD_CFLAGS" = x; then
2027 # The canonical -pthread[s] does not work. Try something different.
2031 if test x"$GCC" = xyes; then
2032 # GCC 3.0 and above needs -pthread.
2033 # Should be coverd by the case above.
2034 # GCC 2.x and below needs -mthreads
2035 G_THREAD_CFLAGS="-mthreads"
2036 G_THREAD_LIBS=$G_THREAD_CFLAGS
2038 # We are probably using the aix compiler. Normaly a
2039 # program would have to be compiled with the _r variant
2040 # of the corresponding compiler, but we as GLib cannot
2041 # do that: but the good news is that for compiling the
2042 # only difference is the added -D_THREAD_SAFE compile
2043 # option. This is according to the "C for AIX User's
2045 G_THREAD_CFLAGS="-D_THREAD_SAFE"
2049 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
2051 *-sysv5uw7*) # UnixWare 7
2052 # We are not using gcc with -pthread. Catched above.
2053 G_THREAD_CFLAGS="-Kthread"
2054 G_THREAD_LIBS=$G_THREAD_CFLAGS
2057 # No flag needed when using MSVCRT.DLL
2061 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
2067 # if we are not finding the localtime_r function, then we probably are
2068 # not using the proper multithread flag
2070 glib_save_CPPFLAGS="$CPPFLAGS"
2071 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
2073 # First we test, whether localtime_r is declared in time.h
2074 # directly. Then we test whether a macro localtime_r exists, in
2075 # which case localtime_r in the test program is replaced and thus
2076 # if we still find localtime_r in the output, it is not defined as
2079 AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
2080 [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>
2082 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
2084 CPPFLAGS="$glib_save_CPPFLAGS"
2086 AC_MSG_CHECKING(thread related cflags)
2087 AC_MSG_RESULT($G_THREAD_CFLAGS)
2088 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
2090 dnl determination of G_THREAD_LIBS
2091 dnl ******************************
2093 case $have_threads in
2095 glib_save_CPPFLAGS="$CPPFLAGS"
2096 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2097 if test x"$G_THREAD_LIBS" = x; then
2100 # We are not using gcc (would have set G_THREAD_LIBS) and thus
2101 # probably using the aix compiler.
2102 AC_MSG_WARN($AIX_COMPILE_INFO)
2106 glib_save_LIBS="$LIBS"
2107 for thread_lib in "" pthread pthread32 pthreads thread; do
2108 if test x"$thread_lib" = x; then
2112 add_thread_lib="-l$thread_lib"
2113 IN=" in -l$thread_lib"
2115 if test x"$have_threads" = xposix; then
2118 defattr=pthread_attr_default
2121 LIBS="$add_thread_lib $glib_save_LIBS"
2123 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
2124 AC_TRY_RUN(glib_thread_test($defattr),
2127 [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test($defattr))],
2130 AC_MSG_RESULT($glib_result)
2132 if test "$glib_result" = "yes" ; then
2133 G_THREAD_LIBS="$add_thread_lib"
2137 if test "x$G_THREAD_LIBS" = xerror; then
2138 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2140 LIBS="$glib_save_LIBS"
2145 glib_save_LIBS="$LIBS"
2146 for thread_lib in "" rt rte; do
2147 if test x"$thread_lib" = x; then
2151 add_thread_lib="-l$thread_lib"
2152 IN=" in -l$thread_lib"
2154 LIBS="$add_thread_lib $glib_save_LIBS"
2156 AC_MSG_CHECKING(for sched_get_priority_min$IN)
2157 AC_TRY_RUN(glib_sched_priority_test,
2160 [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_sched_priority_test)],
2163 AC_MSG_RESULT($glib_result)
2165 if test "$glib_result" = "yes" ; then
2166 G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
2167 posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
2168 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
2172 LIBS="$glib_save_LIBS"
2173 g_threads_impl="POSIX"
2174 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
2175 CPPFLAGS="$glib_save_CPPFLAGS"
2178 g_threads_impl="WIN32"
2181 g_threads_impl="NONE"
2186 if test "x$G_THREAD_LIBS" = xerror; then
2187 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2192 G_THREAD_LIBS="-lbe -lroot -lglib-2.0 "
2193 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
2199 AC_MSG_CHECKING(thread related libraries)
2200 AC_MSG_RESULT($G_THREAD_LIBS)
2202 dnl check for mt safe function variants and some posix functions
2203 dnl ************************************************************
2205 glib_save_LIBS="$LIBS"
2206 # we are not doing the following for now, as this might require glib
2207 # to always be linked with the thread libs on some platforms.
2208 # LIBS="$LIBS $G_THREAD_LIBS"
2209 AC_CHECK_FUNCS(localtime_r gmtime_r)
2210 if test "$ac_cv_header_pwd_h" = "yes"; then
2211 AC_CACHE_CHECK([for posix getpwuid_r],
2212 ac_cv_func_posix_getpwuid_r,
2218 struct passwd pwd, *pwptr = &pwd;
2221 error = getpwuid_r (0, &pwd, buffer,
2222 sizeof (buffer), &pwptr);
2223 return (error < 0 && errno == ENOSYS)
2226 [ac_cv_func_posix_getpwuid_r=yes],
2227 [ac_cv_func_posix_getpwuid_r=no])])
2228 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
2229 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
2230 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
2231 [Have POSIX function getpwuid_r])
2233 AC_CACHE_CHECK([for nonposix getpwuid_r],
2234 ac_cv_func_nonposix_getpwuid_r,
2235 [AC_TRY_LINK([#include <pwd.h>],
2236 [char buffer[10000];
2238 getpwuid_r (0, &pwd, buffer,
2240 [ac_cv_func_nonposix_getpwuid_r=yes],
2241 [ac_cv_func_nonposix_getpwuid_r=no])])
2242 GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
2243 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
2244 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
2245 [Have non-POSIX function getpwuid_r])
2249 if test "$ac_cv_header_grp_h" = "yes"; then
2250 AC_CACHE_CHECK([for posix getgrgid_r],
2251 ac_cv_func_posix_getgrgid_r,
2257 struct group grp, *grpptr = &grp;
2260 error = getgrgid_r (0, &grp, buffer,
2261 sizeof (buffer), &grpptr);
2262 return (error < 0 && errno == ENOSYS)
2265 [ac_cv_func_posix_getgrgid_r=yes],
2266 [ac_cv_func_posix_getgrgid_r=no])])
2267 GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
2268 if test "$ac_cv_func_posix_getgrgid_r" = yes; then
2269 AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
2270 [Have POSIX function getgrgid_r])
2272 AC_CACHE_CHECK([for nonposix getgrgid_r],
2273 ac_cv_func_nonposix_getgrgid_r,
2274 [AC_TRY_LINK([#include <grp.h>],
2275 [char buffer[10000];
2277 getgrgid_r (0, &grp, buffer,
2279 [ac_cv_func_nonposix_getgrgid_r=yes],
2280 [ac_cv_func_nonposix_getgrgid_r=no])])
2281 GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
2282 if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
2283 AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
2284 [Have non-POSIX function getgrgid_r])
2288 LIBS="$G_THREAD_LIBS $LIBS"
2289 if test x"$have_threads" = xposix; then
2290 glib_save_CPPFLAGS="$CPPFLAGS"
2291 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2292 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
2293 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
2294 # This is not AC_CHECK_FUNC to also work with function
2295 # name mangling in header files.
2296 AC_MSG_CHECKING(for pthread_attr_setstacksize)
2297 AC_TRY_LINK([#include <pthread.h>],
2298 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
2300 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
2301 [Have function pthread_attr_setstacksize])],
2302 [AC_MSG_RESULT(no)])
2303 AC_MSG_CHECKING(for minimal/maximal thread priority)
2304 if test x"$posix_priority_min" = x; then
2305 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
2307 posix_priority_min=PX_PRIO_MIN
2308 posix_priority_max=PX_PRIO_MAX])
2310 if test x"$posix_priority_min" = x; then
2312 AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
2313 PTHREAD_PRIO_MIN],,[
2314 posix_priority_min=PTHREAD_PRIO_MIN
2315 posix_priority_max=PTHREAD_PRIO_MAX])
2317 if test x"$posix_priority_min" = x; then
2318 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
2320 posix_priority_min=PRI_OTHER_MIN
2321 posix_priority_max=PRI_OTHER_MAX])
2323 if test x"$posix_priority_min" = x; then
2324 AC_MSG_RESULT(none found)
2325 AC_MSG_WARN($POSIX_NO_PRIORITIES)
2326 posix_priority_min=-1
2327 posix_priority_max=-1
2329 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
2330 AC_MSG_CHECKING(for pthread_setschedparam)
2331 AC_TRY_LINK([#include <pthread.h>],
2332 [pthread_t t; pthread_setschedparam(t, 0, NULL)],
2334 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
2335 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
2337 AC_MSG_WARN($POSIX_NO_PRIORITIES)])
2339 posix_yield_func=none
2340 AC_MSG_CHECKING(for posix yield function)
2341 for yield_func in sched_yield pthread_yield_np pthread_yield \
2343 AC_TRY_LINK([#include <pthread.h>],
2345 [posix_yield_func="$yield_func"
2348 if test x"$posix_yield_func" = xnone; then
2349 AC_MSG_RESULT(none found)
2350 AC_MSG_WARN($POSIX_NO_YIELD)
2351 posix_yield_func="g_usleep(1000)"
2353 AC_MSG_RESULT($posix_yield_func)
2354 posix_yield_func="$posix_yield_func()"
2356 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
2357 CPPFLAGS="$glib_save_CPPFLAGS"
2359 elif test x"$have_threads" = xwin32; then
2360 # It's a pointer to a private struct
2361 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
2364 LIBS="$glib_save_LIBS"
2366 # now spit out all the warnings.
2367 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
2368 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
2369 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
2371 if test "$ac_cv_func_localtime_r" != "yes"; then
2372 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
2375 if test x"$glib_cv_sizeof_system_thread" = x; then
2376 # use a pointer as a fallback.
2377 GLIB_SIZEOF(,void *, system_thread)
2381 # Hack to deal with:
2383 # a) GCC < 3.3 for Linux doesn't include -lpthread when
2384 # building shared libraries with linux.
2385 # b) FreeBSD doesn't do this either.
2388 *-*-freebsd*|*-*-linux*)
2389 G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
2392 LDFLAGS="$LDFLAGS -pthread"
2395 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
2399 AC_SUBST(G_THREAD_CFLAGS)
2400 AC_SUBST(G_THREAD_LIBS)
2401 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
2402 AC_SUBST(G_THREAD_LIBS_EXTRA)
2404 AC_CHECK_FUNCS(clock_gettime, [], [
2405 AC_CHECK_LIB(rt, clock_gettime, [
2406 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
2407 G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
2408 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
2412 AC_SUBST(GLIB_RT_LIBS)
2415 dnl ************************
2416 dnl *** g_atomic_* tests ***
2417 dnl ************************
2419 dnl We need to decide at configure time if GLib will use real atomic
2420 dnl operations ("lock free") or emulated ones with a mutex. This is
2421 dnl because we must put this information in glibconfig.h so we know if
2422 dnl it is safe or not to inline using compiler intrinsics directly from
2425 dnl We also publish the information via G_ATOMIC_LOCK_FREE in case the
2426 dnl user is interested in knowing if they can use the atomic ops across
2429 dnl We can currently support the atomic ops natively when building GLib
2430 dnl with recent versions of GCC or MSVC. MSVC doesn't run ./configure,
2431 dnl so we skip that case here and define G_ATOMIC_LOCK_FREE exactly when
2432 dnl we are using GCC.
2434 dnl Note that the atomic ops are only available with GCC on x86 when
2435 dnl using -march=i486 or higher. If we detect that the atomic ops are
2436 dnl not available but would be available given the right flags, we want
2437 dnl to abort and advise the user to fix their CFLAGS. It's better to do
2438 dnl that then to silently fall back on emulated atomic ops just because
2439 dnl the user had the wrong build environment.
2441 dnl We may add other compilers here in the future...
2442 AC_MSG_CHECKING([for lock-free atomic intrinsics])
2444 [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
2445 [glib_cv_g_atomic_lock_free=yes],
2446 [glib_cv_g_atomic_lock_free=no])
2447 AC_MSG_RESULT($glib_cv_g_atomic_lock_free)
2449 if test "$glib_cv_g_atomic_lock_free" = "no"; then
2450 SAVE_CFLAGS="${CFLAGS}"
2451 CFLAGS="-march=i486"
2453 [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
2454 [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
2456 CFLAGS="${SAVE_CFLAGS}"
2459 dnl We need a more robust approach here...
2461 i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
2462 glib_memory_barrier_needed=no
2464 sparc*|alpha*|powerpc*|ia64)
2465 glib_memory_barrier_needed=yes
2468 glib_memory_barrier_needed=yes
2472 dnl ************************
2473 dnl ** Check for futex(2) **
2474 dnl ************************
2475 AC_CACHE_CHECK(for futex(2) system call,
2476 glib_cv_futex,AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
2477 #include <linux/futex.h>
2478 #include <sys/syscall.h>
2484 /* it is not like this actually runs or anything... */
2485 syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
2488 ])],glib_cv_futex=yes,glib_cv_futex=no))
2489 if test x"$glib_cv_futex" = xyes; then
2490 AC_DEFINE(HAVE_FUTEX, 1, [we have the futex(2) system call])
2493 AC_CACHE_CHECK(for eventfd(2) system call,
2494 glib_cv_eventfd,AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
2495 #include <sys/eventfd.h>
2501 eventfd (0, EFD_CLOEXEC);
2504 ])],glib_cv_eventfd=yes,glib_cv_eventfd=no))
2505 if test x"$glib_cv_eventfd" = x"yes"; then
2506 AC_DEFINE(HAVE_EVENTFD, 1, [we have the eventfd(2) system call])
2508 AM_CONDITIONAL(HAVE_EVENTFD, [test "$glib_cv_eventfd" = "yes"])
2510 dnl ****************************************
2511 dnl *** GLib POLL* compatibility defines ***
2512 dnl ****************************************
2514 glib_poll_includes=["
2515 #include <sys/types.h>
2516 #include <sys/poll.h>
2519 if test $ac_cv_header_sys_types_h = yes &&
2520 test $ac_cv_header_sys_poll_h = yes ; then
2522 GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
2523 GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
2524 GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
2525 GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
2526 GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
2527 GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
2528 if $glib_failed ; then
2529 AC_MSG_ERROR([Could not determine values for POLL* constants])
2532 glib_cv_value_POLLIN=1
2533 glib_cv_value_POLLOUT=4
2534 glib_cv_value_POLLPRI=2
2535 glib_cv_value_POLLERR=8
2536 glib_cv_value_POLLHUP=16
2537 glib_cv_value_POLLNVAL=32
2540 AC_MSG_CHECKING([for broken poll])
2541 AC_RUN_IFELSE([AC_LANG_SOURCE([[
2545 #ifdef HAVE_SYS_POLL_H
2546 #include <sys/poll.h>
2549 struct pollfd fds[1];
2551 fd = open("/dev/null", 1);
2553 fds[0].events = POLLIN;
2555 if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
2556 exit(1); /* Does not work for devices -- fail */
2562 AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
2563 [broken_poll="no (cross compiling)"])
2564 AC_MSG_RESULT($broken_poll)
2566 dnl *********************
2567 dnl *** GRegex checks ***
2568 dnl *********************
2569 PCRE_REQUIRED_VERSION=8.11
2571 # Check if we should compile GRegex
2572 AC_ARG_ENABLE(regex, AC_HELP_STRING([--disable-regex],
2573 [disable the compilation of GRegex]),
2574 [case "${enableval}" in
2575 yes) enable_regex=true ;;
2576 no) enable_regex=false ;;
2577 *) AC_MSG_ERROR(bad value ${enableval} for --enable-regex) ;;
2579 [enable_regex=true])
2581 AM_CONDITIONAL(ENABLE_REGEX, $enable_regex)
2583 if test x$enable_regex = xtrue; then
2584 AC_DEFINE(ENABLE_REGEX, [], [include GRegex])
2585 # Check if we should use the internal or the system-supplied pcre
2587 [AC_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
2588 [whether to use system PCRE [default=internal]])])
2590 AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
2592 if test "x$with_pcre" = xsystem; then
2593 PKG_CHECK_MODULES(PCRE,
2594 libpcre >= $PCRE_REQUIRED_VERSION)
2595 AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
2596 glib_save_CFLAGS="$CFLAGS"
2597 glib_save_LIBS="$LIBS"
2598 CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
2599 AC_TRY_RUN([#include <pcre.h>
2602 pcre_config (PCRE_CONFIG_UTF8, &support);
2605 pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
2610 glib_cv_pcre_has_unicode=yes,
2611 glib_cv_pcre_has_unicode=no,
2612 glib_cv_pcre_has_unicode=yes)
2613 CFLAGS="$glib_save_CFLAGS"
2614 LIBS="$glib_save_LIBS"
2616 if test "$glib_cv_pcre_has_unicode" = "no"; then
2617 AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
2619 AC_SUBST(PCRE_CFLAGS)
2621 AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
2622 PCRE_REQUIRES=libpcre
2623 AC_SUBST(PCRE_REQUIRES)
2625 # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
2626 if test x"$GCC" = xyes; then
2627 AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
2628 save_CFLAGS="$CFLAGS"
2629 CFLAGS="$CFLAGS -Wno-pointer-sign"
2630 AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
2631 AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
2632 CFLAGS="$save_CFLAGS"
2635 AC_SUBST(PCRE_WARN_CFLAGS)
2637 AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
2640 dnl **********************
2641 dnl *** Win32 API libs ***
2642 dnl **********************
2646 G_LIBS_EXTRA="-luser32 -lkernel32"
2649 G_LIBS_EXTRA="-lws2_32 -lole32"
2655 AC_SUBST(G_LIBS_EXTRA)
2657 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
2658 dnl since we need it for g_iconv()
2660 AC_MSG_CHECKING([for EILSEQ])
2666 ], have_eilseq=yes, have_eilseq=no);
2667 AC_MSG_RESULT($have_eilseq)
2669 dnl ******************************************************************
2670 dnl *** If we are cross-compiling, look for glib-genmarshal and ***
2671 dnl *** glib-compile-schemas in PATH ***
2672 dnl ******************************************************************
2674 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
2676 if test $cross_compiling = yes; then
2677 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
2678 if test x$GLIB_GENMARSHAL = xno; then
2679 AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
2682 AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas, no)
2683 if test x$GLIB_COMPILE_SCHEMAS = xno; then
2684 AC_MSG_ERROR(Could not find a glib-compile-schemas in your PATH)
2688 dnl **************************
2689 dnl *** Checks for gtk-doc ***
2690 dnl **************************
2692 GTK_DOC_CHECK([1.15])
2695 [AC_HELP_STRING([--enable-man],
2696 [regenerate man pages from Docbook [default=no]])],enable_man=yes,
2699 if test "${enable_man}" != no; then
2701 dnl Check for xsltproc
2703 AC_PATH_PROG([XSLTPROC], [xsltproc])
2704 if test -z "$XSLTPROC"; then
2708 dnl check for DocBook DTD and stylesheets in the local catalog.
2709 JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
2710 [DocBook XML DTD V4.1.2],,enable_man=no)
2711 JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
2712 [DocBook XSL Stylesheets],,enable_man=no)
2715 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
2721 AC_ARG_ENABLE([dtrace],
2722 [AS_HELP_STRING([--enable-dtrace],
2723 [include tracing support for dtrace])])
2725 AC_MSG_CHECKING([whether to include dtrace tracing support])
2726 if test "x$enable_dtrace" != xno; then
2727 if test x$glib_have_carbon = xyes; then
2728 AC_MSG_RESULT([no (not yet compatible with MacOS dtrace)])
2730 AC_MSG_RESULT([yes])
2731 AC_CHECK_PROGS(DTRACE, dtrace)
2732 if test -z "$DTRACE"; then
2733 if test "x$enable_dtrace" = xyes; then
2734 AC_MSG_ERROR([dtrace not found])
2737 AC_CHECK_HEADER([sys/sdt.h],have_dtrace=yes,
2738 [if test "x$enable_dtrace" = xyes; then
2739 AC_MSG_ERROR([dtrace support needs sys/sdt.h header])
2746 if test "x$have_dtrace" = xyes; then
2747 AC_DEFINE([HAVE_DTRACE], [1], [Define to 1 if using dtrace probes.])
2749 AM_CONDITIONAL([ENABLE_DTRACE], [test x$have_dtrace = xyes ])
2751 AC_MSG_CHECKING([whether to include systemtap tracing support])
2752 AC_ARG_ENABLE([systemtap],
2753 [AS_HELP_STRING([--enable-systemtap],
2754 [include tracing support for systemtap])])
2756 if test "x$enable_systemtap" != xno -a "x$have_dtrace" = xyes; then
2759 AC_MSG_RESULT(${have_systemtap})
2761 AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$have_systemtap = xyes])
2763 AC_ARG_WITH([tapset-install-dir],
2764 AS_HELP_STRING([--with-tapset-install-dir=DIR],
2765 [path where systemtap tapsets are installed [DATADIR/systemtap/tapset]]),
2766 [if test "x${withval}" = x; then
2767 ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"
2769 ABS_TAPSET_DIR="${withval}"
2771 [ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"])
2772 AC_SUBST(ABS_TAPSET_DIR)
2774 dnl ************************************
2775 dnl *** Enable lcov coverage reports ***
2776 dnl ************************************
2779 AS_HELP_STRING([--enable-gcov],
2780 [enable coverage testing with gcov]),
2781 [use_gcov=$enableval], [use_gcov=no])
2783 if test "x$use_gcov" = "xyes"; then
2785 if test "$GCC" != "yes"; then
2786 AC_MSG_ERROR([GCC is required for --enable-gcov])
2789 dnl Check if ccache is being used
2790 AC_CHECK_PROG(SHTOOL, shtool, shtool)
2791 case `$SHTOOL path $CC` in
2792 *ccache*[)] gcc_ccache=yes;;
2793 *[)] gcc_ccache=no;;
2796 if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
2797 AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
2800 ltp_version_list="1.6 1.7 1.8 1.9"
2801 AC_CHECK_PROG(LTP, lcov, lcov)
2802 AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
2804 if test "$LTP"; then
2805 AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
2806 glib_cv_ltp_version=invalid
2807 ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
2808 for ltp_check_version in $ltp_version_list; do
2809 if test "$ltp_version" = "$ltp_check_version"; then
2810 glib_cv_ltp_version="$ltp_check_version (ok)"
2815 ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
2816 AC_MSG_ERROR([$ltp_msg])
2819 case $glib_cv_ltp_version in
2821 ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
2822 AC_MSG_ERROR([$ltp_msg])
2827 if test -z "$LTP_GENHTML"; then
2828 AC_MSG_ERROR([Could not find genhtml from the LTP package])
2831 AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov])
2833 dnl Remove all optimization flags from CFLAGS
2835 CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
2838 dnl Add the special gcc flags
2839 CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
2840 LDFLAGS="$LDFLAGS -lgcov"
2843 dnl ******************************
2844 dnl *** output the whole stuff ***
2845 dnl ******************************
2847 dnl this section will only be run if config.status is invoked with no
2848 dnl arguments, or with "glib/glibconfig.h" as an argument.
2849 AC_CONFIG_COMMANDS([glib/glibconfig.h],
2851 outfile=glib/glibconfig.h-tmp
2852 cat > $outfile <<\_______EOF
2855 * This is a generated file. Please modify 'configure.ac'
2858 #ifndef __G_LIBCONFIG_H__
2859 #define __G_LIBCONFIG_H__
2861 #include <glib/gmacros.h>
2865 if test x$glib_limits_h = xyes; then
2866 echo '#include <limits.h>' >> $outfile
2868 if test x$glib_float_h = xyes; then
2869 echo '#include <float.h>' >> $outfile
2871 if test x$glib_values_h = xyes; then
2872 echo '#include <values.h>' >> $outfile
2874 if test "$glib_header_alloca_h" = "yes"; then
2875 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
2877 if test x$glib_sys_poll_h = xyes; then
2878 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
2880 if test x$glib_included_printf != xyes; then
2882 /* Specifies that GLib's g_print*() functions wrap the
2883 * system printf functions. This is useful to know, for example,
2884 * when using glibc's register_printf_function().
2886 echo '#define GLIB_USING_SYSTEM_PRINTF' >> $outfile
2889 cat >> $outfile <<_______EOF
2893 #define G_MINFLOAT $glib_mf
2894 #define G_MAXFLOAT $glib_Mf
2895 #define G_MINDOUBLE $glib_md
2896 #define G_MAXDOUBLE $glib_Md
2897 #define G_MINSHORT $glib_ms
2898 #define G_MAXSHORT $glib_Ms
2899 #define G_MAXUSHORT $glib_Mus
2900 #define G_MININT $glib_mi
2901 #define G_MAXINT $glib_Mi
2902 #define G_MAXUINT $glib_Mui
2903 #define G_MINLONG $glib_ml
2904 #define G_MAXLONG $glib_Ml
2905 #define G_MAXULONG $glib_Mul
2910 ### this should always be true in a modern C/C++ compiler
2911 cat >>$outfile <<_______EOF
2912 typedef signed char gint8;
2913 typedef unsigned char guint8;
2917 if test -n "$gint16"; then
2918 cat >>$outfile <<_______EOF
2919 typedef signed $gint16 gint16;
2920 typedef unsigned $gint16 guint16;
2921 #define G_GINT16_MODIFIER $gint16_modifier
2922 #define G_GINT16_FORMAT $gint16_format
2923 #define G_GUINT16_FORMAT $guint16_format
2928 if test -n "$gint32"; then
2929 cat >>$outfile <<_______EOF
2930 typedef signed $gint32 gint32;
2931 typedef unsigned $gint32 guint32;
2932 #define G_GINT32_MODIFIER $gint32_modifier
2933 #define G_GINT32_FORMAT $gint32_format
2934 #define G_GUINT32_FORMAT $guint32_format
2938 cat >>$outfile <<_______EOF
2939 #define G_HAVE_GINT64 1 /* deprecated, always true */
2941 ${glib_extension}typedef signed $gint64 gint64;
2942 ${glib_extension}typedef unsigned $gint64 guint64;
2944 #define G_GINT64_CONSTANT(val) $gint64_constant
2945 #define G_GUINT64_CONSTANT(val) $guint64_constant
2948 if test x$gint64_format != x ; then
2949 cat >>$outfile <<_______EOF
2950 #define G_GINT64_MODIFIER $gint64_modifier
2951 #define G_GINT64_FORMAT $gint64_format
2952 #define G_GUINT64_FORMAT $guint64_format
2955 cat >>$outfile <<_______EOF
2956 #undef G_GINT64_MODIFIER
2957 #undef G_GINT64_FORMAT
2958 #undef G_GUINT64_FORMAT
2962 cat >>$outfile <<_______EOF
2964 #define GLIB_SIZEOF_VOID_P $glib_void_p
2965 #define GLIB_SIZEOF_LONG $glib_long
2966 #define GLIB_SIZEOF_SIZE_T $glib_size_t
2970 cat >>$outfile <<_______EOF
2971 typedef signed $glib_size_type_define gssize;
2972 typedef unsigned $glib_size_type_define gsize;
2973 #define G_GSIZE_MODIFIER $gsize_modifier
2974 #define G_GSSIZE_FORMAT $gssize_format
2975 #define G_GSIZE_FORMAT $gsize_format
2977 #define G_MAXSIZE G_MAXU$glib_msize_type
2978 #define G_MINSSIZE G_MIN$glib_msize_type
2979 #define G_MAXSSIZE G_MAX$glib_msize_type
2981 typedef gint64 goffset;
2982 #define G_MINOFFSET G_MININT64
2983 #define G_MAXOFFSET G_MAXINT64
2985 #define G_GOFFSET_MODIFIER G_GINT64_MODIFIER
2986 #define G_GOFFSET_FORMAT G_GINT64_FORMAT
2987 #define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
2991 if test -z "$glib_unknown_void_p"; then
2992 cat >>$outfile <<_______EOF
2994 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
2995 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
2997 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
2998 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
3000 typedef signed $glib_intptr_type_define gintptr;
3001 typedef unsigned $glib_intptr_type_define guintptr;
3003 #define G_GINTPTR_MODIFIER $gintptr_modifier
3004 #define G_GINTPTR_FORMAT $gintptr_format
3005 #define G_GUINTPTR_FORMAT $guintptr_format
3008 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
3013 cat >>$outfile <<_______EOF
3018 $glib_static_compilation
3023 #define G_HAVE_INLINE 1
3024 #else /* !__cplusplus */
3026 #endif /* !__cplusplus */
3029 #define G_CAN_INLINE 1
3032 if test x$g_can_inline = xyes ; then
3033 cat >>$outfile <<_______EOF
3034 #else /* !__cplusplus */
3035 #define G_CAN_INLINE 1
3039 cat >>$outfile <<_______EOF
3044 if test x$g_have_iso_c_varargs = xyes ; then
3045 cat >>$outfile <<_______EOF
3047 # define G_HAVE_ISO_VARARGS 1
3051 if test x$g_have_iso_cxx_varargs = xyes ; then
3052 cat >>$outfile <<_______EOF
3054 # define G_HAVE_ISO_VARARGS 1
3058 if test x$g_have_gnuc_varargs = xyes ; then
3059 cat >>$outfile <<_______EOF
3061 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
3062 * is passed ISO vararg support is turned off, and there is no work
3063 * around to turn it on, so we unconditionally turn it off.
3065 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
3066 # undef G_HAVE_ISO_VARARGS
3069 #define G_HAVE_GNUC_VARARGS 1
3073 case x$g_stack_grows in
3074 xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
3075 *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
3080 if test x$g_have_eilseq = xno; then
3081 cat >>$outfile <<_______EOF
3083 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
3084 * The correspondence between this and the corresponding definition
3085 * in libiconv is essential.
3087 # define EILSEQ ENOENT
3093 if test x$g_have_gnuc_visibility = xyes; then
3094 cat >>$outfile <<_______EOF
3095 #define G_HAVE_GNUC_VISIBILITY 1
3098 cat >>$outfile <<_______EOF
3099 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
3100 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
3101 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
3102 #define G_GNUC_INTERNAL __hidden
3103 #elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
3104 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
3106 #define G_GNUC_INTERNAL
3111 cat >>$outfile <<_______EOF
3112 #define G_THREADS_ENABLED
3113 #define G_THREADS_IMPL_$g_threads_impl_def
3116 if test x"$g_memory_barrier_needed" != xno; then
3118 echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
3120 if test x"$g_atomic_lock_free" = xyes; then
3122 echo "#define G_ATOMIC_LOCK_FREE" >>$outfile
3125 g_bit_sizes="16 32 64"
3126 for bits in $g_bit_sizes; do
3127 cat >>$outfile <<_______EOF
3128 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
3129 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
3130 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
3131 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
3135 cat >>$outfile <<_______EOF
3136 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
3137 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
3138 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
3139 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
3140 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
3141 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
3142 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
3143 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
3144 #define GSIZE_TO_LE(val) ((gsize) GUINT${gsizebits}_TO_LE (val))
3145 #define GSSIZE_TO_LE(val) ((gssize) GINT${gsizebits}_TO_LE (val))
3146 #define GSIZE_TO_BE(val) ((gsize) GUINT${gsizebits}_TO_BE (val))
3147 #define GSSIZE_TO_BE(val) ((gssize) GINT${gsizebits}_TO_BE (val))
3148 #define G_BYTE_ORDER $g_byte_order
3150 #define GLIB_SYSDEF_POLLIN =$g_pollin
3151 #define GLIB_SYSDEF_POLLOUT =$g_pollout
3152 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
3153 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
3154 #define GLIB_SYSDEF_POLLERR =$g_pollerr
3155 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
3157 #define G_MODULE_SUFFIX "$g_module_suffix"
3159 /* A GPid is an abstraction for a process "handle". It is *not* an
3160 * abstraction for a process identifier in general. GPid is used in
3161 * GLib only for descendant processes spawned with the g_spawn*
3162 * functions. On POSIX there is no "process handle" concept as such,
3163 * but on Windows a GPid is a handle to a process, a kind of pointer,
3164 * not a process identifier.
3166 typedef $g_pid_type GPid;
3168 #define GLIB_SYSDEF_AF_UNIX $g_af_unix
3169 #define GLIB_SYSDEF_AF_INET $g_af_inet
3170 #define GLIB_SYSDEF_AF_INET6 $g_af_inet6
3172 #define GLIB_SYSDEF_MSG_OOB $g_msg_oob
3173 #define GLIB_SYSDEF_MSG_PEEK $g_msg_peek
3174 #define GLIB_SYSDEF_MSG_DONTROUTE $g_msg_dontroute
3178 #endif /* GLIBCONFIG_H */
3182 if cmp -s $outfile glib/glibconfig.h; then
3183 AC_MSG_NOTICE([glib/glibconfig.h is unchanged])
3186 mv $outfile glib/glibconfig.h
3190 # Note that if two cases are the same, case goes with the first one.
3191 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
3192 # on variable expansion in case labels. Look at the generated config.status
3195 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
3196 glib_header_alloca_h="$ac_cv_working_alloca_h"
3198 glib_header_alloca_h="$ac_cv_header_alloca_h"
3202 x$ac_cv_header_float_h)
3204 glib_mf=FLT_MIN glib_Mf=FLT_MAX
3205 glib_md=DBL_MIN glib_Md=DBL_MAX
3207 x$ac_cv_header_values_h)
3209 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
3210 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
3215 x$ac_cv_header_limits_h)
3217 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
3218 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
3219 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
3221 x$ac_cv_header_values_h)
3223 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
3224 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
3225 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
3229 if test x$ac_cv_header_sys_poll_h = xyes ; then
3233 if test x$enable_included_printf = xyes ; then
3234 glib_included_printf=yes
3238 $ac_cv_sizeof_short)
3240 gint16_modifier='"h"'
3241 gint16_format='"hi"'
3242 guint16_format='"hu"'
3246 gint16_modifier='""'
3248 guint16_format='"u"'
3252 $ac_cv_sizeof_short)
3254 gint32_modifier='"h"'
3255 gint32_format='"hi"'
3256 guint32_format='"hu"'
3260 gint32_modifier='""'
3262 guint32_format='"u"'
3266 gint32_modifier='"l"'
3267 gint32_format='"li"'
3268 guint32_format='"lu"'
3274 gint64_modifier='""'
3276 guint64_format='"u"'
3278 gint64_constant='(val)'
3279 guint64_constant='(val)'
3283 gint64_modifier='"l"'
3284 gint64_format='"li"'
3285 guint64_format='"lu"'
3287 gint64_constant='(val##L)'
3288 guint64_constant='(val##UL)'
3290 $ac_cv_sizeof_long_long)
3292 if test -n "$glib_cv_long_long_format"; then
3293 gint64_modifier='"'$glib_cv_long_long_format'"'
3294 gint64_format='"'$glib_cv_long_long_format'i"'
3295 guint64_format='"'$glib_cv_long_long_format'u"'
3297 glib_extension='G_GNUC_EXTENSION '
3298 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
3299 guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
3301 $ac_cv_sizeof___int64)
3303 if test -n "$glib_cv_long_long_format"; then
3304 gint64_modifier='"'$glib_cv_long_long_format'"'
3305 gint64_format='"'$glib_cv_long_long_format'i"'
3306 guint64_format='"'$glib_cv_long_long_format'u"'
3309 gint64_constant='(val##i64)'
3310 guint64_constant='(val##ui64)'
3313 glib_size_t=$ac_cv_sizeof_size_t
3314 glib_size_type_define="$glib_size_type"
3315 glib_void_p=$ac_cv_sizeof_void_p
3316 glib_long=$ac_cv_sizeof_long
3318 case "$glib_size_type" in
3320 gsize_modifier='"h"'
3322 gssize_format='"hi"'
3323 glib_msize_type='SHRT'
3329 glib_msize_type='INT'
3332 gsize_modifier='"l"'
3334 gssize_format='"li"'
3335 glib_msize_type='LONG'
3337 "long long"|__int64)
3338 gsize_modifier='"I64"'
3339 gsize_format='"I64u"'
3340 gssize_format='"I64i"'
3341 glib_msize_type='INT64'
3345 gintbits=`expr $ac_cv_sizeof_int \* 8`
3346 glongbits=`expr $ac_cv_sizeof_long \* 8`
3347 gsizebits=`expr $ac_cv_sizeof_size_t \* 8`
3349 case $ac_cv_sizeof_void_p in
3351 glib_intptr_type_define=int
3352 gintptr_modifier='""'
3353 gintptr_format='"i"'
3354 guintptr_format='"u"'
3359 glib_intptr_type_define=long
3360 gintptr_modifier='"l"'
3361 gintptr_format='"li"'
3362 guintptr_format='"lu"'
3363 glib_gpi_cast='(glong)'
3364 glib_gpui_cast='(gulong)'
3366 $ac_cv_sizeof_long_long)
3367 glib_intptr_type_define='long long'
3368 gintptr_modifier='"I64"'
3369 gintptr_format='"I64i"'
3370 guintptr_format='"I64u"'
3371 glib_gpi_cast='(gint64)'
3372 glib_gpui_cast='(guint64)'
3374 $ac_cv_sizeof___int64)
3375 glib_intptr_type_define=__int64
3376 gintptr_modifier='"I64"'
3377 gintptr_format='"I64i"'
3378 guintptr_format='"I64u"'
3379 glib_gpi_cast='(gint64)'
3380 glib_gpui_cast='(guint64)'
3383 glib_unknown_void_p=yes
3389 x$ac_cv_func_atexit)
3391 #ifdef NeXT /* @#%@! NeXTStep */
3392 # define g_ATEXIT(proc) (!atexit (proc))
3394 # define g_ATEXIT(proc) (atexit (proc))
3397 x$ac_cv_func_on_exit)
3399 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
3404 x$ac_cv_func_memmove)
3406 #define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END'
3408 x$glib_cv_working_bcopy)
3410 /* memmove isn't available, but bcopy can copy overlapping memory regions */
3411 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
3415 /* memmove isn't found and bcopy can't copy overlapping memory regions,
3416 * so we have to roll our own copy routine. */
3417 void g_memmove (void* dest, const void * src, unsigned long len);"
3422 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
3423 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
3424 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
3428 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
3429 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
3433 if test x$glib_cv_va_val_copy = xno; then
3434 glib_vacopy="\$glib_vacopy
3435 #define G_VA_COPY_AS_ARRAY 1"
3438 if test x$glib_cv_hasinline = xyes; then
3439 glib_inline='#define G_HAVE_INLINE 1'
3441 if test x$glib_cv_has__inline = xyes; then
3442 glib_inline="\$glib_inline
3443 #define G_HAVE___INLINE 1"
3445 if test x$glib_cv_has__inline__ = xyes; then
3446 glib_inline="\$glib_inline
3447 #define G_HAVE___INLINE__ 1"
3450 g_have_gnuc_varargs=$g_have_gnuc_varargs
3451 g_have_iso_c_varargs=$g_have_iso_c_varargs
3452 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
3454 g_can_inline=$g_can_inline
3455 g_have_gnuc_visibility=$g_have_gnuc_visibility
3456 g_have_sunstudio_visibility=$g_have_sunstudio_visibility
3458 if test x$ac_cv_c_bigendian = xyes; then
3459 g_byte_order=G_BIG_ENDIAN
3463 g_byte_order=G_LITTLE_ENDIAN
3468 g_pollin=$glib_cv_value_POLLIN
3469 g_pollout=$glib_cv_value_POLLOUT
3470 g_pollpri=$glib_cv_value_POLLPRI
3471 g_pollhup=$glib_cv_value_POLLHUP
3472 g_pollerr=$glib_cv_value_POLLERR
3473 g_pollnval=$glib_cv_value_POLLNVAL
3475 g_af_unix=$glib_cv_value_AF_UNIX
3476 g_af_inet=$glib_cv_value_AF_INET
3477 g_af_inet6=$glib_cv_value_AF_INET6
3479 g_msg_peek=$glib_cv_value_MSG_PEEK
3480 g_msg_oob=$glib_cv_value_MSG_OOB
3481 g_msg_dontroute=$glib_cv_value_MSG_DONTROUTE
3483 g_stack_grows=$glib_cv_stack_grows
3485 g_have_eilseq=$have_eilseq
3487 g_threads_impl_def=$g_threads_impl
3489 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
3491 g_atomic_lock_free="$glib_cv_g_atomic_lock_free"
3492 g_memory_barrier_needed="$glib_memory_barrier_needed"
3493 g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations"
3495 g_module_suffix="$glib_gmodule_suffix"
3497 g_pid_type="$glib_pid_type"
3500 glib_os="#define G_OS_BEOS"
3503 glib_os="#define G_OS_UNIX
3504 #define G_PLATFORM_WIN32
3505 #define G_WITH_CYGWIN"
3508 glib_os="#define G_OS_WIN32
3509 #define G_PLATFORM_WIN32"
3512 glib_os="#define G_OS_UNIX"
3515 glib_static_compilation=""
3516 if test x$glib_win32_static_compilation = xyes; then
3517 glib_static_compilation="#define GLIB_STATIC_COMPILATION 1
3518 #define GOBJECT_STATIC_COMPILATION 1"
3522 # Check for libdbus1 - Optional - is only used in the GDBus test cases
3524 # 1.2.14 required for dbus_message_set_serial
3525 PKG_CHECK_MODULES(DBUS1,
3527 [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
3529 AC_SUBST(DBUS1_CFLAGS)
3530 AC_SUBST(DBUS1_LIBS)
3531 AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
3534 dnl Check for -Bsymbolic-functions linker flag used to avoid
3535 dnl intra-library PLT jumps, if available.
3538 AC_ARG_ENABLE(Bsymbolic,
3539 [AC_HELP_STRING([--disable-Bsymbolic],
3540 [avoid linking with -Bsymbolic])],,
3541 [SAVED_LDFLAGS="${LDFLAGS}"
3542 AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
3543 LDFLAGS=-Wl,-Bsymbolic-functions
3544 AC_TRY_LINK([], [int main (void) { return 0; }],
3546 enable_Bsymbolic=yes,
3548 enable_Bsymbolic=no)
3549 LDFLAGS="${SAVED_LDFLAGS}"])
3551 if test "x${enable_Bsymbolic}" == "xyes"; then
3552 GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions
3555 AC_SUBST(GLIB_LINK_FLAGS)
3558 # Define variables corresponding to the correct include paths to use for
3563 config_h_INCLUDES='-I$(top_builddir)'
3564 AC_SUBST(config_h_INCLUDES)
3568 # $(top_builddir)/glib: for glibconfig.h
3569 # $(top_srcdir)/glib: for glib.h
3570 # $(top_srcdir): for everything
3571 glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)'
3572 AC_SUBST(glib_INCLUDES)
3576 gthread_INCLUDES='$(glib_INCLUDES)'
3577 AC_SUBST(gthread_INCLUDES)
3581 gobject_INCLUDES='$(gthread_INCLUDES)'
3582 AC_SUBST(gobject_INCLUDES)
3586 # $(top_srcdir)/gmodule: for gmodule.h
3587 gmodule_INCLUDES='$(glib_INCLUDES) -I$(top_srcdir)/gmodule'
3588 AC_SUBST(gmodule_INCLUDES)
3592 gio_INCLUDES='$(gmodule_INCLUDES)'
3593 AC_SUBST(gio_INCLUDES)
3599 gmodule-export-2.0.pc
3600 gmodule-no-export-2.0.pc
3610 build/win32/Makefile
3611 build/win32/dirent/Makefile
3612 build/win32/vs9/Makefile
3613 build/win32/vs10/Makefile
3616 glib/libcharset/Makefile
3617 glib/gnulib/Makefile
3619 glib/update-pcre/Makefile
3622 gmodule/gmoduleconf.h
3625 gobject/glib-mkenums
3626 gobject/tests/Makefile
3629 gio/gdbus-2.0/codegen/Makefile
3630 gio/gdbus-2.0/codegen/config.py
3631 gio/xdgmime/Makefile
3632 gio/inotify/Makefile
3637 gio/tests/gdbus-object-manager-example/Makefile
3640 docs/reference/Makefile
3641 docs/reference/glib/Makefile
3642 docs/reference/glib/version.xml
3643 docs/reference/gobject/Makefile
3644 docs/reference/gobject/version.xml
3645 docs/reference/gio/Makefile
3646 docs/reference/gio/gdbus-object-manager-example/Makefile
3647 docs/reference/gio/version.xml
3649 tests/gobject/Makefile
3650 tests/refcount/Makefile
3654 AC_CONFIG_COMMANDS([chmod-scripts],
3655 [chmod 0755 glib-zip
3656 chmod 0755 glib-gettextize
3657 chmod 0755 gobject/glib-mkenums])
3659 # we want to invoke this macro solely so that the config.status script
3660 # and automake generated makefiles know about these generated files.
3661 # They are only needed to distcheck the package
3667 glib/glibconfig.h.win32
3670 gmodule/makefile.msc
3672 gobject/makefile.msc
3674 gthread/makefile.msc