1 # Process this file with autoconf to produce a configure script.
2 # require autoconf 2.54
5 dnl ***********************************
6 dnl *** include special GLib macros ***
7 dnl ***********************************
9 m4_define(glib_configure_in)
12 # The following version number definitions apply to GLib, GModule, GObject
13 # and GThread as a whole, so if changes occoured in any of them, they are all
14 # treated with the same interface and binary age.
17 # glib_micro_version += 1;
18 # glib_interface_age += 1;
19 # glib_binary_age += 1;
20 # if any functions have been added, set glib_interface_age to 0.
21 # if backwards compatibility has been broken,
22 # set glib_binary_age _and_ glib_interface_age to 0.
24 m4_define([glib_major_version], [2])
25 m4_define([glib_minor_version], [16])
26 m4_define([glib_micro_version], [1])
27 m4_define([glib_interface_age], [1])
28 m4_define([glib_binary_age],
29 [m4_eval(100 * glib_minor_version + glib_micro_version)])
30 m4_define([glib_version],
31 [glib_major_version.glib_minor_version.glib_micro_version])
33 # libtool version related macros
34 m4_define([glib_lt_release], [glib_major_version.glib_minor_version])
35 m4_define([glib_lt_current],
36 [m4_eval(100 * glib_minor_version + glib_micro_version - glib_interface_age)])
37 m4_define([glib_lt_revision], [glib_interface_age])
38 m4_define([glib_lt_age], [m4_eval(glib_binary_age - glib_interface_age)])
39 m4_define([glib_lt_current_minus_age],
40 [m4_eval(glib_lt_current - glib_lt_age)])
42 # if the minor version number is odd, then we want debugging. Otherwise
43 # we only want minimal debugging support.
44 m4_define([glib_debug_default],
45 [m4_if(m4_eval(glib_minor_version % 2), [1], [yes], [minimum])])dnl
48 AC_INIT(glib, [glib_version],
49 [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
51 AC_CONFIG_SRCDIR([glib/glib.h])
53 # Save this value here, since automake will set cflags later
54 cflags_set=${CFLAGS+set}
56 AM_INIT_AUTOMAKE([no-define])
58 # Specify a configuration file
59 AM_CONFIG_HEADER([config.h])
62 GLIB_MAJOR_VERSION=glib_major_version
63 GLIB_MINOR_VERSION=glib_minor_version
64 GLIB_MICRO_VERSION=glib_micro_version
65 GLIB_INTERFACE_AGE=glib_interface_age
66 GLIB_BINARY_AGE=glib_binary_age
67 GLIB_VERSION=glib_version
69 AC_SUBST(GLIB_MAJOR_VERSION)
70 AC_SUBST(GLIB_MINOR_VERSION)
71 AC_SUBST(GLIB_MICRO_VERSION)
72 AC_SUBST(GLIB_VERSION)
73 AC_SUBST(GLIB_INTERFACE_AGE)
74 AC_SUBST(GLIB_BINARY_AGE)
76 AC_DEFINE(GLIB_MAJOR_VERSION, [glib_major_version],
77 [Define to the GLIB major version])
78 AC_DEFINE(GLIB_MINOR_VERSION, [glib_minor_version],
79 [Define to the GLIB minor version])
80 AC_DEFINE(GLIB_MICRO_VERSION, [glib_micro_version],
81 [Define to the GLIB micro version])
82 AC_DEFINE(GLIB_INTERFACE_AGE, [glib_interface_age],
83 [Define to the GLIB interface age])
84 AC_DEFINE(GLIB_BINARY_AGE, [glib_binary_age],
85 [Define to the GLIB binary age])
88 LT_RELEASE=glib_lt_release
89 LT_CURRENT=glib_lt_current
90 LT_REVISION=glib_lt_revision
92 LT_CURRENT_MINUS_AGE=glib_lt_current_minus_age
97 AC_SUBST(LT_CURRENT_MINUS_AGE)
99 dnl Initialize maintainer mode
104 AC_MSG_CHECKING([for the BeOS])
107 glib_native_beos="yes"
110 glib_native_beos="no"
113 AC_MSG_RESULT([$glib_native_beos])
117 AC_MSG_CHECKING([for Win32])
120 glib_native_win32=yes
122 GMODULE_DEF=gmodule.def
123 GOBJECT_DEF=gobject.def
124 GTHREAD_DEF=gthread.def
125 TESTGMODULE_EXP=testgmodule.exp
126 glib_pid_type='void *'
127 # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
128 # don't seem to be quite good enough, at least not in mingw-runtime-3.14.
129 # (Sorry, I don't know exactly what is the problem, but it is related to
130 # floating point formatting and decimal point vs. comma.)
131 # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
132 # rigorous enough to notice, though.
133 # So preset the autoconf cache variables.
134 ac_cv_func_vsnprintf_c99=no
135 ac_cv_func_snprintf_c99=no
153 AC_MSG_RESULT([$glib_native_win32])
156 AC_MSG_CHECKING([for Mac OS X Carbon support])
158 #include <Carbon/Carbon.h>
159 #include <CoreServices/CoreServices.h>
160 ], glib_have_carbon=yes)
162 AC_MSG_RESULT([$glib_have_carbon])
164 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
165 AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
166 AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
167 AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
169 AC_SUBST(GMODULE_DEF)
170 AC_SUBST(GOBJECT_DEF)
171 AC_SUBST(GTHREAD_DEF)
172 AC_SUBST(TESTGMODULE_EXP)
174 if test "$glib_native_win32" = "yes"; then
175 AC_CHECK_TOOL(WINDRES, windres, no)
176 if test "$WINDRES" = no; then
177 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
179 AC_CHECK_TOOL(NM, nm, no)
180 if test "$NM" = no; then
181 AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
183 AC_CHECK_TOOL(RANLIB, ranlib, :)
184 AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
186 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
188 if test "$glib_native_win32" != yes; then
189 # libtool option to control which symbols are exported
190 # right now, symbols starting with _ are not exported
191 LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
193 # We currently use .def files on Windows
194 LIBTOOL_EXPORT_OPTIONS=
196 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
198 if test "x$glib_have_carbon" = "xyes"; then
199 AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
200 LDFLAGS="$LDFLAGS -framework Carbon"
204 dnl declare --enable-* args and collect ac_help strings
206 AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
207 [turn on debugging @<:@default=glib_debug_default@:>@]),,
208 enable_debug=glib_debug_default)
210 AC_ARG_ENABLE(gc_friendly,
211 [AC_HELP_STRING([--enable-gc-friendly],
212 [turn on garbage collector friendliness [default=no]])],,
213 [enable_gc_friendly=no])
214 AC_ARG_ENABLE(mem_pools,
215 [AC_HELP_STRING([--disable-mem-pools],
216 [disable all glib memory pools])],,
217 [disable_mem_pools=no])
218 AC_ARG_ENABLE(threads,
219 [AC_HELP_STRING([--enable-threads],
220 [turn on basic thread support [default=yes]
221 ([=no] will override --with-threads)])],,
222 [enable_threads=yes])
223 AC_ARG_ENABLE(rebuilds,
224 [AC_HELP_STRING([--disable-rebuilds],
225 [disable all source autogeneration rules])],,
226 [enable_rebuilds=yes])
227 AC_ARG_ENABLE(visibility,
228 [AC_HELP_STRING([--disable-visibility],
229 [don't use ELF visibility attributes])],,
230 [enable_visibility=yes])
232 if test "x$enable_threads" != "xyes"; then
236 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
237 if test "x$enable_gc_friendly" = "xyes"; then
238 AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
244 AC_MSG_CHECKING([whether to disable memory pools])
245 if test "x$disable_mem_pools" = "xno"; then
248 AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
249 AC_SUBST(DISABLE_MEM_POOLS)
253 if test "$glib_native_win32" = "yes"; then
254 if test x$enable_static = xyes -o x$enable_static = x; then
255 AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
258 if test x$enable_shared = xno; then
259 AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
264 dnl Checks for programs.
267 dnl Check for a working C++ compiler, but do not bail out, if none is found.
268 AC_CHECK_PROGS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
271 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
272 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
284 AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no])
285 if test x$PKG_CONFIG = xno ; then
286 AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
289 if $PKG_CONFIG --atleast-pkgconfig-version 0.16 ; then
292 AC_MSG_ERROR([*** pkg-config too old; version 0.16 or better required.])
295 if test "x$enable_debug" = "xyes"; then
296 if test x$cflags_set != xset ; then
298 *[[\ \ ]]-g[[\ \ ]]*) ;;
299 *) CFLAGS="$CFLAGS -g" ;;
303 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
305 GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
307 if test "x$enable_debug" = "xno"; then
308 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
312 if test "x$enable_visibility" = "xno"; then
313 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DDISABLE_VISIBILITY"
316 # Ensure MSVC-compatible struct packing convention is used when
317 # compiling for Win32 with gcc.
318 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
319 # gcc2 uses "-fnative-struct".
320 if test x"$glib_native_win32" = xyes; then
321 if test x"$GCC" = xyes; then
323 AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
324 if test -z "$ac_cv_prog_CC"; then
327 our_gcc="$ac_cv_prog_CC"
329 case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
331 if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
332 msnative_struct='-fnative-struct'
336 if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
337 msnative_struct='-mms-bitfields'
341 if test x"$msnative_struct" = x ; then
342 AC_MSG_RESULT([no way])
343 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
345 CFLAGS="$CFLAGS $msnative_struct"
346 AC_MSG_RESULT([${msnative_struct}])
353 # define a MAINT-like variable REBUILD which is set if Perl
354 # and awk are found, so autogenerated sources can be rebuilt
356 AC_CHECK_PROGS(PERL, [perl5 perl])
357 # We would like indent, but don't require it.
358 AC_CHECK_PROG(INDENT, indent, indent)
360 if test "x$enable_rebuilds" = "xyes" && \
362 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
363 test -n "$AWK" ; then
368 # Need full path to Perl for glib-mkenums
370 if test "x$PERL" != x ; then
371 AC_PATH_PROG(PERL_PATH, [$PERL])
373 if test "x$PERL_PATH" = x ; then
374 PERL_PATH="/usr/bin/env perl"
378 # Need suitable python path for greport
379 AM_PATH_PYTHON(2.4,,PYTHON="/usr/bin/env python2.4")
382 dnl ***********************
383 dnl *** Tests for iconv ***
384 dnl ***********************
386 dnl We do this before the gettext checks, to avoid distortion
388 dnl On Windows we use a native implementation
390 if test x"$glib_native_win32" = xyes; then
393 AC_ARG_WITH(libiconv,
394 [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
395 [use the libiconv library])],,
396 [with_libiconv=maybe])
399 case $with_libiconv in
401 # Check in the C library first
402 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
403 # Check if we have GNU libiconv
404 if test $found_iconv = "no"; then
405 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
407 # Check if we have a iconv in -liconv, possibly from vendor
408 if test $found_iconv = "no"; then
409 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
413 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
416 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
419 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
423 if test "x$found_iconv" = "xno" ; then
424 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
429 AC_ARG_ENABLE(iconv-cache,
430 [AC_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
431 [cache iconv descriptors [default=auto]])],,
432 [enable_iconv_cache=auto])
434 AC_MSG_CHECKING([Whether to cache iconv descriptors])
435 case $enable_iconv_cache in
437 if test $ac_cv_gnu_library_2_1 = yes; then
438 enable_iconv_cache=no
440 enable_iconv_cache=yes
445 *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
449 if test $enable_iconv_cache = yes; then
450 AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
453 AC_MSG_RESULT($enable_iconv_cache)
460 ALL_LINGUAS="am ar as az be be@latin bg bn bn_IN bs ca cs cy da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hr hu hy id is it ja ka kn ko ku lt lv mg mk ml mn mr ms nb ne nl nn oc or pa pl pt pt_BR ro ru rw si sk sl sq sr sr@Latn sr@ije sv ta te th tl tr tt uk vi wa xh yi zh_CN zh_HK zh_TW"
463 if test "$gt_cv_have_gettext" != "yes" ; then
465 *** You must have either have gettext support in your C library, or use the
466 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
470 LIBS="$INTLLIBS $LIBS"
472 GETTEXT_PACKAGE=glib20
473 AC_SUBST(GETTEXT_PACKAGE)
474 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"],
475 [Define the gettext package to be used])
477 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
480 dnl Now we are done with gettext checks, figure out ICONV_LIBS
483 if test x"$glib_native_win32" != xyes; then
484 if test x$with_libiconv != xno ; then
485 case " $INTLLIBS " in
486 *[[\ \ ]]-liconv[[\ \ ]]*) ;;
487 *) ICONV_LIBS="-liconv" ;;
493 case $with_libiconv in
495 AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
498 AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
502 dnl Initialize libtool
507 if test "x$GCC" = "xyes"; then
509 *[[\ \ ]]-Wall[[\ \ ]]*) ;;
510 *) CFLAGS="$CFLAGS -Wall" ;;
515 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
517 if test $cross_compiling != yes ; then
518 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
521 AC_TRY_RUN([#include <math.h>
522 int main (void) { return (log(1) != log(1.)); }],
523 AC_MSG_RESULT(none needed),
524 glib_save_CFLAGS=$CFLAGS
525 CFLAGS="$CFLAGS -std1"
526 AC_TRY_RUN([#include <math.h>
527 int main (void) { return (log(1) != log(1.)); }],
528 AC_MSG_RESULT(-std1),
530 CFLAGS=$glib_save_CFLAGS
532 [No ANSI prototypes found in library. (-std1 didn't work.)])
538 dnl NeXTStep cc seems to need this
539 AC_MSG_CHECKING([for extra flags for POSIX compliance])
540 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
541 AC_MSG_RESULT(none needed),
542 glib_save_CFLAGS=$CFLAGS
543 CFLAGS="$CFLAGS -posix"
544 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
545 AC_MSG_RESULT(-posix),
547 CFLAGS=$glib_save_CFLAGS
548 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
550 # Checks for header files.
553 # Checks for library functions.
557 AC_CHECK_FUNCS(posix_memalign)
558 AC_CHECK_FUNCS(memalign)
559 AC_CHECK_FUNCS(valloc)
561 AC_CHECK_FUNCS(atexit on_exit)
563 AC_CHECK_FUNCS(timegm gmtime_r)
565 AC_CHECK_SIZEOF(char)
566 AC_CHECK_SIZEOF(short)
567 AC_CHECK_SIZEOF(long)
569 AC_CHECK_SIZEOF(void *)
570 AC_CHECK_SIZEOF(long long)
571 AC_CHECK_SIZEOF(__int64)
573 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
577 *** GLib requires a 64 bit type. You might want to consider
578 *** using the GNU C compiler.
582 if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
583 # long long is a 64 bit integer.
584 AC_MSG_CHECKING(for format to printf and scanf a guint64)
585 AC_CACHE_VAL(glib_cv_long_long_format,[
586 for format in ll q I64; do
587 AC_TRY_RUN([#include <stdio.h>
590 long long b, a = -0x3AFAFAFAFAFAFAFALL;
592 sprintf (buffer, "%${format}u", a);
593 sscanf (buffer, "%${format}u", &b);
597 [glib_cv_long_long_format=${format}
601 if test -n "$glib_cv_long_long_format"; then
602 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
603 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
604 if test x"$glib_cv_long_long_format" = xI64; then
605 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
610 elif test x$ac_cv_sizeof___int64 = x8; then
611 # __int64 is a 64 bit integer.
612 AC_MSG_CHECKING(for format to printf and scanf a guint64)
613 # We know this is MSVCRT.DLL, and what the formats are
614 glib_cv_long_long_format=I64
615 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
616 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
617 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
620 dnl long doubles were not used, and a portability problem
624 dnl ok, here we try to check whether the systems prototypes for
625 dnl malloc and friends actually match the prototypes provided
626 dnl by gmem.h (keep in sync). i currently only know how to check
627 dnl this reliably with gcc (-Werror), improvements for other
628 dnl compilers are apprechiated.
629 SANE_MALLOC_PROTOS=no
630 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
631 glib_save_CFLAGS=$CFLAGS
632 if test "x$GCC" = "xyes"; then
633 CFLAGS="$CFLAGS -Werror"
634 AC_TRY_COMPILE([#include <stdlib.h>], [
635 void* (*my_calloc_p) (size_t, size_t) = calloc;
636 void* (*my_malloc_p) (size_t) = malloc;
637 void (*my_free_p) (void*) = free;
638 void* (*my_realloc_p) (void*, size_t) = realloc;
644 AC_DEFINE(SANE_MALLOC_PROTOS, 1,
645 [Define if you have correct malloc prototypes])
646 SANE_MALLOC_PROTOS=yes)
648 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
649 CFLAGS=$glib_save_CFLAGS
652 dnl check in which direction the stack grows
654 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
656 volatile int *a = 0, *b = 0;
658 int main () { volatile int y = 7; a = &y; foo (); return b > a; }
659 void foo (void) { volatile int x = 5; b = &x; }
661 glib_cv_stack_grows=no
663 glib_cv_stack_grows=yes
667 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
668 dnl truely know which ones of `inline', `__inline' and `__inline__' are
669 dnl actually supported.
670 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
672 __inline int foo () { return 0; }
673 int main () { return foo (); }
675 glib_cv_has__inline=yes
677 glib_cv_has__inline=no
680 case x$glib_cv_has__inline in
681 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
683 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
685 __inline__ int foo () { return 0; }
686 int main () { return foo (); }
688 glib_cv_has__inline__=yes
690 glib_cv_has__inline__=no
693 case x$glib_cv_has__inline__ in
694 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
696 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
699 inline int foo () { return 0; }
700 int main () { return foo (); }
702 glib_cv_hasinline=yes
707 case x$glib_cv_hasinline in
708 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
711 # if we can use inline functions in headers
712 AC_MSG_CHECKING(if inline functions in headers work)
714 #if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
716 # define inline __inline__
717 #elif !defined (G_HAVE_INLINE)
719 # if defined (G_HAVE___INLINE__)
720 # define inline __inline__
721 # elif defined (G_HAVE___INLINE)
722 # define inline __inline
726 int glib_test_func2 (int);
729 glib_test_func1 (void) {
730 return glib_test_func2 (1);
736 }],[g_can_inline=yes],[g_can_inline=no])
737 AC_MSG_RESULT($g_can_inline)
739 dnl *** check for working do while(0) macros ***
740 AC_CACHE_CHECK([for working do while(0) macros], g_support_dowhile_macros, [
742 #define STMT_START do
743 #define STMT_END while(0)
744 #define STMT_TEST STMT_START { i = 0; } STMT_END
745 int main(void) { int i = 1; STMT_TEST; return i; }],
746 [g_support_dowhile_macros=yes],
747 [g_support_dowhile_macros=no],
748 [g_support_dowhile_macros=yes])
750 if test x$g_support_dowhile_macros = xyes; then
751 AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
754 # check for flavours of varargs macros
755 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
757 int a(int p1, int p2, int p3);
758 #define call_a(...) a(1,__VA_ARGS__)
760 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
761 AC_MSG_RESULT($g_have_iso_c_varargs)
763 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
764 if test "$CXX" = ""; then
766 g_have_iso_cxx_varargs=no
770 int a(int p1, int p2, int p3);
771 #define call_a(...) a(1,__VA_ARGS__)
773 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
776 AC_MSG_RESULT($g_have_iso_cxx_varargs)
778 AC_MSG_CHECKING(for GNUC varargs macros)
780 int a(int p1, int p2, int p3);
781 #define call_a(params...) a(1,params)
783 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
784 AC_MSG_RESULT($g_have_gnuc_varargs)
786 # check for GNUC visibility support
787 AC_MSG_CHECKING(for GNUC visibility attribute)
788 GLIB_CHECK_COMPILE_WARNINGS([
790 __attribute__ ((visibility ("hidden")))
795 __attribute__ ((visibility ("internal")))
800 __attribute__ ((visibility ("protected")))
805 __attribute__ ((visibility ("default")))
809 int main (int argc, char **argv)
817 ],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
818 AC_MSG_RESULT($g_have_gnuc_visibility)
819 AM_CONDITIONAL(HAVE_GNUC_VISIBILITY, [test x$g_have_gnuc_visibility = xyes])
821 AC_MSG_CHECKING([whether using Sun Studio C compiler])
822 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550)
824 # include "error: this is not Sun Studio."
826 ]], [[]])], [ g_have_sunstudio_visibility=yes ], [ g_have_sunstudio_visibility=no ])
827 AC_MSG_RESULT($g_have_sunstudio_visibility)
828 AM_CONDITIONAL(HAVE_SUNSTUDIO_VISIBILITY, [test x$g_have_sunstudio_visibility = xyes])
830 # check for bytesex stuff
833 # check for header files
834 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h grp.h sys/param.h sys/poll.h sys/resource.h])
835 AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
836 AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h sched.h malloc.h])
837 AC_CHECK_HEADERS([sys/vfs.h sys/mount.h sys/vmount.h sys/statfs.h sys/statvfs.h])
838 AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h sys/sysctl.h fstab.h])
840 # check for structure fields
841 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])
842 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename])
844 # Checks for libcharset
847 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
848 AC_CHECK_FUNCS(setlocale)
850 # check additional type sizes
851 AC_CHECK_SIZEOF(size_t)
853 dnl Try to figure out whether gsize, gssize should be long or int
854 AC_MSG_CHECKING([for the appropriate definition for size_t])
856 case $ac_cv_sizeof_size_t in
866 *) AC_MSG_ERROR([No type matching size_t in size])
870 dnl If int/long are the same size, we see which one produces
871 dnl warnings when used in the location as size_t. (This matters
874 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
875 test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
876 GLIB_CHECK_COMPILE_WARNINGS([
877 #if defined(_AIX) && !defined(__GNUC__)
878 #pragma options langlvl=stdc89
884 unsigned int *size_int = &s;
885 return (int)*size_int;
887 ],glib_size_type=int,
888 [GLIB_CHECK_COMPILE_WARNINGS([
889 #if defined(_AIX) && !defined(__GNUC__)
890 #pragma options langlvl=stdc89
896 unsigned long *size_long = &s;
897 return (int)*size_long;
899 ],glib_size_type=long)])
902 AC_MSG_RESULT(unsigned $glib_size_type)
904 # Check for some functions
905 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk)
906 AC_CHECK_FUNCS(chown lchown fchmod fchown link statvfs statfs utimes getgrgid getpwuid)
907 AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getmntinfo)
908 # Check for high-resolution sleep functions
909 AC_CHECK_FUNCS(nanosleep nsleep)
911 AC_CHECK_HEADERS(crt_externs.h)
912 AC_CHECK_FUNCS(_NSGetEnviron)
914 AC_FUNC_VSNPRINTF_C99
915 AC_FUNC_PRINTF_UNIX98
918 dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
920 if test "$ac_cv_func_statfs" = yes ; then
921 AC_MSG_CHECKING([number of arguments to statfs()])
922 AC_TRY_COMPILE([#include <unistd.h>
923 #ifdef HAVE_SYS_PARAM_H
924 #include <sys/param.h>
926 #ifdef HAVE_SYS_VFS_H
929 #ifdef HAVE_SYS_MOUNT_H
930 #include <sys/mount.h>
932 #ifdef HAVE_SYS_STATFS_H
933 #include <sys/statfs.h>
934 #endif], [struct statfs st;
935 statfs(NULL, &st);],[
937 AC_DEFINE(STATFS_ARGS, 2, [Number of arguments to statfs()])],[
938 AC_TRY_COMPILE([#include <unistd.h>
939 #ifdef HAVE_SYS_PARAM_H
940 #include <sys/param.h>
942 #ifdef HAVE_SYS_VFS_H
945 #ifdef HAVE_SYS_MOUNT_H
946 #include <sys/mount.h>
948 #ifdef HAVE_SYS_STATFS_H
949 #include <sys/statfs.h>
950 #endif], [struct statfs st;
951 statfs(NULL, &st, sizeof (st), 0);],[
953 AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
954 AC_MSG_RESULT(unknown)
955 AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
959 # Check whether to use an included printf
962 AC_ARG_ENABLE(included-printf,
963 [AC_HELP_STRING([--enable-included-printf],
964 [use included printf [default=auto]])],
965 enable_included_printf="$enableval")
967 need_included_printf=no
968 if test "x$enable_included_printf" = "xyes" ; then
969 need_included_printf=yes
971 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
972 need_included_printf=yes
974 if test "$ac_cv_func_printf_unix98" != "yes" ; then
975 need_included_printf=yes
977 if test "x$ac_cv_sizeof_long_long" = "x8" &&
978 test -z "$glib_cv_long_long_format" ; then
979 need_included_printf=yes
982 if test "x$enable_included_printf" = "xno" &&
983 test "x$need_included_printf" = "xyes" ; then
985 *** Your C library's printf doesn't appear to have the features that
986 *** GLib needs, but you specified --enable-included-printf=no.])
989 enable_included_printf=$need_included_printf
991 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
992 if test "$enable_included_printf" != "yes" ; then
993 AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
995 if test -z "$glib_cv_long_long_format" ; then
996 glib_cv_long_long_format="ll"
998 AC_DEFINE(HAVE_VASPRINTF,1)
1001 # Checks needed for gnulib vasnprintf
1003 jm_AC_TYPE_LONG_LONG
1008 AC_CHECK_TYPES(ptrdiff_t)
1010 AC_CHECK_FUNCS([snprintf wcslen])
1011 AC_FUNC_SNPRINTF_C99
1013 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
1014 # The check is borrowed from the PERL Configure script.
1015 if test "$ac_cv_func_memmove" != "yes"; then
1016 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
1017 glib_cv_working_bcopy,[AC_TRY_RUN([
1019 char buf[128], abc[128], *b;
1020 int len, off, align;
1021 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
1022 for (align = 7; align >= 0; align--) {
1023 for (len = 36; len; len--) {
1024 b = buf+align; bcopy(abc, b, len);
1025 for (off = 1; off <= len; off++) {
1026 bcopy(b, b+off, len); bcopy(b+off, b, len);
1027 if (bcmp(b, abc, len)) return(1);
1032 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
1034 GLIB_ASSERT_SET(glib_cv_working_bcopy)
1035 if test "$glib_cv_working_bcopy" = "yes"; then
1036 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
1040 # Check for sys_errlist
1041 AC_MSG_CHECKING(for sys_errlist)
1043 extern char *sys_errlist[];
1044 extern int sys_nerr;
1045 sys_errlist[sys_nerr-1][0] = 0;
1046 ], glib_ok=yes, glib_ok=no)
1047 AC_MSG_RESULT($glib_ok)
1048 if test "$glib_ok" = "no"; then
1049 AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
1052 # Check for sys_siglist
1053 AC_MSG_CHECKING(for sys_siglist)
1055 extern char *sys_siglist[];
1056 exit (sys_siglist[0]);
1057 ], glib_ok=yes, glib_ok=no)
1058 AC_MSG_RESULT($glib_ok)
1059 if test "$glib_ok" = "no"; then
1060 AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
1063 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
1064 AC_MSG_CHECKING(for sys_siglist declaration)
1065 AC_TRY_COMPILE([#include <signal.h>], [
1066 strlen (sys_siglist[0]);
1067 ], glib_ok=yes, glib_ok=no)
1068 AC_MSG_RESULT($glib_ok)
1069 if test "$glib_ok" = "no"; then
1070 AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
1073 # Check if <sys/select.h> needs to be included for fd_set
1074 AC_MSG_CHECKING([for fd_set])
1075 AC_TRY_COMPILE([#include <sys/types.h>],
1076 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
1077 if test "$gtk_ok" = "yes"; then
1078 AC_MSG_RESULT([yes, found in sys/types.h])
1080 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
1081 if test "$gtk_ok" = "yes"; then
1082 # *** FIXME: give it a different name
1083 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
1084 AC_MSG_RESULT([yes, found in sys/select.h])
1086 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
1091 dnl *** check for sane realloc() ***
1092 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
1093 AC_TRY_RUN([#include <stdlib.h>
1095 return realloc (0, sizeof (int)) == 0;
1097 [glib_cv_sane_realloc=yes],
1098 [glib_cv_sane_realloc=no],
1099 [glib_cv_sane_realloc=yes])
1101 if test x$glib_cv_sane_realloc = xyes; then
1102 AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
1105 dnl Check for nl_langinfo and CODESET
1106 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
1107 AC_TRY_COMPILE([#include <langinfo.h>],
1108 [char *codeset = nl_langinfo (CODESET);],
1109 [glib_cv_langinfo_codeset=yes],
1110 [glib_cv_langinfo_codeset=no])])
1111 if test x$glib_cv_langinfo_codeset = xyes; then
1112 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
1115 dnl ****************************************
1116 dnl *** posix_memalign ***
1117 dnl ****************************************
1118 AC_MSG_CHECKING(for a compliant posix_memalign() implementation)
1119 AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
1120 glib_cv_compliant_posix_memalign=0
1121 if test "$ac_cv_func_posix_memalign" = "yes" ; then
1123 #define _XOPEN_SOURCE 600
1124 #include <stdlib.h> /* posix_memalign() should be defined here */
1125 /* some systems break if #include <malloc.h> used */
1126 static void test_memalign (size_t boundary, size_t size) {
1128 if (posix_memalign (&mem, boundary, size) != 0 || !mem)
1134 test_memalign ( 128, 128 - 2 * sizeof (void*));
1135 test_memalign ( 256, 256 - 2 * sizeof (void*));
1136 test_memalign ( 512, 512 - 2 * sizeof (void*));
1137 test_memalign ( 1024, 1024 - 2 * sizeof (void*));
1138 test_memalign ( 2048, 2048 - 2 * sizeof (void*));
1139 test_memalign ( 4096, 4096 - 2 * sizeof (void*));
1140 test_memalign ( 8192, 8192 - 2 * sizeof (void*));
1141 test_memalign (16384, 16384 - 2 * sizeof (void*));
1142 test_memalign (32768, 32768 - 2 * sizeof (void*));
1143 exit (0); /* success */
1146 [glib_cv_compliant_posix_memalign=1], [], [:])
1150 if test "$glib_cv_compliant_posix_memalign" = "1"; then
1152 AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
1158 dnl ****************************************
1159 dnl *** strlcpy/strlcat ***
1160 dnl ****************************************
1162 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
1163 AC_TRY_RUN([#include <stdlib.h>
1167 (void) strlcpy (p, "hi", 10);
1168 if (strlcat (p, "bye", 0) != 3)
1171 }], glib_cv_have_strlcpy=yes,
1172 glib_cv_have_strlcpy=no,
1173 glib_cv_have_strlcpy=no)])
1174 if test "$glib_cv_have_strlcpy" = "yes"; then
1175 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
1179 dnl **********************
1180 dnl *** va_copy checks ***
1181 dnl **********************
1182 dnl we currently check for all three va_copy possibilities, so we get
1183 dnl all results in config.log for bug reports.
1184 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
1185 AC_LINK_IFELSE([#include <stdarg.h>
1187 void f (int i, ...) {
1188 va_list args1, args2;
1189 va_start (args1, i);
1190 va_copy (args2, args1);
1191 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1193 va_end (args1); va_end (args2);
1199 [glib_cv_va_copy=yes],
1200 [glib_cv_va_copy=no])
1202 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
1203 AC_LINK_IFELSE([#include <stdarg.h>
1205 void f (int i, ...) {
1206 va_list args1, args2;
1207 va_start (args1, i);
1208 __va_copy (args2, args1);
1209 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1211 va_end (args1); va_end (args2);
1217 [glib_cv___va_copy=yes],
1218 [glib_cv___va_copy=no])
1221 if test "x$glib_cv_va_copy" = "xyes"; then
1222 g_va_copy_func=va_copy
1223 else if test "x$glib_cv___va_copy" = "xyes"; then
1224 g_va_copy_func=__va_copy
1228 if test -n "$g_va_copy_func"; then
1229 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
1232 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
1233 AC_TRY_RUN([#include <stdarg.h>
1235 void f (int i, ...) {
1236 va_list args1, args2;
1237 va_start (args1, i);
1239 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1241 va_end (args1); va_end (args2);
1247 [glib_cv_va_val_copy=yes],
1248 [glib_cv_va_val_copy=no],
1249 [glib_cv_va_val_copy=yes])
1252 if test "x$glib_cv_va_val_copy" = "xno"; then
1253 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
1256 dnl ***********************
1257 dnl *** g_module checks ***
1258 dnl ***********************
1260 G_MODULE_LIBS_EXTRA=
1261 G_MODULE_PLUGIN_LIBS=
1262 if test x"$glib_native_win32" = xyes; then
1263 dnl No use for this on Win32
1267 G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1269 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1270 G_MODULE_NEED_USCORE=0
1271 G_MODULE_BROKEN_RTLD_GLOBAL=0
1272 G_MODULE_HAVE_DLERROR=0
1273 dnl *** force native WIN32 shared lib loader
1274 if test -z "$G_MODULE_IMPL"; then
1276 *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1279 dnl *** force native AIX library loader
1280 dnl *** dlopen() filepath must be of the form /path/libname.a(libname.so)
1281 if test -z "$G_MODULE_IMPL"; then
1283 *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
1286 dnl *** dlopen() and dlsym() in system libraries
1287 if test -z "$G_MODULE_IMPL"; then
1288 AC_CHECK_FUNC(dlopen,
1289 [AC_CHECK_FUNC(dlsym,
1290 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1293 dnl *** load_image (BeOS)
1294 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
1295 AC_CHECK_LIB(root, load_image,
1296 [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
1297 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1298 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1299 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1302 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1303 if test -z "$G_MODULE_IMPL"; then
1304 AC_CHECK_FUNC(NSLinkModule,
1305 [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1306 G_MODULE_NEED_USCORE=1],
1309 dnl *** dlopen() and dlsym() in libdl
1310 if test -z "$G_MODULE_IMPL"; then
1311 AC_CHECK_LIB(dl, dlopen,
1312 [AC_CHECK_LIB(dl, dlsym,
1314 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1317 dnl *** shl_load() in libdld (HP-UX)
1318 if test -z "$G_MODULE_IMPL"; then
1319 AC_CHECK_LIB(dld, shl_load,
1320 [G_MODULE_LIBS=-ldld
1321 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1324 dnl *** additional checks for G_MODULE_IMPL_DL
1325 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1327 LDFLAGS_orig="$LDFLAGS"
1328 LIBS="$G_MODULE_LIBS $LIBS"
1329 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1330 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1331 echo "void glib_plugin_test(void) { }" > plugin.c
1332 ${SHELL} ./libtool --mode=compile ${CC} -shared \
1333 -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
1334 AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1335 glib_cv_rtldglobal_broken,[
1339 # define RTLD_GLOBAL 0
1342 # define RTLD_LAZY 0
1344 int glib_plugin_test;
1346 void *handle, *global, *local;
1347 global = &glib_plugin_test;
1348 handle = dlopen ("./.libs/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
1349 if (!handle) return 0;
1350 local = dlsym (handle, "glib_plugin_test");
1351 return global == local;
1353 [glib_cv_rtldglobal_broken=no],
1354 [glib_cv_rtldglobal_broken=yes],
1355 [glib_cv_rtldglobal_broken=no])
1356 rm -f plugin.c plugin.o plugin.lo .libs/plugin.o
1357 rmdir .libs 2>/dev/null
1359 if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1360 G_MODULE_BROKEN_RTLD_GLOBAL=1
1362 G_MODULE_BROKEN_RTLD_GLOBAL=0
1364 dnl *** check whether we need preceeding underscores
1365 AC_CACHE_CHECK([for preceeding underscore in symbols],
1367 AC_TRY_RUN([#include <dlfcn.h>
1368 int glib_underscore_test (void) { return 42; }
1370 void *f1 = (void*)0, *f2 = (void*)0, *handle;
1371 handle = dlopen ((void*)0, 0);
1373 f1 = dlsym (handle, "glib_underscore_test");
1374 f2 = dlsym (handle, "_glib_underscore_test");
1375 } return (!f2 || f1);
1377 [glib_cv_uscore=yes],
1378 [glib_cv_uscore=no],
1380 rm -f plugin.c plugin.$ac_objext plugin.lo
1382 GLIB_ASSERT_SET(glib_cv_uscore)
1383 if test "x$glib_cv_uscore" = "xyes"; then
1384 G_MODULE_NEED_USCORE=1
1386 G_MODULE_NEED_USCORE=0
1389 LDFLAGS="$LDFLAGS_orig"
1390 dnl *** check for having dlerror()
1391 AC_CHECK_FUNC(dlerror,
1392 [G_MODULE_HAVE_DLERROR=1],
1393 [G_MODULE_HAVE_DLERROR=0])
1396 dnl *** done, have we got an implementation?
1397 if test -z "$G_MODULE_IMPL"; then
1399 G_MODULE_SUPPORTED=false
1401 G_MODULE_SUPPORTED=true
1404 AC_MSG_CHECKING(for the suffix of shared libraries)
1406 shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
1408 module=yes eval std_shrext=$shrext_cmds
1409 # chop the initial dot
1410 glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'`
1411 AC_MSG_RESULT(.$glib_gmodule_suffix)
1412 # any reason it may fail?
1413 if test "x$glib_gmodule_suffix" = x; then
1414 AC_MSG_ERROR(Cannot determine shared library suffix from libtool)
1417 AC_SUBST(G_MODULE_SUPPORTED)
1418 AC_SUBST(G_MODULE_IMPL)
1419 AC_SUBST(G_MODULE_LIBS)
1420 AC_SUBST(G_MODULE_LIBS_EXTRA)
1421 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1422 AC_SUBST(G_MODULE_LDFLAGS)
1423 AC_SUBST(G_MODULE_HAVE_DLERROR)
1424 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1425 AC_SUBST(G_MODULE_NEED_USCORE)
1426 AC_SUBST(GLIB_DEBUG_FLAGS)
1428 dnl **********************
1429 dnl *** g_spawn checks ***
1430 dnl **********************
1432 AC_MSG_CHECKING(for gspawn implementation)
1435 GSPAWN=gspawn-win32.lo
1441 AC_MSG_RESULT($GSPAWN)
1444 dnl *************************
1445 dnl *** GIOChannel checks ***
1446 dnl *************************
1448 AC_MSG_CHECKING(for GIOChannel implementation)
1460 dnl *********************************
1461 dnl *** Directory for GIO modules ***
1462 dnl *********************************
1464 AC_ARG_WITH(gio-module-dir,
1465 [AC_HELP_STRING([--with-gio-module-dir=PATH],
1466 [Load gio modules from this directory [LIBDIR/gio/modules]])],
1468 [with_gio_module_dir='${libdir}/gio/modules'])
1469 GIO_MODULE_DIR=$with_gio_module_dir
1470 AC_SUBST(GIO_MODULE_DIR)
1472 dnl **********************************
1473 dnl *** Check for libselinux (GIO) ***
1474 dnl **********************************
1475 AC_ARG_ENABLE(selinux, [ --disable-selinux build without selinux support])
1478 if test "x$enable_selinux" != "xno"; then
1480 AC_CHECK_LIB(selinux, is_selinux_enabled,
1481 [AC_CHECK_HEADERS(selinux/selinux.h,
1482 [AC_SEARCH_LIBS(lgetfilecon_raw, selinux,
1483 [AC_DEFINE(HAVE_SELINUX, 1, [Define to 1 if libselinux is available])
1484 SELINUX_LIBS="-lselinux"
1489 AC_SUBST(SELINUX_LIBS)
1491 dnl *****************************
1492 dnl ** Check for inotify (GIO) **
1493 dnl *****************************
1495 AC_CHECK_HEADERS([sys/inotify.h],
1500 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
1502 dnl ****************************
1503 dnl *** Checks for FAM (GIO) ***
1504 dnl ****************************
1506 should_disable_fam=no
1508 AC_ARG_ENABLE(fam, [ --disable-fam build without enabling fam for file system monitoring],
1510 if test "x$enable_fam" = "xno"; then
1511 should_disable_fam=yes
1512 echo "Not building FAM support"
1518 if test "x$should_disable_fam" = "xno"; then
1519 AC_CHECK_LIB(fam, FAMOpen,
1520 [AC_CHECK_HEADERS(fam.h,
1521 [AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
1522 AC_CHECK_LIB(fam, FAMNoExists,
1523 AC_DEFINE(HAVE_FAM_NO_EXISTS, [], [Define if we have FAMNoExists in fam]))
1526 AC_MSG_WARN(*** FAM support will not be built (header files not found) ***))],
1527 AC_MSG_WARN(*** FAM support will not be built (FAM library not found) ***))
1530 AM_CONDITIONAL(HAVE_FAM, [test "$fam_support" = "yes"])
1533 dnl *****************************
1534 dnl *** Check for xattr (GIO) ***
1535 dnl *****************************
1536 AC_ARG_ENABLE(xattr, [ --disable-xattr build without xattr support])
1539 if test "x$enable_xattr" != "xno"; then
1541 dnl either glibc or libattr can provide xattr support
1543 dnl for both of them, we check for getxattr being in
1544 dnl the library and a valid xattr header.
1547 AC_CHECK_LIB(c, getxattr,
1548 [AC_CHECK_HEADERS(sys/xattr.h,
1549 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1553 if test "x$msg_xattr" != "xyes"; then
1554 dnl failure. try libattr
1555 AC_CHECK_LIB(attr, getxattr,
1556 [AC_CHECK_HEADERS(attr/xattr.h,
1557 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1563 if test "x$msg_xattr" = "xyes"; then
1564 AC_MSG_CHECKING([for XATTR_NOFOLLOW])
1567 #ifdef HAVE_SYS_TYPES_H
1568 #include <sys/types.h>
1570 #ifdef HAVE_SYS_XATTR_H
1571 #include <sys/xattr.h>
1572 #elif HAVE_ATTR_XATTR_H
1573 #include <attr/xattr.h>
1576 [ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);],
1578 AC_DEFINE([HAVE_XATTR_NOFOLLOW], [1], [Define to 1 if xattr API uses XATTR_NOFOLLOW])
1579 AC_MSG_RESULT([yes])
1581 [AC_MSG_RESULT([no])]
1586 AC_SUBST(XATTR_LIBS)
1588 dnl ****************************************
1589 dnl *** platform dependent source checks ***
1590 dnl ****************************************
1592 AC_MSG_CHECKING(for platform-dependent source)
1594 *-*-cygwin*|*-*-mingw*)
1595 PLATFORMDEP=gwin32.lo
1601 AC_MSG_RESULT($PLATFORMDEP)
1602 AC_SUBST(PLATFORMDEP)
1604 AC_MSG_CHECKING([whether to compile timeloop])
1606 *-*-cygwin*|*-*-mingw*|*-*-minix)
1613 AC_MSG_RESULT($enable_timeloop)
1614 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1616 AC_MSG_CHECKING([if building for some Win32 platform])
1618 *-*-mingw*|*-*-cygwin*)
1625 AC_MSG_RESULT($platform_win32)
1626 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1628 dnl ***********************
1629 dnl *** g_thread checks ***
1630 dnl ***********************
1632 AC_ARG_WITH(threads,
1633 [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/win32@:>@],
1634 [specify a thread implementation to use])],
1635 [if test "x$with_threads" = x; then
1638 want_threads=$with_threads
1641 if test "x$enable_threads" = "xno"; then
1645 dnl error and warning message
1646 dnl *************************
1648 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1649 computer. GLib will not have a default thread implementation."
1651 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1652 platform (normally it's "_REENTRANT"). I'll not use any flag on
1653 compilation now, but then your programs might not work.
1654 Please provide information on how it is done on your system."
1656 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1659 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1660 provide information on your thread implementation.
1661 You can also run 'configure --disable-threads'
1662 to compile without thread support."
1664 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1665 functions will not be MT-safe during their first call because
1666 there is no working 'getpwuid_r' on your system."
1668 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1669 because there is no 'localtime_r' on your system."
1671 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1672 crude surrogate will be used. If you happen to know a
1673 yield function for your system, please inform the GLib
1676 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for
1677 threads on your system. Thus threads can only have the default
1678 priority. If you happen to know these main/max
1679 priorities, please inform the GLib developers."
1681 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1682 linking threaded applications. As GLib cannot do that
1683 automatically, you will get an linkg error everytime you are
1684 not using the right compiler. In that case you have to relink
1685 with the right compiler. Ususally just '_r' is appended
1686 to the compiler name."
1688 dnl determination of thread implementation
1689 dnl ***************************************
1691 # have_threads=no means no thread support
1692 # have_threads=none means no default thread implementation
1695 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1696 || test "x$want_threads" = xdce; then
1697 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1698 # -U_OSF_SOURCE is for Digital UNIX 4.0d
1699 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1700 glib_save_CPPFLAGS="$CPPFLAGS"
1701 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1702 if test "x$have_threads" = xno; then
1703 AC_TRY_COMPILE([#include <pthread.h>],
1704 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1707 if test "x$have_threads" = xno; then
1708 AC_TRY_COMPILE([#include <pthread.h>],
1710 pthread_mutex_init (&m, pthread_mutexattr_default);],
1713 # Tru64Unix requires -pthread to find pthread.h. See #103020
1714 CPPFLAGS="$CPPFLAGS -pthread"
1715 if test "x$have_threads" = xno; then
1716 AC_TRY_COMPILE([#include <pthread.h>],
1717 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1720 CPPFLAGS="$glib_save_CPPFLAGS"
1722 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1729 if test "x$want_threads" = xnone; then
1733 AC_MSG_CHECKING(for thread implementation)
1735 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1736 AC_MSG_RESULT(none available)
1737 AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1739 AC_MSG_RESULT($have_threads)
1743 dnl determination of G_THREAD_CFLAGS
1744 dnl ********************************
1747 G_THREAD_LIBS_EXTRA=
1751 dnl Test program for basic POSIX threads functionality
1753 m4_define([glib_thread_test],[
1754 #include <pthread.h>
1756 void* func(void* data) {check_me = 42; return &check_me;}
1760 pthread_create (&t, $1, func, 0);
1761 pthread_join (t, &ret);
1762 return (check_me != 42 || ret != &check_me);
1766 dnl Test program for sched_get_priority_min()
1768 m4_define([glib_sched_priority_test],[
1773 return sched_get_priority_min(SCHED_OTHER)==-1
1777 if test x"$have_threads" != xno; then
1779 if test x"$have_threads" = xposix; then
1780 # First we test for posix, whether -pthread or -pthreads do the trick as
1781 # both CPPFLAG and LIBS.
1782 # One of them does for most gcc versions and some other platforms/compilers
1783 # too and could be considered as the canonical way to go.
1785 *-*-cygwin*|*-*-darwin*)
1786 # skip cygwin and darwin -pthread or -pthreads test
1789 # These compiler/linker flags work with both Sun Studio and gcc
1790 # Sun Studio expands -mt to -D_REENTRANT and -lthread
1791 # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
1792 G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
1793 G_THREAD_LIBS="-lpthread -lthread"
1796 for flag in pthread pthreads mt; do
1797 glib_save_CFLAGS="$CFLAGS"
1798 CFLAGS="$CFLAGS -$flag"
1799 AC_TRY_RUN(glib_thread_test(0),
1800 glib_flag_works=yes,
1802 [AC_LINK_IFELSE(glib_thread_test(0),
1803 glib_flag_works=yes,
1804 glib_flag_works=no)])
1805 CFLAGS="$glib_save_CFLAGS"
1806 if test $glib_flag_works = yes ; then
1807 G_THREAD_CFLAGS=-$flag
1808 G_THREAD_LIBS=-$flag
1816 if test x"$G_THREAD_CFLAGS" = x; then
1818 # The canonical -pthread[s] does not work. Try something different.
1822 if test x"$GCC" = xyes; then
1823 # GCC 3.0 and above needs -pthread.
1824 # Should be coverd by the case above.
1825 # GCC 2.x and below needs -mthreads
1826 G_THREAD_CFLAGS="-mthreads"
1827 G_THREAD_LIBS=$G_THREAD_CFLAGS
1829 # We are probably using the aix compiler. Normaly a
1830 # program would have to be compiled with the _r variant
1831 # of the corresponding compiler, but we as GLib cannot
1832 # do that: but the good news is that for compiling the
1833 # only difference is the added -D_THREAD_SAFE compile
1834 # option. This is according to the "C for AIX User's
1836 G_THREAD_CFLAGS="-D_THREAD_SAFE"
1840 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1843 # So we are using dce threads. posix threads are already
1845 G_THREAD_CFLAGS="-threads"
1846 G_THREAD_LIBS=$G_THREAD_CFLAGS
1848 *-sysv5uw7*) # UnixWare 7
1849 # We are not using gcc with -pthread. Catched above.
1850 G_THREAD_CFLAGS="-Kthread"
1851 G_THREAD_LIBS=$G_THREAD_CFLAGS
1854 # No flag needed when using MSVCRT.DLL
1858 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1864 # if we are not finding the localtime_r function, then we probably are
1865 # not using the proper multithread flag
1867 glib_save_CPPFLAGS="$CPPFLAGS"
1868 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1870 # First we test, whether localtime_r is declared in time.h
1871 # directly. Then we test whether a macro localtime_r exists, in
1872 # which case localtime_r in the test program is replaced and thus
1873 # if we still find localtime_r in the output, it is not defined as
1876 AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
1877 [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>
1879 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
1881 CPPFLAGS="$glib_save_CPPFLAGS"
1883 AC_MSG_CHECKING(thread related cflags)
1884 AC_MSG_RESULT($G_THREAD_CFLAGS)
1885 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1888 dnl determination of G_THREAD_LIBS
1889 dnl ******************************
1891 mutex_has_default=no
1892 case $have_threads in
1894 glib_save_CPPFLAGS="$CPPFLAGS"
1895 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1896 if test x"$G_THREAD_LIBS" = x; then
1899 # We are not using gcc (would have set G_THREAD_LIBS) and thus
1900 # probably using the aix compiler.
1901 AC_MSG_WARN($AIX_COMPILE_INFO)
1905 glib_save_LIBS="$LIBS"
1906 for thread_lib in "" pthread pthread32 pthreads thread dce; do
1907 if test x"$thread_lib" = x; then
1911 add_thread_lib="-l$thread_lib"
1912 IN=" in -l$thread_lib"
1914 if test x"$have_threads" = xposix; then
1917 defattr=pthread_attr_default
1920 LIBS="$add_thread_lib $glib_save_LIBS"
1922 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
1923 AC_TRY_RUN(glib_thread_test($defattr),
1926 [AC_LINK_IFELSE(glib_thread_test($defattr),
1929 AC_MSG_RESULT($glib_result)
1931 if test "$glib_result" = "yes" ; then
1932 G_THREAD_LIBS="$add_thread_lib"
1936 if test "x$G_THREAD_LIBS" = xerror; then
1937 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1939 LIBS="$glib_save_LIBS"
1944 glib_save_LIBS="$LIBS"
1945 for thread_lib in "" rt rte; do
1946 if test x"$thread_lib" = x; then
1950 add_thread_lib="-l$thread_lib"
1951 IN=" in -l$thread_lib"
1953 LIBS="$add_thread_lib $glib_save_LIBS"
1955 AC_MSG_CHECKING(for sched_get_priority_min$IN)
1956 AC_TRY_RUN(glib_sched_priority_test,
1959 [AC_LINK_IFELSE(glib_sched_priority_test,
1962 AC_MSG_RESULT($glib_result)
1964 if test "$glib_result" = "yes" ; then
1965 G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
1966 posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
1967 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
1971 LIBS="$glib_save_LIBS"
1972 mutex_has_default=yes
1973 mutex_default_type='pthread_mutex_t'
1974 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
1975 mutex_header_file='pthread.h'
1976 if test "x$have_threads" = "xposix"; then
1977 g_threads_impl="POSIX"
1979 g_threads_impl="DCE"
1980 have_threads="posix"
1982 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
1983 CPPFLAGS="$glib_save_CPPFLAGS"
1986 g_threads_impl="WIN32"
1989 g_threads_impl="NONE"
1992 g_threads_impl="NONE"
1997 if test "x$G_THREAD_LIBS" = xerror; then
1998 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2003 G_THREAD_LIBS="-lbe -lroot -lglib-2.0 "
2004 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
2010 AC_MSG_CHECKING(thread related libraries)
2011 AC_MSG_RESULT($G_THREAD_LIBS)
2013 dnl check for mt safe function variants and some posix functions
2014 dnl ************************************************************
2016 if test x"$have_threads" != xno; then
2017 glib_save_LIBS="$LIBS"
2018 # we are not doing the following for now, as this might require glib
2019 # to always be linked with the thread libs on some platforms.
2020 # LIBS="$LIBS $G_THREAD_LIBS"
2021 AC_CHECK_FUNCS(localtime_r gmtime_r)
2022 if test "$ac_cv_header_pwd_h" = "yes"; then
2023 AC_CACHE_CHECK([for posix getpwuid_r],
2024 ac_cv_func_posix_getpwuid_r,
2030 struct passwd pwd, *pwptr = &pwd;
2033 error = getpwuid_r (0, &pwd, buffer,
2034 sizeof (buffer), &pwptr);
2035 return (error < 0 && errno == ENOSYS)
2038 [ac_cv_func_posix_getpwuid_r=yes],
2039 [ac_cv_func_posix_getpwuid_r=no])])
2040 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
2041 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
2042 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
2043 [Have POSIX function getpwuid_r])
2045 AC_CACHE_CHECK([for nonposix getpwuid_r],
2046 ac_cv_func_nonposix_getpwuid_r,
2047 [AC_TRY_LINK([#include <pwd.h>],
2048 [char buffer[10000];
2050 getpwuid_r (0, &pwd, buffer,
2052 [ac_cv_func_nonposix_getpwuid_r=yes],
2053 [ac_cv_func_nonposix_getpwuid_r=no])])
2054 GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
2055 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
2056 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
2057 [Have non-POSIX function getpwuid_r])
2061 if test "$ac_cv_header_grp_h" = "yes"; then
2062 AC_CACHE_CHECK([for posix getgrgid_r],
2063 ac_cv_func_posix_getgrgid_r,
2069 struct group grp, *grpptr = &grp;
2072 error = getgrgid_r (0, &grp, buffer,
2073 sizeof (buffer), &grpptr);
2074 return (error < 0 && errno == ENOSYS)
2077 [ac_cv_func_posix_getgrgid_r=yes],
2078 [ac_cv_func_posix_getgrgid_r=no])])
2079 GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
2080 if test "$ac_cv_func_posix_getgrgid_r" = yes; then
2081 AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
2082 [Have POSIX function getgrgid_r])
2084 AC_CACHE_CHECK([for nonposix getgrgid_r],
2085 ac_cv_func_nonposix_getgrgid_r,
2086 [AC_TRY_LINK([#include <grp.h>],
2087 [char buffer[10000];
2089 getgrgid_r (0, &grp, buffer,
2091 [ac_cv_func_nonposix_getgrgid_r=yes],
2092 [ac_cv_func_nonposix_getgrgid_r=no])])
2093 GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
2094 if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
2095 AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
2096 [Have non-POSIX function getgrgid_r])
2100 LIBS="$G_THREAD_LIBS $LIBS"
2101 if test x"$have_threads" = xposix; then
2102 glib_save_CPPFLAGS="$CPPFLAGS"
2103 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2104 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
2105 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
2106 # This is not AC_CHECK_FUNC to also work with function
2107 # name mangling in header files.
2108 AC_MSG_CHECKING(for pthread_attr_setstacksize)
2109 AC_TRY_LINK([#include <pthread.h>],
2110 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
2112 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
2113 [Have function pthread_attr_setstacksize])],
2114 [AC_MSG_RESULT(no)])
2115 AC_MSG_CHECKING(for minimal/maximal thread priority)
2116 if test x"$posix_priority_min" = x; then
2117 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
2119 posix_priority_min=PX_PRIO_MIN
2120 posix_priority_max=PX_PRIO_MAX])
2122 if test x"$posix_priority_min" = x; then
2124 AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
2125 PTHREAD_PRIO_MIN],,[
2126 posix_priority_min=PTHREAD_PRIO_MIN
2127 posix_priority_max=PTHREAD_PRIO_MAX])
2129 if test x"$posix_priority_min" = x; then
2130 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
2132 posix_priority_min=PRI_OTHER_MIN
2133 posix_priority_max=PRI_OTHER_MAX])
2135 if test x"$posix_priority_min" = x; then
2136 AC_MSG_RESULT(none found)
2137 AC_MSG_WARN($POSIX_NO_PRIORITIES)
2138 posix_priority_min=-1
2139 posix_priority_max=-1
2141 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
2142 AC_MSG_CHECKING(for pthread_setschedparam)
2143 AC_TRY_LINK([#include <pthread.h>],
2144 [pthread_t t; pthread_setschedparam(t, 0, NULL)],
2146 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
2147 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
2149 AC_MSG_WARN($POSIX_NO_PRIORITIES)])
2151 posix_yield_func=none
2152 AC_MSG_CHECKING(for posix yield function)
2153 for yield_func in sched_yield pthread_yield_np pthread_yield \
2155 AC_TRY_LINK([#include <pthread.h>],
2157 [posix_yield_func="$yield_func"
2160 if test x"$posix_yield_func" = xnone; then
2161 AC_MSG_RESULT(none found)
2162 AC_MSG_WARN($POSIX_NO_YIELD)
2163 posix_yield_func="g_usleep(1000)"
2165 AC_MSG_RESULT($posix_yield_func)
2166 posix_yield_func="$posix_yield_func()"
2168 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
2169 CPPFLAGS="$glib_save_CPPFLAGS"
2171 elif test x"$have_threads" = xwin32; then
2172 # It's a pointer to a private struct
2173 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
2176 LIBS="$glib_save_LIBS"
2178 # now spit out all the warnings.
2179 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
2180 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
2181 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
2183 if test "$ac_cv_func_localtime_r" != "yes"; then
2184 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
2188 if test x"$glib_cv_sizeof_system_thread" = x; then
2189 # use a pointer as a fallback.
2190 GLIB_SIZEOF(,void *, system_thread)
2194 # Hack to deal with:
2196 # a) GCC < 3.3 for Linux doesn't include -lpthread when
2197 # building shared libraries with linux.
2198 # b) FreeBSD doesn't do this either.
2201 *-*-freebsd*|*-*-linux*)
2202 G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
2205 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
2209 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
2210 [Source file containing theread implementation])
2211 AC_SUBST(G_THREAD_CFLAGS)
2212 AC_SUBST(G_THREAD_LIBS)
2213 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
2214 AC_SUBST(G_THREAD_LIBS_EXTRA)
2216 dnl **********************************************
2217 dnl *** GDefaultMutex setup and initialization ***
2218 dnl **********************************************
2220 dnl if mutex_has_default = yes, we also got
2221 dnl mutex_default_type, mutex_default_init and mutex_header_file
2222 if test $mutex_has_default = yes ; then
2223 glib_save_CPPFLAGS="$CPPFLAGS"
2224 glib_save_LIBS="$LIBS"
2225 LIBS="$G_THREAD_LIBS $LIBS"
2226 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2227 GLIB_SIZEOF([#include <$mutex_header_file>],
2228 $mutex_default_type,
2230 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
2231 $mutex_default_type,
2233 $glib_cv_sizeof_gmutex,
2234 $mutex_default_init)
2235 if test x"$glib_cv_byte_contents_gmutex" = xno; then
2236 mutex_has_default=no
2238 CPPFLAGS="$glib_save_CPPFLAGS"
2239 LIBS="$glib_save_LIBS"
2242 AC_CHECK_FUNCS(clock_gettime, [], [
2243 AC_CHECK_LIB(rt, clock_gettime, [
2244 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
2245 G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
2246 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
2250 AC_CACHE_CHECK(for monotonic clocks,
2251 glib_cv_monotonic_clock,AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2255 #if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
2256 #error No monotonic clock
2260 ]])],glib_cv_monotonic_clock=yes,glib_cv_monotonic_clock=no))
2261 if test "$glib_cv_monotonic_clock" = "yes"; then
2262 AC_DEFINE(HAVE_MONOTONIC_CLOCK,1,[Have a monotonic clock])
2266 dnl ********************************
2267 dnl *** g_atomic_* tests for gcc ***
2268 dnl ********************************
2270 AC_MSG_CHECKING([whether to use assembler code for atomic operations])
2272 if test x"$GCC" = xyes; then
2275 AC_MSG_RESULT([none])
2276 glib_memory_barrier_needed=no
2279 AC_MSG_RESULT([i486])
2280 AC_DEFINE_UNQUOTED(G_ATOMIC_I486, 1,
2281 [i486 atomic implementation])
2282 glib_memory_barrier_needed=no
2285 SPARCV9_WARNING="Try to rerun configure with CFLAGS='-mcpu=v9',
2286 when you are using a sparc with v9 instruction set (most
2287 sparcs nowadays). This will make the code for atomic
2288 operations much faster. The resulting code will not run
2289 on very old sparcs though."
2294 int tmp1, tmp2, tmp3;
2295 __asm__ __volatile__("casx [%2], %0, %1"
2296 : "=&r" (tmp1), "=&r" (tmp2) : "r" (&tmp3));
2298 AC_MSG_RESULT([sparcv9])
2299 AC_DEFINE_UNQUOTED(G_ATOMIC_SPARCV9, 1,
2300 [sparcv9 atomic implementation]),
2302 AC_MSG_WARN([[$SPARCV9_WARNING]]))
2303 glib_memory_barrier_needed=yes
2306 AC_MSG_RESULT([alpha])
2307 AC_DEFINE_UNQUOTED(G_ATOMIC_ALPHA, 1,
2308 [alpha atomic implementation])
2309 glib_memory_barrier_needed=yes
2312 AC_MSG_RESULT([x86_64])
2313 AC_DEFINE_UNQUOTED(G_ATOMIC_X86_64, 1,
2314 [x86_64 atomic implementation])
2315 glib_memory_barrier_needed=no
2318 AC_MSG_RESULT([powerpc])
2319 AC_DEFINE_UNQUOTED(G_ATOMIC_POWERPC, 1,
2320 [powerpc atomic implementation])
2321 glib_memory_barrier_needed=yes
2322 AC_MSG_CHECKING([whether asm supports numbered local labels])
2325 __asm__ __volatile__ ("1: nop\n"
2328 AC_DEFINE_UNQUOTED(ASM_NUMERIC_LABELS, 1, [define if asm blocks can use numeric local labels])
2329 AC_MSG_RESULT([yes])
2335 AC_MSG_RESULT([ia64])
2336 AC_DEFINE_UNQUOTED(G_ATOMIC_IA64, 1,
2337 [ia64 atomic implementation])
2338 glib_memory_barrier_needed=yes
2341 AC_MSG_RESULT([s390])
2342 AC_DEFINE_UNQUOTED(G_ATOMIC_S390, 1,
2343 [s390 atomic implementation])
2344 glib_memory_barrier_needed=no
2347 AC_MSG_RESULT([arm])
2348 AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 1,
2349 [arm atomic implementation])
2350 glib_memory_barrier_needed=no
2353 AC_MSG_RESULT([none])
2354 glib_memory_barrier_needed=yes
2359 dnl ****************************************
2360 dnl *** GLib POLL* compatibility defines ***
2361 dnl ****************************************
2363 glib_poll_includes=["
2364 #include <sys/types.h>
2365 #include <sys/poll.h>
2368 if test $ac_cv_header_sys_types_h = yes &&
2369 test $ac_cv_header_sys_poll_h = yes ; then
2371 GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
2372 GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
2373 GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
2374 GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
2375 GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
2376 GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
2377 if $glib_failed ; then
2378 AC_MSG_ERROR([Could not determine values for POLL* constants])
2381 glib_cv_value_POLLIN=1
2382 glib_cv_value_POLLOUT=4
2383 glib_cv_value_POLLPRI=2
2384 glib_cv_value_POLLERR=8
2385 glib_cv_value_POLLHUP=16
2386 glib_cv_value_POLLNVAL=32
2389 AC_MSG_CHECKING([for broken poll])
2390 AC_RUN_IFELSE([AC_LANG_SOURCE([[
2394 #ifdef HAVE_SYS_POLL_H
2395 #include <sys/poll.h>
2398 struct pollfd fds[1];
2400 fd = open("/dev/null", 1);
2402 fds[0].events = POLLIN;
2404 if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
2405 exit(1); /* Does not work for devices -- fail */
2411 AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
2412 [broken_poll="no (cross compiling)"])
2413 AC_MSG_RESULT($broken_poll)
2415 dnl *********************
2416 dnl *** GRegex checks ***
2417 dnl *********************
2418 PCRE_REQUIRED_VERSION=7.2
2420 # Check if we should compile GRegex
2421 AC_ARG_ENABLE(regex, AC_HELP_STRING([--disable-regex],
2422 [disable the compilation of GRegex]),
2423 [case "${enableval}" in
2424 yes) enable_regex=true ;;
2425 no) enable_regex=false ;;
2426 *) AC_MSG_ERROR(bad value ${enableval} for --enable-regex) ;;
2428 [enable_regex=true])
2430 AM_CONDITIONAL(ENABLE_REGEX, $enable_regex)
2432 if test x$enable_regex = xtrue; then
2433 # Check if we should use the internal or the system-supplied pcre
2435 [AC_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
2436 [specify whether to use the internal or the
2437 system-supplied PCRE library])])
2439 AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
2441 if test "x$with_pcre" = xsystem; then
2442 PKG_CHECK_MODULES(PCRE,
2443 libpcre >= $PCRE_REQUIRED_VERSION)
2444 AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
2445 glib_save_CFLAGS="$CFLAGS"
2446 glib_save_LIBS="$LIBS"
2447 CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
2448 AC_TRY_RUN([#include <pcre.h>
2451 pcre_config (PCRE_CONFIG_UTF8, &support);
2454 pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
2459 glib_cv_pcre_has_unicode=yes,
2460 glib_cv_pcre_has_unicode=no,
2461 glib_cv_pcre_has_unicode=yes)
2462 CFLAGS="$glib_save_CFLAGS"
2463 LIBS="$glib_save_LIBS"
2465 if test "$glib_cv_pcre_has_unicode" = "no"; then
2466 AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
2468 AC_SUBST(PCRE_CFLAGS)
2470 AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
2471 PCRE_REQUIRES=libpcre
2472 AC_SUBST(PCRE_REQUIRES)
2474 # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
2475 if test x"$GCC" = xyes; then
2476 AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
2477 save_CFLAGS="$CFLAGS"
2478 CFLAGS="$CFLAGS -Wno-pointer-sign"
2479 AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
2480 AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
2481 CFLAGS="$save_CFLAGS"
2484 AC_SUBST(PCRE_WARN_CFLAGS)
2486 AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
2489 dnl **********************
2490 dnl *** Win32 API libs ***
2491 dnl **********************
2495 G_LIBS_EXTRA="-luser32 -lkernel32"
2498 G_LIBS_EXTRA="-lws2_32 -lole32"
2504 AC_SUBST(G_LIBS_EXTRA)
2506 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
2507 dnl since we need it for g_iconv()
2509 AC_MSG_CHECKING([for EILSEQ])
2515 ], have_eilseq=yes, have_eilseq=no);
2516 AC_MSG_RESULT($have_eilseq)
2518 dnl ******************************************************************
2519 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
2520 dnl ******************************************************************
2522 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
2524 if test $cross_compiling = yes; then
2525 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
2526 if test x$GLIB_GENMARSHAL = xno; then
2527 AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
2531 dnl **************************
2532 dnl *** Checks for gtk-doc ***
2533 dnl **************************
2535 GTK_DOC_CHECK([1.8])
2538 [AC_HELP_STRING([--enable-man],
2539 [regenerate man pages from Docbook [default=no]])],enable_man=yes,
2542 if test "${enable_man}" != no; then
2544 dnl Check for xsltproc
2546 AC_PATH_PROG([XSLTPROC], [xsltproc])
2547 if test -z "$XSLTPROC"; then
2551 dnl check for DocBook DTD and stylesheets in the local catalog.
2552 JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
2553 [DocBook XML DTD V4.1.2],,enable_man=no)
2554 JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
2555 [DocBook XSL Stylesheets],,enable_man=no)
2558 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
2560 dnl ******************************
2561 dnl *** output the whole stuff ***
2562 dnl ******************************
2564 dnl this section will only be run if config.status is invoked with no
2565 dnl arguments, or with "glibconfig.h" as an argument.
2566 AC_CONFIG_COMMANDS([glibconfig.h],
2568 outfile=glibconfig.h-tmp
2569 cat > $outfile <<\_______EOF
2572 * This is a generated file. Please modify 'configure.in'
2575 #ifndef __G_LIBCONFIG_H__
2576 #define __G_LIBCONFIG_H__
2578 #include <glib/gmacros.h>
2582 if test x$glib_limits_h = xyes; then
2583 echo '#include <limits.h>' >> $outfile
2585 if test x$glib_float_h = xyes; then
2586 echo '#include <float.h>' >> $outfile
2588 if test x$glib_values_h = xyes; then
2589 echo '#include <values.h>' >> $outfile
2591 if test "$glib_header_alloca_h" = "yes"; then
2592 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
2594 if test x$glib_sys_poll_h = xyes; then
2595 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
2598 cat >> $outfile <<_______EOF
2602 #define G_MINFLOAT $glib_mf
2603 #define G_MAXFLOAT $glib_Mf
2604 #define G_MINDOUBLE $glib_md
2605 #define G_MAXDOUBLE $glib_Md
2606 #define G_MINSHORT $glib_ms
2607 #define G_MAXSHORT $glib_Ms
2608 #define G_MAXUSHORT $glib_Mus
2609 #define G_MININT $glib_mi
2610 #define G_MAXINT $glib_Mi
2611 #define G_MAXUINT $glib_Mui
2612 #define G_MINLONG $glib_ml
2613 #define G_MAXLONG $glib_Ml
2614 #define G_MAXULONG $glib_Mul
2619 ### this should always be true in a modern C/C++ compiler
2620 cat >>$outfile <<_______EOF
2621 typedef signed char gint8;
2622 typedef unsigned char guint8;
2626 if test -n "$gint16"; then
2627 cat >>$outfile <<_______EOF
2628 typedef signed $gint16 gint16;
2629 typedef unsigned $gint16 guint16;
2630 #define G_GINT16_MODIFIER $gint16_modifier
2631 #define G_GINT16_FORMAT $gint16_format
2632 #define G_GUINT16_FORMAT $guint16_format
2637 if test -n "$gint32"; then
2638 cat >>$outfile <<_______EOF
2639 typedef signed $gint32 gint32;
2640 typedef unsigned $gint32 guint32;
2641 #define G_GINT32_MODIFIER $gint32_modifier
2642 #define G_GINT32_FORMAT $gint32_format
2643 #define G_GUINT32_FORMAT $guint32_format
2647 cat >>$outfile <<_______EOF
2648 #define G_HAVE_GINT64 1 /* deprecated, always true */
2650 ${glib_extension}typedef signed $gint64 gint64;
2651 ${glib_extension}typedef unsigned $gint64 guint64;
2653 #define G_GINT64_CONSTANT(val) $gint64_constant
2654 #define G_GUINT64_CONSTANT(val) $guint64_constant
2657 if test x$gint64_format != x ; then
2658 cat >>$outfile <<_______EOF
2659 #define G_GINT64_MODIFIER $gint64_modifier
2660 #define G_GINT64_FORMAT $gint64_format
2661 #define G_GUINT64_FORMAT $guint64_format
2664 cat >>$outfile <<_______EOF
2665 #undef G_GINT64_MODIFIER
2666 #undef G_GINT64_FORMAT
2667 #undef G_GUINT64_FORMAT
2671 cat >>$outfile <<_______EOF
2673 #define GLIB_SIZEOF_VOID_P $glib_void_p
2674 #define GLIB_SIZEOF_LONG $glib_long
2675 #define GLIB_SIZEOF_SIZE_T $glib_size_t
2679 cat >>$outfile <<_______EOF
2680 typedef signed $glib_size_type_define gssize;
2681 typedef unsigned $glib_size_type_define gsize;
2682 #define G_GSIZE_MODIFIER $gsize_modifier
2683 #define G_GSSIZE_FORMAT $gssize_format
2684 #define G_GSIZE_FORMAT $gsize_format
2686 #define G_MAXSIZE G_MAXU$glib_msize_type
2687 #define G_MINSSIZE G_MIN$glib_msize_type
2688 #define G_MAXSSIZE G_MAX$glib_msize_type
2690 typedef gint64 goffset;
2691 #define G_MINOFFSET G_MININT64
2692 #define G_MAXOFFSET G_MAXINT64
2696 if test -z "$glib_unknown_void_p"; then
2697 cat >>$outfile <<_______EOF
2699 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
2700 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
2702 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
2703 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
2706 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
2711 cat >>$outfile <<_______EOF
2720 #define G_HAVE_INLINE 1
2721 #else /* !__cplusplus */
2723 #endif /* !__cplusplus */
2726 #define G_CAN_INLINE 1
2729 if test x$g_can_inline = xyes ; then
2730 cat >>$outfile <<_______EOF
2731 #else /* !__cplusplus */
2732 #define G_CAN_INLINE 1
2736 cat >>$outfile <<_______EOF
2741 if test x$g_have_iso_c_varargs = xyes ; then
2742 cat >>$outfile <<_______EOF
2744 # define G_HAVE_ISO_VARARGS 1
2748 if test x$g_have_iso_cxx_varargs = xyes ; then
2749 cat >>$outfile <<_______EOF
2751 # define G_HAVE_ISO_VARARGS 1
2755 if test x$g_have_gnuc_varargs = xyes ; then
2756 cat >>$outfile <<_______EOF
2758 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2759 * is passed ISO vararg support is turned off, and there is no work
2760 * around to turn it on, so we unconditionally turn it off.
2762 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2763 # undef G_HAVE_ISO_VARARGS
2766 #define G_HAVE_GNUC_VARARGS 1
2770 case x$g_stack_grows in
2771 xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2772 *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2777 if test x$g_have_eilseq = xno; then
2778 cat >>$outfile <<_______EOF
2780 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2781 * The correspondence between this and the corresponding definition
2782 * in libiconv is essential.
2784 # define EILSEQ ENOENT
2790 if test x$g_have_gnuc_visibility = xyes; then
2791 cat >>$outfile <<_______EOF
2792 #define G_HAVE_GNUC_VISIBILITY 1
2795 cat >>$outfile <<_______EOF
2796 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
2797 #define G_GNUC_INTERNAL __hidden
2798 #elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
2799 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
2801 #define G_GNUC_INTERNAL
2807 if test x$g_mutex_has_default = xyes; then
2808 cat >>$outfile <<_______EOF
2809 $g_enable_threads_def G_THREADS_ENABLED
2810 #define G_THREADS_IMPL_$g_threads_impl_def
2811 typedef struct _GStaticMutex GStaticMutex;
2812 struct _GStaticMutex
2814 struct _GMutex *runtime_mutex;
2816 char pad[[$g_mutex_sizeof]];
2817 double dummy_double;
2818 void *dummy_pointer;
2822 #define G_STATIC_MUTEX_INIT { NULL, { { $g_mutex_contents} } }
2823 #define g_static_mutex_get_mutex(mutex) \\
2824 (g_thread_use_default_impl ? ((GMutex*) ((mutex)->static_mutex.pad)) : \\
2825 g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
2828 cat >>$outfile <<_______EOF
2829 $g_enable_threads_def G_THREADS_ENABLED
2830 #define G_THREADS_IMPL_$g_threads_impl_def
2831 typedef struct _GMutex* GStaticMutex;
2832 #define G_STATIC_MUTEX_INIT NULL
2833 #define g_static_mutex_get_mutex(mutex) \\
2834 (g_static_mutex_get_mutex_impl_shortcut (mutex))
2838 cat >>$outfile <<_______EOF
2839 /* This represents a system thread as used by the implementation. An
2840 * alien implementaion, as loaded by g_thread_init can only count on
2841 * "sizeof (gpointer)" bytes to store their info. We however need more
2842 * for some of our native implementations. */
2843 typedef union _GSystemThread GSystemThread;
2844 union _GSystemThread
2846 char data[[$g_system_thread_sizeof]];
2847 double dummy_double;
2848 void *dummy_pointer;
2852 if test x"$g_memory_barrier_needed" != xno; then
2854 echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
2858 g_bit_sizes="16 32 64"
2859 for bits in $g_bit_sizes; do
2860 cat >>$outfile <<_______EOF
2861 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
2862 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
2863 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
2864 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
2868 cat >>$outfile <<_______EOF
2869 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
2870 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
2871 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
2872 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
2873 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
2874 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
2875 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
2876 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
2877 #define G_BYTE_ORDER $g_byte_order
2879 #define GLIB_SYSDEF_POLLIN =$g_pollin
2880 #define GLIB_SYSDEF_POLLOUT =$g_pollout
2881 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
2882 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
2883 #define GLIB_SYSDEF_POLLERR =$g_pollerr
2884 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
2886 #define G_MODULE_SUFFIX "$g_module_suffix"
2888 typedef $g_pid_type GPid;
2892 #endif /* GLIBCONFIG_H */
2896 if cmp -s $outfile glibconfig.h; then
2897 AC_MSG_NOTICE([glibconfig.h is unchanged])
2900 mv $outfile glibconfig.h
2904 # Note that if two cases are the same, case goes with the first one.
2905 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
2906 # on variable expansion in case labels. Look at the generated config.status
2909 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
2910 glib_header_alloca_h="$ac_cv_working_alloca_h"
2912 glib_header_alloca_h="$ac_cv_header_alloca_h"
2916 x$ac_cv_header_float_h)
2918 glib_mf=FLT_MIN glib_Mf=FLT_MAX
2919 glib_md=DBL_MIN glib_Md=DBL_MAX
2921 x$ac_cv_header_values_h)
2923 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
2924 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
2929 x$ac_cv_header_limits_h)
2931 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
2932 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
2933 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
2935 x$ac_cv_header_values_h)
2937 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
2938 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
2939 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
2943 if test x$ac_cv_header_sys_poll_h = xyes ; then
2948 $ac_cv_sizeof_short)
2950 gint16_modifier='"h"'
2951 gint16_format='"hi"'
2952 guint16_format='"hu"'
2956 gint16_modifier='""'
2958 guint16_format='"u"'
2962 $ac_cv_sizeof_short)
2964 gint32_modifier='"h"'
2965 gint32_format='"hi"'
2966 guint32_format='"hu"'
2970 gint32_modifier='""'
2972 guint32_format='"u"'
2976 gint32_modifier='"l"'
2977 gint32_format='"li"'
2978 guint32_format='"lu"'
2984 gint64_modifier='""'
2986 guint64_format='"u"'
2988 gint64_constant='(val)'
2989 guint64_constant='(val)'
2993 gint64_modifier='"l"'
2994 gint64_format='"li"'
2995 guint64_format='"lu"'
2997 gint64_constant='(val##L)'
2998 guint64_constant='(val##UL)'
3000 $ac_cv_sizeof_long_long)
3002 if test -n "$glib_cv_long_long_format"; then
3003 gint64_modifier='"'$glib_cv_long_long_format'"'
3004 gint64_format='"'$glib_cv_long_long_format'i"'
3005 guint64_format='"'$glib_cv_long_long_format'u"'
3007 glib_extension='G_GNUC_EXTENSION '
3008 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
3009 guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
3011 $ac_cv_sizeof___int64)
3013 if test -n "$glib_cv_long_long_format"; then
3014 gint64_modifier='"'$glib_cv_long_long_format'"'
3015 gint64_format='"'$glib_cv_long_long_format'i"'
3016 guint64_format='"'$glib_cv_long_long_format'u"'
3019 gint64_constant='(val##i64)'
3020 guint64_constant='(val##ui64)'
3023 glib_size_t=$ac_cv_sizeof_size_t
3024 glib_size_type_define=$glib_size_type
3025 glib_void_p=$ac_cv_sizeof_long
3026 glib_long=$ac_cv_sizeof_void_p
3028 case $glib_size_type in
3030 gsize_modifier='"h"'
3032 gssize_format='"hi"'
3033 glib_msize_type='SHRT'
3039 glib_msize_type='INT'
3042 gsize_modifier='"l"'
3044 gssize_format='"li"'
3045 glib_msize_type='LONG'
3049 gintbits=`expr $ac_cv_sizeof_int \* 8`
3050 glongbits=`expr $ac_cv_sizeof_long \* 8`
3053 case $ac_cv_sizeof_void_p in
3054 $ac_cv_sizeof_int) glib_gpi_cast='' glib_gpui_cast='' ;;
3055 $ac_cv_sizeof_long) glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
3056 *) glib_unknown_void_p=yes ;;
3061 x$ac_cv_func_atexit)
3063 #ifdef NeXT /* @#%@! NeXTStep */
3064 # define g_ATEXIT(proc) (!atexit (proc))
3066 # define g_ATEXIT(proc) (atexit (proc))
3069 x$ac_cv_func_on_exit)
3071 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
3076 x$ac_cv_func_memmove)
3078 #define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END'
3080 x$glib_cv_working_bcopy)
3082 /* memmove isn't available, but bcopy can copy overlapping memory regions */
3083 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
3087 /* memmove isn't found and bcopy can't copy overlapping memory regions,
3088 * so we have to roll our own copy routine. */
3089 void g_memmove (void* dest, const void * src, unsigned long len);"
3094 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
3095 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
3096 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
3100 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
3101 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
3105 if test x$glib_cv_va_val_copy = xno; then
3106 glib_vacopy="\$glib_vacopy
3107 #define G_VA_COPY_AS_ARRAY 1"
3110 if test x$glib_cv_hasinline = xyes; then
3111 glib_inline='#define G_HAVE_INLINE 1'
3113 if test x$glib_cv_has__inline = xyes; then
3114 glib_inline="\$glib_inline
3115 #define G_HAVE___INLINE 1"
3117 if test x$glib_cv_has__inline__ = xyes; then
3118 glib_inline="\$glib_inline
3119 #define G_HAVE___INLINE__ 1"
3122 g_have_gnuc_varargs=$g_have_gnuc_varargs
3123 g_have_iso_c_varargs=$g_have_iso_c_varargs
3124 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
3126 g_can_inline=$g_can_inline
3127 g_have_gnuc_visibility=$g_have_gnuc_visibility
3128 g_have_sunstudio_visibility=$g_have_sunstudio_visibility
3131 x$ac_cv_c_bigendian)
3132 g_byte_order=G_BIG_ENDIAN
3137 g_byte_order=G_LITTLE_ENDIAN
3143 g_pollin=$glib_cv_value_POLLIN
3144 g_pollout=$glib_cv_value_POLLOUT
3145 g_pollpri=$glib_cv_value_POLLPRI
3146 g_pollhup=$glib_cv_value_POLLHUP
3147 g_pollerr=$glib_cv_value_POLLERR
3148 g_pollnval=$glib_cv_value_POLLNVAL
3150 g_stack_grows=$glib_cv_stack_grows
3152 g_have_eilseq=$have_eilseq
3154 case x$have_threads in
3155 xno) g_enable_threads_def="#undef";;
3156 *) g_enable_threads_def="#define";;
3159 g_threads_impl_def=$g_threads_impl
3161 g_mutex_has_default="$mutex_has_default"
3162 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
3163 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
3164 g_mutex_contents="$glib_cv_byte_contents_gmutex"
3166 g_memory_barrier_needed="$glib_memory_barrier_needed"
3168 g_module_suffix="$glib_gmodule_suffix"
3170 g_pid_type="$glib_pid_type"
3173 glib_os="#define G_OS_BEOS"
3176 glib_os="#define G_OS_UNIX
3177 #define G_PLATFORM_WIN32
3178 #define G_WITH_CYGWIN"
3181 glib_os="#define G_OS_WIN32
3182 #define G_PLATFORM_WIN32"
3185 glib_os="#define G_OS_UNIX"
3192 glib-2.0-uninstalled.pc
3194 gmodule-export-2.0.pc
3195 gmodule-no-export-2.0.pc
3196 gmodule-2.0-uninstalled.pc
3197 gmodule-no-export-2.0-uninstalled.pc
3199 gthread-2.0-uninstalled.pc
3201 gobject-2.0-uninstalled.pc
3204 gio-2.0-uninstalled.pc
3205 gio-unix-2.0-uninstalled.pc
3210 build/win32/Makefile
3211 build/win32/dirent/Makefile
3212 build/win32/vs8/Makefile
3214 glib/libcharset/Makefile
3215 glib/gnulib/Makefile
3217 glib/update-pcre/Makefile
3220 gmodule/gmoduleconf.h
3222 gobject/glib-mkenums
3223 gobject/tests/Makefile
3226 gio/xdgmime/Makefile
3227 gio/inotify/Makefile
3232 docs/reference/Makefile
3233 docs/reference/glib/Makefile
3234 docs/reference/glib/version.xml
3235 docs/reference/gobject/Makefile
3236 docs/reference/gobject/version.xml
3237 docs/reference/gio/Makefile
3238 docs/reference/gio/version.xml
3240 tests/gobject/Makefile
3241 tests/refcount/Makefile
3245 AC_CONFIG_COMMANDS([chmod-scripts],
3246 [chmod 0755 glib-zip
3247 chmod 0755 glib-gettextize
3248 chmod 0755 gobject/glib-mkenums])
3250 # we want to invoke this macro solely so that the config.status script
3251 # and automake generated makefiles know about these generated files.
3252 # They are only needed to distcheck the package
3261 gmodule/makefile.msc
3263 gobject/makefile.msc
3265 gthread/makefile.msc