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 # GThread and GIO as a whole, so if changes occurred in any of them, they are
14 # all 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], [21])
26 m4_define([glib_micro_version], [3])
27 m4_define([glib_interface_age], [0])
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])
118 LIB_EXE_MACHINE_FLAG=X86
121 glib_native_win32=yes
122 glib_pid_type='void *'
123 glib_cv_stack_grows=no
124 # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
125 # don't seem to be quite good enough, at least not in mingw-runtime-3.14.
126 # (Sorry, I don't know exactly what is the problem, but it is related to
127 # floating point formatting and decimal point vs. comma.)
128 # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
129 # rigorous enough to notice, though.
130 # So preset the autoconf cache variables.
131 ac_cv_func_vsnprintf_c99=no
132 ac_cv_func_snprintf_c99=no
135 LIB_EXE_MACHINE_FLAG=X64
150 AC_MSG_RESULT([$glib_native_win32])
152 AC_SUBST(LIB_EXE_MACHINE_FLAG)
155 AC_MSG_CHECKING([for Mac OS X Carbon support])
157 #include <Carbon/Carbon.h>
158 #include <CoreServices/CoreServices.h>
159 ], glib_have_carbon=yes)
161 AC_MSG_RESULT([$glib_have_carbon])
163 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
164 AM_CONDITIONAL(OS_WIN32_X64, [test "$LIB_EXE_MACHINE_FLAG" = "X64"])
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 if test "$glib_native_win32" = "yes"; then
170 AC_CHECK_TOOL(WINDRES, windres, no)
171 if test "$WINDRES" = no; then
172 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
174 AC_CHECK_TOOL(NM, nm, no)
175 if test "$NM" = no; then
176 AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
178 AC_CHECK_TOOL(RANLIB, ranlib, :)
179 AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
181 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
183 if test "$glib_native_win32" != yes; then
184 # libtool option to control which symbols are exported
185 # right now, symbols starting with _ are not exported
186 LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
188 # We currently use .def files on Windows
189 LIBTOOL_EXPORT_OPTIONS=
191 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
193 if test "x$glib_have_carbon" = "xyes"; then
194 AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
195 LDFLAGS="$LDFLAGS -framework Carbon"
199 dnl declare --enable-* args and collect ac_help strings
201 AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
202 [turn on debugging @<:@default=glib_debug_default@:>@]),,
203 enable_debug=glib_debug_default)
205 AC_ARG_ENABLE(gc_friendly,
206 [AC_HELP_STRING([--enable-gc-friendly],
207 [turn on garbage collector friendliness [default=no]])],,
208 [enable_gc_friendly=no])
209 AC_ARG_ENABLE(mem_pools,
210 [AC_HELP_STRING([--disable-mem-pools],
211 [disable all glib memory pools])],,
212 [disable_mem_pools=no])
213 AC_ARG_ENABLE(threads,
214 [AC_HELP_STRING([--enable-threads],
215 [turn on basic thread support [default=yes]
216 ([=no] will override --with-threads)])],,
217 [enable_threads=yes])
218 AC_ARG_ENABLE(rebuilds,
219 [AC_HELP_STRING([--disable-rebuilds],
220 [disable all source autogeneration rules])],,
221 [enable_rebuilds=yes])
222 AC_ARG_ENABLE(visibility,
223 [AC_HELP_STRING([--disable-visibility],
224 [don't use ELF visibility attributes])],,
225 [enable_visibility=yes])
227 if test "x$enable_threads" != "xyes"; then
231 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
232 if test "x$enable_gc_friendly" = "xyes"; then
233 AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
239 AC_MSG_CHECKING([whether to disable memory pools])
240 if test "x$disable_mem_pools" = "xno"; then
243 AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
244 AC_SUBST(DISABLE_MEM_POOLS)
248 dnl location to install runtime libraries, e.g. ../../lib to install
249 dnl to /lib if libdir is /usr/lib
250 AC_ARG_WITH(runtime-libdir,
251 [AC_HELP_STRING([--with-runtime-libdir=RELPATH],
252 [Install runtime libraries relative to libdir])],
254 [with_runtime_libdir=""])
255 GLIB_RUNTIME_LIBDIR=$with_runtime_libdir
256 AC_SUBST(GLIB_RUNTIME_LIBDIR)
257 AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
259 dnl Checks for programs.
263 dnl Check for a working C++ compiler, but do not bail out, if none is found.
264 AC_CHECK_PROGS(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" != ""])
280 AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no])
281 if test x$PKG_CONFIG = xno ; then
282 AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
285 if $PKG_CONFIG --atleast-pkgconfig-version 0.16 ; then
288 AC_MSG_ERROR([*** pkg-config too old; version 0.16 or better required.])
291 if test "x$enable_debug" = "xyes"; then
292 if test x$cflags_set != xset ; then
294 *[[\ \ ]]-g[[\ \ ]]*) ;;
295 *) CFLAGS="$CFLAGS -g" ;;
299 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
301 GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
303 if test "x$enable_debug" = "xno"; then
304 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
308 if test "x$enable_visibility" = "xno"; then
309 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DDISABLE_VISIBILITY"
312 # Ensure MSVC-compatible struct packing convention is used when
313 # compiling for Win32 with gcc.
314 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
315 # gcc2 uses "-fnative-struct".
316 if test x"$glib_native_win32" = xyes; then
317 if test x"$GCC" = xyes; then
319 AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
320 if test -z "$ac_cv_prog_CC"; then
323 our_gcc="$ac_cv_prog_CC"
325 case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
327 if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
328 msnative_struct='-fnative-struct'
332 if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
333 msnative_struct='-mms-bitfields'
337 if test x"$msnative_struct" = x ; then
338 AC_MSG_RESULT([no way])
339 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
341 CFLAGS="$CFLAGS $msnative_struct"
342 AC_MSG_RESULT([${msnative_struct}])
346 GLIB_EXTRA_CFLAGS="${msnative_struct}"
347 AC_SUBST(GLIB_EXTRA_CFLAGS)
351 # define a MAINT-like variable REBUILD which is set if Perl
352 # and awk are found, so autogenerated sources can be rebuilt
354 AC_CHECK_PROGS(PERL, [perl5 perl])
355 # We would like indent, but don't require it.
356 AC_CHECK_PROG(INDENT, indent, indent)
358 if test "x$enable_rebuilds" = "xyes" && \
360 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
361 test -n "$AWK" ; then
366 # Need full path to Perl for glib-mkenums
368 if test "x$PERL" != x ; then
369 AC_PATH_PROG(PERL_PATH, [$PERL])
371 if test "x$PERL_PATH" = x ; then
372 PERL_PATH="/usr/bin/env perl"
376 # Need suitable python path for greport
377 AM_PATH_PYTHON(2.4,,PYTHON="/usr/bin/env python2.4")
380 dnl ***********************
381 dnl *** Tests for iconv ***
382 dnl ***********************
384 dnl We do this before the gettext checks, to avoid distortion
386 dnl On Windows we use a native implementation
388 if test x"$glib_native_win32" = xyes; then
391 AC_ARG_WITH(libiconv,
392 [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
393 [use the libiconv library])],,
394 [with_libiconv=maybe])
397 case $with_libiconv in
399 # Check in the C library first
400 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
401 # Check if we have GNU libiconv
402 if test $found_iconv = "no"; then
403 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
405 # Check if we have a iconv in -liconv, possibly from vendor
406 if test $found_iconv = "no"; then
407 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
411 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
414 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
417 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
421 if test "x$found_iconv" = "xno" ; then
422 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
427 AC_ARG_ENABLE(iconv-cache,
428 [AC_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
429 [cache iconv descriptors [default=auto]])],,
430 [enable_iconv_cache=auto])
432 AC_MSG_CHECKING([Whether to cache iconv descriptors])
433 case $enable_iconv_cache in
435 if test $ac_cv_gnu_library_2_1 = yes; then
436 enable_iconv_cache=no
438 enable_iconv_cache=yes
443 *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
447 if test $enable_iconv_cache = yes; then
448 AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
451 AC_MSG_RESULT($enable_iconv_cache)
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
505 dnl when using libtool 2.x create libtool early, because it's used in configure
506 m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
509 if test "x$GCC" = "xyes"; then
511 *[[\ \ ]]-Wall[[\ \ ]]*) ;;
512 *) CFLAGS="$CFLAGS -Wall" ;;
516 CPPFLAGS="$CPPFLAGS -DG_DISABLE_SINGLE_INCLUDES"
518 if test "$glib_native_win32" = "yes"; then
519 if test x$enable_static = xyes -a x$enable_shared = xyes; then
520 AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
522 if test x$enable_static = xyes; then
523 glib_win32_static_compilation=yes
524 GLIB_WIN32_STATIC_COMPILATION_DEFINE="#define GLIB_STATIC_COMPILATION 1
525 #define GOBJECT_STATIC_COMPILATION 1"
526 AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
529 AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
532 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
534 if test $cross_compiling != yes ; then
535 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
538 AC_TRY_RUN([#include <math.h>
539 int main (void) { return (log(1) != log(1.)); }],
540 AC_MSG_RESULT(none needed),
541 glib_save_CFLAGS=$CFLAGS
542 CFLAGS="$CFLAGS -std1"
543 AC_TRY_RUN([#include <math.h>
544 int main (void) { return (log(1) != log(1.)); }],
545 AC_MSG_RESULT(-std1),
547 CFLAGS=$glib_save_CFLAGS
549 [No ANSI prototypes found in library. (-std1 didn't work.)])
555 dnl NeXTStep cc seems to need this
556 AC_MSG_CHECKING([for extra flags for POSIX compliance])
557 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
558 AC_MSG_RESULT(none needed),
559 glib_save_CFLAGS=$CFLAGS
560 CFLAGS="$CFLAGS -posix"
561 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
562 AC_MSG_RESULT(-posix),
564 CFLAGS=$glib_save_CFLAGS
565 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
567 # Checks for header files.
570 # Checks for library functions.
573 AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2)
574 AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
576 AC_CHECK_SIZEOF(char)
577 AC_CHECK_SIZEOF(short)
578 AC_CHECK_SIZEOF(long)
580 AC_CHECK_SIZEOF(void *)
581 AC_CHECK_SIZEOF(long long)
582 AC_CHECK_SIZEOF(__int64)
584 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
588 *** GLib requires a 64 bit type. You might want to consider
589 *** using the GNU C compiler.
593 if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
594 # long long is a 64 bit integer.
595 AC_MSG_CHECKING(for format to printf and scanf a guint64)
596 AC_CACHE_VAL(glib_cv_long_long_format,[
597 for format in ll q I64; do
598 AC_TRY_RUN([#include <stdio.h>
601 long long b, a = -0x3AFAFAFAFAFAFAFALL;
603 sprintf (buffer, "%${format}u", a);
604 sscanf (buffer, "%${format}u", &b);
608 [glib_cv_long_long_format=${format}
612 if test -n "$glib_cv_long_long_format"; then
613 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
614 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
615 if test x"$glib_cv_long_long_format" = xI64; then
616 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
621 elif test x$ac_cv_sizeof___int64 = x8; then
622 # __int64 is a 64 bit integer.
623 AC_MSG_CHECKING(for format to printf and scanf a guint64)
624 # We know this is MSVCRT.DLL, and what the formats are
625 glib_cv_long_long_format=I64
626 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
627 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
628 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
631 dnl long doubles were not used, and a portability problem
635 dnl ok, here we try to check whether the systems prototypes for
636 dnl malloc and friends actually match the prototypes provided
637 dnl by gmem.h (keep in sync). i currently only know how to check
638 dnl this reliably with gcc (-Werror), improvements for other
639 dnl compilers are apprechiated.
640 SANE_MALLOC_PROTOS=no
641 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
642 glib_save_CFLAGS=$CFLAGS
643 if test "x$GCC" = "xyes"; then
644 CFLAGS="$CFLAGS -Werror"
645 AC_TRY_COMPILE([#include <stdlib.h>], [
646 void* (*my_calloc_p) (size_t, size_t) = calloc;
647 void* (*my_malloc_p) (size_t) = malloc;
648 void (*my_free_p) (void*) = free;
649 void* (*my_realloc_p) (void*, size_t) = realloc;
655 AC_DEFINE(SANE_MALLOC_PROTOS, 1,
656 [Define if you have correct malloc prototypes])
657 SANE_MALLOC_PROTOS=yes)
659 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
660 CFLAGS=$glib_save_CFLAGS
663 dnl check in which direction the stack grows
665 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
667 volatile int *a = 0, *b = 0;
669 int main () { volatile int y = 7; a = &y; foo (); return b > a; }
670 void foo (void) { volatile int x = 5; b = &x; }
672 glib_cv_stack_grows=no
674 glib_cv_stack_grows=yes
678 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
679 dnl truely know which ones of `inline', `__inline' and `__inline__' are
680 dnl actually supported.
681 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
683 __inline int foo () { return 0; }
684 int main () { return foo (); }
686 glib_cv_has__inline=yes
688 glib_cv_has__inline=no
691 case x$glib_cv_has__inline in
692 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
694 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
696 __inline__ int foo () { return 0; }
697 int main () { return foo (); }
699 glib_cv_has__inline__=yes
701 glib_cv_has__inline__=no
704 case x$glib_cv_has__inline__ in
705 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
707 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
710 inline int foo () { return 0; }
711 int main () { return foo (); }
713 glib_cv_hasinline=yes
718 case x$glib_cv_hasinline in
719 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
722 # if we can use inline functions in headers
723 AC_MSG_CHECKING(if inline functions in headers work)
725 #if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
727 # define inline __inline__
728 #elif !defined (G_HAVE_INLINE)
730 # if defined (G_HAVE___INLINE__)
731 # define inline __inline__
732 # elif defined (G_HAVE___INLINE)
733 # define inline __inline
737 int glib_test_func2 (int);
740 glib_test_func1 (void) {
741 return glib_test_func2 (1);
747 }],[g_can_inline=yes],[g_can_inline=no])
748 AC_MSG_RESULT($g_can_inline)
750 dnl *** check for working do while(0) macros ***
751 AC_CACHE_CHECK([for working do while(0) macros], g_cv_support_dowhile_macros, [
753 #define STMT_START do
754 #define STMT_END while(0)
755 #define STMT_TEST STMT_START { i = 0; } STMT_END
756 int main(void) { int i = 1; STMT_TEST; return i; }],
757 [g_cv_support_dowhile_macros=yes],
758 [g_cv_support_dowhile_macros=no],
759 [g_cv_support_dowhile_macros=yes])
761 if test x$g_cv_support_dowhile_macros = xyes; then
762 AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
765 # check for flavours of varargs macros
766 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
768 int a(int p1, int p2, int p3);
769 #define call_a(...) a(1,__VA_ARGS__)
771 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
772 AC_MSG_RESULT($g_have_iso_c_varargs)
774 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
775 if test "$CXX" = ""; then
777 g_have_iso_cxx_varargs=no
781 int a(int p1, int p2, int p3);
782 #define call_a(...) a(1,__VA_ARGS__)
784 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
787 AC_MSG_RESULT($g_have_iso_cxx_varargs)
789 AC_MSG_CHECKING(for GNUC varargs macros)
791 int a(int p1, int p2, int p3);
792 #define call_a(params...) a(1,params)
794 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
795 AC_MSG_RESULT($g_have_gnuc_varargs)
797 # check for GNUC visibility support
798 AC_MSG_CHECKING(for GNUC visibility attribute)
799 GLIB_CHECK_COMPILE_WARNINGS([
801 __attribute__ ((visibility ("hidden")))
806 __attribute__ ((visibility ("internal")))
811 __attribute__ ((visibility ("protected")))
816 __attribute__ ((visibility ("default")))
820 int main (int argc, char **argv)
828 ],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
829 AC_MSG_RESULT($g_have_gnuc_visibility)
830 AM_CONDITIONAL(HAVE_GNUC_VISIBILITY, [test x$g_have_gnuc_visibility = xyes])
832 AC_MSG_CHECKING([whether using Sun Studio C compiler])
833 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550)
835 # include "error: this is not Sun Studio."
837 ]], [[]])], [ g_have_sunstudio_visibility=yes ], [ g_have_sunstudio_visibility=no ])
838 AC_MSG_RESULT($g_have_sunstudio_visibility)
839 AM_CONDITIONAL(HAVE_SUNSTUDIO_VISIBILITY, [test x$g_have_sunstudio_visibility = xyes])
841 # check for bytesex stuff
843 if test x$ac_cv_c_bigendian = xuniversal ; then
844 AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __BIG_ENDIAN
846 #error Not a big endian.
848 ac_cv_c_bigendian=yes
849 ,AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __LITTLE_ENDIAN
851 #error Not a little endian.
854 ,AC_MSG_WARN([Could not determine endianness.])))
858 # check for header files
859 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h grp.h sys/param.h sys/poll.h sys/resource.h])
860 AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
861 AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h sched.h malloc.h])
862 AC_CHECK_HEADERS([sys/vfs.h sys/mount.h sys/vmount.h sys/statfs.h sys/statvfs.h])
863 AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h sys/sysctl.h fstab.h])
864 AC_CHECK_HEADERS([sys/uio.h])
866 # check for structure fields
867 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])
868 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename, struct statfs.f_bavail],,, [#include <sys/types.h>
869 #include <sys/stat.h>
871 #ifdef HAVE_SYS_STATFS_H
872 #include <sys/statfs.h>
874 #ifdef HAVE_SYS_PARAM_H
875 #include <sys/param.h>
877 #ifdef HAVE_SYS_MOUNT_H
878 #include <sys/mount.h>
880 # struct statvfs.f_basetype is available on Solaris but not for Linux.
881 AC_CHECK_MEMBERS([struct statvfs.f_basetype],,, [#include <sys/statvfs.h>])
883 # Checks for libcharset
886 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
887 AC_CHECK_FUNCS(setlocale)
889 # check additional type sizes
890 AC_CHECK_SIZEOF(size_t)
892 dnl Try to figure out whether gsize, gssize should be long or int
893 AC_MSG_CHECKING([for the appropriate definition for size_t])
895 case $ac_cv_sizeof_size_t in
905 $ac_cv_sizeof_long_long)
906 glib_size_type='long long'
908 $ac_cv_sizeof__int64)
909 glib_size_type='__int64'
911 *) AC_MSG_ERROR([No type matching size_t in size])
915 dnl If int/long are the same size, we see which one produces
916 dnl warnings when used in the location as size_t. (This matters
919 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
920 test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
921 GLIB_CHECK_COMPILE_WARNINGS([
922 #if defined(_AIX) && !defined(__GNUC__)
923 #pragma options langlvl=stdc89
929 unsigned int *size_int = &s;
930 return (int)*size_int;
932 ],glib_size_type=int,
933 [GLIB_CHECK_COMPILE_WARNINGS([
934 #if defined(_AIX) && !defined(__GNUC__)
935 #pragma options langlvl=stdc89
941 unsigned long *size_long = &s;
942 return (int)*size_long;
944 ],glib_size_type=long)])
947 AC_MSG_RESULT(unsigned $glib_size_type)
949 # Check for some functions
950 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk)
951 AC_CHECK_FUNCS(chown lchown fchmod fchown link statvfs statfs utimes getgrgid getpwuid)
952 AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getmntinfo)
953 # Check for high-resolution sleep functions
954 AC_CHECK_FUNCS(nanosleep nsleep)
956 AC_CHECK_HEADERS(crt_externs.h)
957 AC_CHECK_FUNCS(_NSGetEnviron)
959 AC_FUNC_VSNPRINTF_C99
960 AC_FUNC_PRINTF_UNIX98
962 # Internet address families
963 if test $glib_native_win32 = yes; then
964 glib_inet_includes=["
965 #include <winsock2.h>
968 glib_inet_includes=["
969 #include <sys/types.h>
970 #include <sys/socket.h>
975 GLIB_CHECK_VALUE(AF_INET, $glib_inet_includes, glib_failed=true)
976 GLIB_CHECK_VALUE(AF_INET6, $glib_inet_includes, glib_failed=true)
977 # winsock defines this even though it doesn't support it
978 GLIB_CHECK_VALUE(AF_UNIX, $glib_inet_includes, glib_failed=true)
979 if $glib_failed ; then
980 AC_MSG_ERROR([Could not determine values for AF_INET* constants])
984 GLIB_CHECK_VALUE(MSG_PEEK, $glib_inet_includes, glib_failed=true)
985 GLIB_CHECK_VALUE(MSG_OOB, $glib_inet_includes, glib_failed=true)
986 GLIB_CHECK_VALUE(MSG_DONTROUTE, $glib_inet_includes, glib_failed=true)
987 if $glib_failed ; then
988 AC_MSG_ERROR([Could not determine values for MSG_* constants])
991 AC_CHECK_FUNCS(getprotobyname_r endservent)
992 AC_CHECK_HEADERS([netdb.h winsock2.h mswsock.h])
995 if test $glib_native_win32 = no; then
996 AC_CHECK_FUNCS(strndup setresuid setreuid)
997 AC_CHECK_HEADERS(sys/prctl.h arpa/nameser_compat.h)
998 AC_CHECK_FUNC(res_query, ,
999 [AC_CHECK_LIB(resolv, res_query, [ LIBASYNCNS_LIBADD="-lresolv" ],
1001 LIBS="-lresolv $LIBS"
1002 AC_MSG_CHECKING([for res_query in -lresolv (alternate version)])
1004 [AC_LANG_PROGRAM([[#include <resolv.h>]], [[res_query(0,0,0,0,0)]])],
1005 [ AC_MSG_RESULT(yes)
1006 LIBASYNCNS_LIBADD="-lresolv" ],
1008 AC_CHECK_LIB(bind, res_query,
1009 [ LIBASYNCNS_LIBADD="-lbind" ],
1010 [ AC_MSG_ERROR(res_query not found) ] ) ] )
1015 AC_SUBST(LIBASYNCNS_LIBADD)
1020 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
1021 AC_DEFINE(_XOPEN_SOURCE, 2, Needed to get declarations for msg_control and msg_controllen on Solaris)
1022 AC_DEFINE(__EXTENSIONS__, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
1027 dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
1029 if test "$ac_cv_func_statfs" = yes ; then
1030 AC_MSG_CHECKING([number of arguments to statfs()])
1031 AC_TRY_COMPILE([#include <unistd.h>
1032 #ifdef HAVE_SYS_PARAM_H
1033 #include <sys/param.h>
1035 #ifdef HAVE_SYS_VFS_H
1036 #include <sys/vfs.h>
1038 #ifdef HAVE_SYS_MOUNT_H
1039 #include <sys/mount.h>
1041 #ifdef HAVE_SYS_STATFS_H
1042 #include <sys/statfs.h>
1043 #endif], [struct statfs st;
1044 statfs(NULL, &st);],[
1046 AC_DEFINE(STATFS_ARGS, 2, [Number of arguments to statfs()])],[
1047 AC_TRY_COMPILE([#include <unistd.h>
1048 #ifdef HAVE_SYS_PARAM_H
1049 #include <sys/param.h>
1051 #ifdef HAVE_SYS_VFS_H
1052 #include <sys/vfs.h>
1054 #ifdef HAVE_SYS_MOUNT_H
1055 #include <sys/mount.h>
1057 #ifdef HAVE_SYS_STATFS_H
1058 #include <sys/statfs.h>
1059 #endif], [struct statfs st;
1060 statfs(NULL, &st, sizeof (st), 0);],[
1062 AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
1063 AC_MSG_RESULT(unknown)
1064 AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
1068 # Check whether to use an included printf
1071 AC_ARG_ENABLE(included-printf,
1072 [AC_HELP_STRING([--enable-included-printf],
1073 [use included printf [default=auto]])],
1074 enable_included_printf="$enableval")
1076 need_included_printf=no
1077 if test "x$enable_included_printf" = "xyes" ; then
1078 need_included_printf=yes
1080 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
1081 need_included_printf=yes
1083 if test "$ac_cv_func_printf_unix98" != "yes" ; then
1084 need_included_printf=yes
1086 if test "x$ac_cv_sizeof_long_long" = "x8" &&
1087 test -z "$glib_cv_long_long_format" ; then
1088 need_included_printf=yes
1091 if test "x$enable_included_printf" = "xno" &&
1092 test "x$need_included_printf" = "xyes" ; then
1094 *** Your C library's printf doesn't appear to have the features that
1095 *** GLib needs, but you specified --enable-included-printf=no.])
1098 enable_included_printf=$need_included_printf
1100 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
1101 if test "$enable_included_printf" != "yes" ; then
1102 AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
1104 if test -z "$glib_cv_long_long_format" ; then
1105 glib_cv_long_long_format="ll"
1107 AC_DEFINE(HAVE_VASPRINTF,1)
1110 # Checks needed for gnulib vasnprintf
1112 jm_AC_TYPE_LONG_LONG
1117 AC_CHECK_TYPES(ptrdiff_t)
1119 AC_CHECK_FUNCS([snprintf wcslen])
1120 AC_FUNC_SNPRINTF_C99
1122 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
1123 # The check is borrowed from the PERL Configure script.
1124 if test "$ac_cv_func_memmove" != "yes"; then
1125 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
1126 glib_cv_working_bcopy,[AC_TRY_RUN([
1128 char buf[128], abc[128], *b;
1129 int len, off, align;
1130 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
1131 for (align = 7; align >= 0; align--) {
1132 for (len = 36; len; len--) {
1133 b = buf+align; bcopy(abc, b, len);
1134 for (off = 1; off <= len; off++) {
1135 bcopy(b, b+off, len); bcopy(b+off, b, len);
1136 if (bcmp(b, abc, len)) return(1);
1141 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
1143 GLIB_ASSERT_SET(glib_cv_working_bcopy)
1144 if test "$glib_cv_working_bcopy" = "yes"; then
1145 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
1149 # Check for sys_errlist
1150 AC_MSG_CHECKING(for sys_errlist)
1152 extern char *sys_errlist[];
1153 extern int sys_nerr;
1154 sys_errlist[sys_nerr-1][0] = 0;
1155 ], glib_ok=yes, glib_ok=no)
1156 AC_MSG_RESULT($glib_ok)
1157 if test "$glib_ok" = "no"; then
1158 AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
1161 # Check for sys_siglist
1162 AC_MSG_CHECKING(for sys_siglist)
1164 extern char *sys_siglist[];
1165 exit (sys_siglist[0]);
1166 ], glib_ok=yes, glib_ok=no)
1167 AC_MSG_RESULT($glib_ok)
1168 if test "$glib_ok" = "no"; then
1169 AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
1172 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
1173 AC_MSG_CHECKING(for sys_siglist declaration)
1174 AC_TRY_COMPILE([#include <signal.h>], [
1175 strlen (sys_siglist[0]);
1176 ], glib_ok=yes, glib_ok=no)
1177 AC_MSG_RESULT($glib_ok)
1178 if test "$glib_ok" = "no"; then
1179 AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
1182 # Check if <sys/select.h> needs to be included for fd_set
1183 AC_MSG_CHECKING([for fd_set])
1184 AC_TRY_COMPILE([#include <sys/types.h>],
1185 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
1186 if test "$gtk_ok" = "yes"; then
1187 AC_MSG_RESULT([yes, found in sys/types.h])
1189 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
1190 if test "$gtk_ok" = "yes"; then
1191 # *** FIXME: give it a different name
1192 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
1193 AC_MSG_RESULT([yes, found in sys/select.h])
1195 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
1200 dnl *** check for sane realloc() ***
1201 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
1202 AC_TRY_RUN([#include <stdlib.h>
1204 return realloc (0, sizeof (int)) == 0;
1206 [glib_cv_sane_realloc=yes],
1207 [glib_cv_sane_realloc=no],
1208 [glib_cv_sane_realloc=yes])
1210 if test x$glib_cv_sane_realloc = xyes; then
1211 AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
1214 dnl Check for nl_langinfo and CODESET
1215 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
1216 AC_TRY_COMPILE([#include <langinfo.h>],
1217 [char *codeset = nl_langinfo (CODESET);],
1218 [glib_cv_langinfo_codeset=yes],
1219 [glib_cv_langinfo_codeset=no])])
1220 if test x$glib_cv_langinfo_codeset = xyes; then
1221 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
1224 dnl ****************************************
1225 dnl *** posix_memalign ***
1226 dnl ****************************************
1227 AC_MSG_CHECKING(for a compliant posix_memalign() implementation)
1228 AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
1229 glib_cv_compliant_posix_memalign=0
1230 if test "$ac_cv_func_posix_memalign" = "yes" ; then
1232 #define _XOPEN_SOURCE 600
1233 #include <stdlib.h> /* posix_memalign() should be defined here */
1234 /* some systems break if #include <malloc.h> used */
1235 static void test_memalign (size_t boundary, size_t size) {
1237 if (posix_memalign (&mem, boundary, size) != 0 || !mem)
1243 test_memalign ( 128, 128 - 2 * sizeof (void*));
1244 test_memalign ( 256, 256 - 2 * sizeof (void*));
1245 test_memalign ( 512, 512 - 2 * sizeof (void*));
1246 test_memalign ( 1024, 1024 - 2 * sizeof (void*));
1247 test_memalign ( 2048, 2048 - 2 * sizeof (void*));
1248 test_memalign ( 4096, 4096 - 2 * sizeof (void*));
1249 test_memalign ( 8192, 8192 - 2 * sizeof (void*));
1250 test_memalign (16384, 16384 - 2 * sizeof (void*));
1251 test_memalign (32768, 32768 - 2 * sizeof (void*));
1252 exit (0); /* success */
1255 [glib_cv_compliant_posix_memalign=1], [], [:])
1259 if test "$glib_cv_compliant_posix_memalign" = "1"; then
1261 AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
1267 dnl ****************************************
1268 dnl *** strlcpy/strlcat ***
1269 dnl ****************************************
1271 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
1272 AC_TRY_RUN([#include <stdlib.h>
1276 (void) strlcpy (p, "hi", 10);
1277 if (strlcat (p, "bye", 0) != 3)
1280 }], glib_cv_have_strlcpy=yes,
1281 glib_cv_have_strlcpy=no,
1282 glib_cv_have_strlcpy=no)])
1283 if test "$glib_cv_have_strlcpy" = "yes"; then
1284 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
1288 dnl **********************
1289 dnl *** va_copy checks ***
1290 dnl **********************
1291 dnl we currently check for all three va_copy possibilities, so we get
1292 dnl all results in config.log for bug reports.
1293 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
1294 AC_LINK_IFELSE([#include <stdarg.h>
1296 void f (int i, ...) {
1297 va_list args1, args2;
1298 va_start (args1, i);
1299 va_copy (args2, args1);
1300 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1302 va_end (args1); va_end (args2);
1308 [glib_cv_va_copy=yes],
1309 [glib_cv_va_copy=no])
1311 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
1312 AC_LINK_IFELSE([#include <stdarg.h>
1314 void f (int i, ...) {
1315 va_list args1, args2;
1316 va_start (args1, i);
1317 __va_copy (args2, args1);
1318 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1320 va_end (args1); va_end (args2);
1326 [glib_cv___va_copy=yes],
1327 [glib_cv___va_copy=no])
1330 if test "x$glib_cv_va_copy" = "xyes"; then
1331 g_va_copy_func=va_copy
1332 else if test "x$glib_cv___va_copy" = "xyes"; then
1333 g_va_copy_func=__va_copy
1337 if test -n "$g_va_copy_func"; then
1338 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
1341 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
1342 AC_TRY_RUN([#include <stdarg.h>
1344 void f (int i, ...) {
1345 va_list args1, args2;
1346 va_start (args1, i);
1348 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1350 va_end (args1); va_end (args2);
1356 [glib_cv_va_val_copy=yes],
1357 [glib_cv_va_val_copy=no],
1358 [glib_cv_va_val_copy=yes])
1361 if test "x$glib_cv_va_val_copy" = "xno"; then
1362 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
1365 dnl ***********************
1366 dnl *** g_module checks ***
1367 dnl ***********************
1369 G_MODULE_LIBS_EXTRA=
1370 G_MODULE_PLUGIN_LIBS=
1371 if test x"$glib_native_win32" = xyes; then
1372 dnl No use for this on Win32
1376 G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1378 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1379 G_MODULE_NEED_USCORE=0
1380 G_MODULE_BROKEN_RTLD_GLOBAL=0
1381 G_MODULE_HAVE_DLERROR=0
1382 dnl *** force native WIN32 shared lib loader
1383 if test -z "$G_MODULE_IMPL"; then
1385 *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1388 dnl *** force native AIX library loader
1389 dnl *** dlopen() filepath must be of the form /path/libname.a(libname.so)
1390 if test -z "$G_MODULE_IMPL"; then
1392 *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
1395 dnl *** dlopen() and dlsym() in system libraries
1396 if test -z "$G_MODULE_IMPL"; then
1397 AC_CHECK_FUNC(dlopen,
1398 [AC_CHECK_FUNC(dlsym,
1399 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1402 dnl *** load_image (BeOS)
1403 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
1404 AC_CHECK_LIB(root, load_image,
1405 [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
1406 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1407 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1408 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1411 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1412 if test -z "$G_MODULE_IMPL"; then
1413 AC_CHECK_FUNC(NSLinkModule,
1414 [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1415 G_MODULE_NEED_USCORE=1],
1418 dnl *** dlopen() and dlsym() in libdl
1419 if test -z "$G_MODULE_IMPL"; then
1420 AC_CHECK_LIB(dl, dlopen,
1421 [AC_CHECK_LIB(dl, dlsym,
1423 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1426 dnl *** shl_load() in libdld (HP-UX)
1427 if test -z "$G_MODULE_IMPL"; then
1428 AC_CHECK_LIB(dld, shl_load,
1429 [G_MODULE_LIBS=-ldld
1430 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1433 dnl *** additional checks for G_MODULE_IMPL_DL
1434 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1436 LDFLAGS_orig="$LDFLAGS"
1437 LIBS="$G_MODULE_LIBS $LIBS"
1438 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1439 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1440 echo "void glib_plugin_test(void) { }" > plugin.c
1441 ${SHELL} ./libtool --mode=compile ${CC} -shared \
1442 -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
1443 AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1444 glib_cv_rtldglobal_broken,[
1448 # define RTLD_GLOBAL 0
1451 # define RTLD_LAZY 0
1453 int glib_plugin_test;
1455 void *handle, *global, *local;
1456 global = &glib_plugin_test;
1457 handle = dlopen ("./.libs/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
1458 if (!handle) return 0;
1459 local = dlsym (handle, "glib_plugin_test");
1460 return global == local;
1462 [glib_cv_rtldglobal_broken=no],
1463 [glib_cv_rtldglobal_broken=yes],
1464 [glib_cv_rtldglobal_broken=no])
1465 rm -f plugin.c plugin.o plugin.lo .libs/plugin.o
1466 rmdir .libs 2>/dev/null
1468 if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1469 G_MODULE_BROKEN_RTLD_GLOBAL=1
1471 G_MODULE_BROKEN_RTLD_GLOBAL=0
1473 dnl *** check whether we need preceeding underscores
1474 AC_CACHE_CHECK([for preceeding underscore in symbols],
1476 AC_TRY_RUN([#include <dlfcn.h>
1477 int glib_underscore_test (void) { return 42; }
1479 void *f1 = (void*)0, *f2 = (void*)0, *handle;
1480 handle = dlopen ((void*)0, 0);
1482 f1 = dlsym (handle, "glib_underscore_test");
1483 f2 = dlsym (handle, "_glib_underscore_test");
1484 } return (!f2 || f1);
1486 [glib_cv_uscore=yes],
1487 [glib_cv_uscore=no],
1489 rm -f plugin.c plugin.$ac_objext plugin.lo
1491 GLIB_ASSERT_SET(glib_cv_uscore)
1492 if test "x$glib_cv_uscore" = "xyes"; then
1493 G_MODULE_NEED_USCORE=1
1495 G_MODULE_NEED_USCORE=0
1498 LDFLAGS="$LDFLAGS_orig"
1499 dnl *** check for having dlerror()
1500 AC_CHECK_FUNC(dlerror,
1501 [G_MODULE_HAVE_DLERROR=1],
1502 [G_MODULE_HAVE_DLERROR=0])
1505 dnl *** done, have we got an implementation?
1506 if test -z "$G_MODULE_IMPL"; then
1508 G_MODULE_SUPPORTED=false
1510 G_MODULE_SUPPORTED=true
1513 AC_MSG_CHECKING(for the suffix of module shared libraries)
1515 shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
1517 module=yes eval std_shrext=$shrext_cmds
1518 # chop the initial dot
1519 glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'`
1520 AC_MSG_RESULT(.$glib_gmodule_suffix)
1521 # any reason it may fail?
1522 if test "x$glib_gmodule_suffix" = x; then
1523 AC_MSG_ERROR(Cannot determine shared library suffix from libtool)
1526 AC_SUBST(G_MODULE_SUPPORTED)
1527 AC_SUBST(G_MODULE_IMPL)
1528 AC_SUBST(G_MODULE_LIBS)
1529 AC_SUBST(G_MODULE_LIBS_EXTRA)
1530 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1531 AC_SUBST(G_MODULE_LDFLAGS)
1532 AC_SUBST(G_MODULE_HAVE_DLERROR)
1533 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1534 AC_SUBST(G_MODULE_NEED_USCORE)
1535 AC_SUBST(GLIB_DEBUG_FLAGS)
1537 dnl **********************
1538 dnl *** g_spawn checks ***
1539 dnl **********************
1541 AC_MSG_CHECKING(for gspawn implementation)
1544 GSPAWN=gspawn-win32.lo
1550 AC_MSG_RESULT($GSPAWN)
1553 dnl *************************
1554 dnl *** GIOChannel checks ***
1555 dnl *************************
1557 AC_MSG_CHECKING(for GIOChannel implementation)
1569 dnl *********************************
1570 dnl *** Directory for GIO modules ***
1571 dnl *********************************
1573 AC_ARG_WITH(gio-module-dir,
1574 [AC_HELP_STRING([--with-gio-module-dir=PATH],
1575 [Load gio modules from this directory [LIBDIR/gio/modules]])],
1577 [with_gio_module_dir='${libdir}/gio/modules'])
1578 GIO_MODULE_DIR=$with_gio_module_dir
1579 AC_SUBST(GIO_MODULE_DIR)
1581 dnl **********************************
1582 dnl *** Check for libselinux (GIO) ***
1583 dnl **********************************
1584 AC_ARG_ENABLE(selinux, [ --disable-selinux build without selinux support])
1587 if test "x$enable_selinux" != "xno"; then
1589 AC_CHECK_LIB(selinux, is_selinux_enabled,
1590 [AC_CHECK_HEADERS(selinux/selinux.h,
1591 [AC_CHECK_LIB(selinux, lgetfilecon_raw,
1592 [AC_DEFINE(HAVE_SELINUX, 1, [Define to 1 if libselinux is available])
1593 SELINUX_LIBS="-lselinux"
1598 AC_SUBST(SELINUX_LIBS)
1600 dnl *****************************
1601 dnl ** Check for inotify (GIO) **
1602 dnl *****************************
1604 AC_CHECK_HEADERS([sys/inotify.h],
1607 AC_CHECK_FUNCS(inotify_init1)
1610 AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
1612 dnl *********************************
1613 dnl ** Check for Solaris FEN (GIO) **
1614 dnl *********************************
1618 #ifndef PORT_SOURCE_FILE
1619 #error "Please upgrade to Nevada 72 or above to suppoert FEN"
1621 int main() { return 0; } ],
1626 AM_CONDITIONAL(HAVE_FEN, [test "$fen_support" = "yes"])
1628 dnl ****************************
1629 dnl *** Checks for FAM (GIO) ***
1630 dnl ****************************
1632 should_disable_fam=no
1634 AC_ARG_ENABLE(fam, [ --disable-fam build without enabling fam for file system monitoring],
1636 if test "x$enable_fam" = "xno"; then
1637 should_disable_fam=yes
1638 echo "Not building FAM support"
1644 if test "x$should_disable_fam" = "xno"; then
1645 AC_CHECK_LIB(fam, FAMOpen,
1646 [AC_CHECK_HEADERS(fam.h,
1647 [AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
1648 AC_CHECK_LIB(fam, FAMNoExists,
1649 AC_DEFINE(HAVE_FAM_NO_EXISTS, [], [Define if we have FAMNoExists in fam]))
1652 AC_MSG_WARN(*** FAM support will not be built (header files not found) ***))],
1653 AC_MSG_WARN(*** FAM support will not be built (FAM library not found) ***))
1656 AM_CONDITIONAL(HAVE_FAM, [test "$fam_support" = "yes"])
1659 dnl *****************************
1660 dnl *** Check for xattr (GIO) ***
1661 dnl *****************************
1662 AC_ARG_ENABLE(xattr, [ --disable-xattr build without xattr support])
1665 if test "x$enable_xattr" != "xno"; then
1667 dnl either glibc or libattr can provide xattr support
1669 dnl for both of them, we check for getxattr being in
1670 dnl the library and a valid xattr header.
1673 AC_CHECK_LIB(c, getxattr,
1674 [AC_CHECK_HEADERS(sys/xattr.h,
1675 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1679 if test "x$msg_xattr" != "xyes"; then
1680 dnl failure. try libattr
1681 AC_CHECK_LIB(attr, getxattr,
1682 [AC_CHECK_HEADERS(attr/xattr.h,
1683 [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
1689 if test "x$msg_xattr" = "xyes"; then
1690 AC_MSG_CHECKING([for XATTR_NOFOLLOW])
1693 #ifdef HAVE_SYS_TYPES_H
1694 #include <sys/types.h>
1696 #ifdef HAVE_SYS_XATTR_H
1697 #include <sys/xattr.h>
1698 #elif HAVE_ATTR_XATTR_H
1699 #include <attr/xattr.h>
1702 [ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);],
1704 AC_DEFINE([HAVE_XATTR_NOFOLLOW], [1], [Define to 1 if xattr API uses XATTR_NOFOLLOW])
1705 AC_MSG_RESULT([yes])
1707 [AC_MSG_RESULT([no])]
1712 AC_SUBST(XATTR_LIBS)
1714 dnl ****************************************
1715 dnl *** platform dependent source checks ***
1716 dnl ****************************************
1718 AC_MSG_CHECKING(for platform-dependent source)
1720 *-*-cygwin*|*-*-mingw*)
1721 PLATFORMDEP=gwin32.lo
1727 AC_MSG_RESULT($PLATFORMDEP)
1728 AC_SUBST(PLATFORMDEP)
1730 AC_MSG_CHECKING([whether to compile timeloop])
1732 *-*-cygwin*|*-*-mingw*|*-*-minix)
1739 AC_MSG_RESULT($enable_timeloop)
1740 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1742 AC_MSG_CHECKING([if building for some Win32 platform])
1744 *-*-mingw*|*-*-cygwin*)
1751 AC_MSG_RESULT($platform_win32)
1752 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1754 dnl ***********************
1755 dnl *** g_thread checks ***
1756 dnl ***********************
1758 AC_ARG_WITH(threads,
1759 [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/win32@:>@],
1760 [specify a thread implementation to use])],
1761 [if test "x$with_threads" = x; then
1764 want_threads=$with_threads
1767 if test "x$enable_threads" = "xno"; then
1771 dnl error and warning message
1772 dnl *************************
1774 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1775 computer. GLib will not have a default thread implementation."
1777 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1778 platform (normally it's "_REENTRANT"). I'll not use any flag on
1779 compilation now, but then your programs might not work.
1780 Please provide information on how it is done on your system."
1782 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1785 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1786 provide information on your thread implementation.
1787 You can also run 'configure --disable-threads'
1788 to compile without thread support."
1790 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1791 functions will not be MT-safe during their first call because
1792 there is no working 'getpwuid_r' on your system."
1794 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1795 because there is no 'localtime_r' on your system."
1797 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1798 crude surrogate will be used. If you happen to know a
1799 yield function for your system, please inform the GLib
1802 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for
1803 threads on your system. Thus threads can only have the default
1804 priority. If you happen to know these main/max
1805 priorities, please inform the GLib developers."
1807 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1808 linking threaded applications. As GLib cannot do that
1809 automatically, you will get an linkg error everytime you are
1810 not using the right compiler. In that case you have to relink
1811 with the right compiler. Ususally just '_r' is appended
1812 to the compiler name."
1814 dnl determination of thread implementation
1815 dnl ***************************************
1817 # have_threads=no means no thread support
1818 # have_threads=none means no default thread implementation
1821 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1822 || test "x$want_threads" = xdce; then
1823 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1824 # -U_OSF_SOURCE is for Digital UNIX 4.0d
1825 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1826 glib_save_CPPFLAGS="$CPPFLAGS"
1827 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1828 if test "x$have_threads" = xno; then
1829 AC_TRY_COMPILE([#include <pthread.h>],
1830 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1833 if test "x$have_threads" = xno; then
1834 AC_TRY_COMPILE([#include <pthread.h>],
1836 pthread_mutex_init (&m, pthread_mutexattr_default);],
1839 # Tru64Unix requires -pthread to find pthread.h. See #103020
1840 CPPFLAGS="$CPPFLAGS -pthread"
1841 if test "x$have_threads" = xno; then
1842 AC_TRY_COMPILE([#include <pthread.h>],
1843 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1846 CPPFLAGS="$glib_save_CPPFLAGS"
1848 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1855 if test "x$want_threads" = xnone; then
1859 AC_MSG_CHECKING(for thread implementation)
1861 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1862 AC_MSG_RESULT(none available)
1863 AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1865 AC_MSG_RESULT($have_threads)
1869 dnl determination of G_THREAD_CFLAGS
1870 dnl ********************************
1873 G_THREAD_LIBS_EXTRA=
1877 dnl Test program for basic POSIX threads functionality
1879 m4_define([glib_thread_test],[
1880 #include <pthread.h>
1882 void* func(void* data) {check_me = 42; return &check_me;}
1886 pthread_create (&t, $1, func, 0);
1887 pthread_join (t, &ret);
1888 return (check_me != 42 || ret != &check_me);
1892 dnl Test program for sched_get_priority_min()
1894 m4_define([glib_sched_priority_test],[
1899 return sched_get_priority_min(SCHED_OTHER)==-1
1903 if test x"$have_threads" != xno; then
1905 if test x"$have_threads" = xposix; then
1906 # First we test for posix, whether -pthread or -pthreads do the trick as
1907 # both CPPFLAG and LIBS.
1908 # One of them does for most gcc versions and some other platforms/compilers
1909 # too and could be considered as the canonical way to go.
1911 *-*-cygwin*|*-*-darwin*)
1912 # skip cygwin and darwin -pthread or -pthreads test
1915 # These compiler/linker flags work with both Sun Studio and gcc
1916 # Sun Studio expands -mt to -D_REENTRANT and -lthread
1917 # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
1918 G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
1919 G_THREAD_LIBS="-lpthread -lthread"
1922 for flag in pthread pthreads mt; do
1923 glib_save_CFLAGS="$CFLAGS"
1924 CFLAGS="$CFLAGS -$flag"
1925 AC_TRY_RUN(glib_thread_test(0),
1926 glib_flag_works=yes,
1928 [AC_LINK_IFELSE(glib_thread_test(0),
1929 glib_flag_works=yes,
1930 glib_flag_works=no)])
1931 CFLAGS="$glib_save_CFLAGS"
1932 if test $glib_flag_works = yes ; then
1933 G_THREAD_CFLAGS=-$flag
1934 G_THREAD_LIBS=-$flag
1942 if test x"$G_THREAD_CFLAGS" = x; then
1944 # The canonical -pthread[s] does not work. Try something different.
1948 if test x"$GCC" = xyes; then
1949 # GCC 3.0 and above needs -pthread.
1950 # Should be coverd by the case above.
1951 # GCC 2.x and below needs -mthreads
1952 G_THREAD_CFLAGS="-mthreads"
1953 G_THREAD_LIBS=$G_THREAD_CFLAGS
1955 # We are probably using the aix compiler. Normaly a
1956 # program would have to be compiled with the _r variant
1957 # of the corresponding compiler, but we as GLib cannot
1958 # do that: but the good news is that for compiling the
1959 # only difference is the added -D_THREAD_SAFE compile
1960 # option. This is according to the "C for AIX User's
1962 G_THREAD_CFLAGS="-D_THREAD_SAFE"
1966 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1969 # So we are using dce threads. posix threads are already
1971 G_THREAD_CFLAGS="-threads"
1972 G_THREAD_LIBS=$G_THREAD_CFLAGS
1974 *-sysv5uw7*) # UnixWare 7
1975 # We are not using gcc with -pthread. Catched above.
1976 G_THREAD_CFLAGS="-Kthread"
1977 G_THREAD_LIBS=$G_THREAD_CFLAGS
1980 # No flag needed when using MSVCRT.DLL
1984 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1990 # if we are not finding the localtime_r function, then we probably are
1991 # not using the proper multithread flag
1993 glib_save_CPPFLAGS="$CPPFLAGS"
1994 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1996 # First we test, whether localtime_r is declared in time.h
1997 # directly. Then we test whether a macro localtime_r exists, in
1998 # which case localtime_r in the test program is replaced and thus
1999 # if we still find localtime_r in the output, it is not defined as
2002 AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
2003 [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>
2005 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
2007 CPPFLAGS="$glib_save_CPPFLAGS"
2009 AC_MSG_CHECKING(thread related cflags)
2010 AC_MSG_RESULT($G_THREAD_CFLAGS)
2011 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
2014 dnl determination of G_THREAD_LIBS
2015 dnl ******************************
2017 mutex_has_default=no
2018 case $have_threads in
2020 glib_save_CPPFLAGS="$CPPFLAGS"
2021 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2022 if test x"$G_THREAD_LIBS" = x; then
2025 # We are not using gcc (would have set G_THREAD_LIBS) and thus
2026 # probably using the aix compiler.
2027 AC_MSG_WARN($AIX_COMPILE_INFO)
2031 glib_save_LIBS="$LIBS"
2032 for thread_lib in "" pthread pthread32 pthreads thread dce; do
2033 if test x"$thread_lib" = x; then
2037 add_thread_lib="-l$thread_lib"
2038 IN=" in -l$thread_lib"
2040 if test x"$have_threads" = xposix; then
2043 defattr=pthread_attr_default
2046 LIBS="$add_thread_lib $glib_save_LIBS"
2048 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
2049 AC_TRY_RUN(glib_thread_test($defattr),
2052 [AC_LINK_IFELSE(glib_thread_test($defattr),
2055 AC_MSG_RESULT($glib_result)
2057 if test "$glib_result" = "yes" ; then
2058 G_THREAD_LIBS="$add_thread_lib"
2062 if test "x$G_THREAD_LIBS" = xerror; then
2063 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2065 LIBS="$glib_save_LIBS"
2070 glib_save_LIBS="$LIBS"
2071 for thread_lib in "" rt rte; do
2072 if test x"$thread_lib" = x; then
2076 add_thread_lib="-l$thread_lib"
2077 IN=" in -l$thread_lib"
2079 LIBS="$add_thread_lib $glib_save_LIBS"
2081 AC_MSG_CHECKING(for sched_get_priority_min$IN)
2082 AC_TRY_RUN(glib_sched_priority_test,
2085 [AC_LINK_IFELSE(glib_sched_priority_test,
2088 AC_MSG_RESULT($glib_result)
2090 if test "$glib_result" = "yes" ; then
2091 G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
2092 posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
2093 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
2097 LIBS="$glib_save_LIBS"
2098 mutex_has_default=yes
2099 mutex_default_type='pthread_mutex_t'
2100 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
2101 mutex_header_file='pthread.h'
2102 if test "x$have_threads" = "xposix"; then
2103 g_threads_impl="POSIX"
2105 g_threads_impl="DCE"
2106 have_threads="posix"
2108 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
2109 CPPFLAGS="$glib_save_CPPFLAGS"
2112 g_threads_impl="WIN32"
2115 g_threads_impl="NONE"
2118 g_threads_impl="NONE"
2123 if test "x$G_THREAD_LIBS" = xerror; then
2124 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
2129 G_THREAD_LIBS="-lbe -lroot -lglib-2.0 "
2130 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
2136 AC_MSG_CHECKING(thread related libraries)
2137 AC_MSG_RESULT($G_THREAD_LIBS)
2139 dnl check for mt safe function variants and some posix functions
2140 dnl ************************************************************
2142 if test x"$have_threads" != xno; then
2143 glib_save_LIBS="$LIBS"
2144 # we are not doing the following for now, as this might require glib
2145 # to always be linked with the thread libs on some platforms.
2146 # LIBS="$LIBS $G_THREAD_LIBS"
2147 AC_CHECK_FUNCS(localtime_r gmtime_r)
2148 if test "$ac_cv_header_pwd_h" = "yes"; then
2149 AC_CACHE_CHECK([for posix getpwuid_r],
2150 ac_cv_func_posix_getpwuid_r,
2156 struct passwd pwd, *pwptr = &pwd;
2159 error = getpwuid_r (0, &pwd, buffer,
2160 sizeof (buffer), &pwptr);
2161 return (error < 0 && errno == ENOSYS)
2164 [ac_cv_func_posix_getpwuid_r=yes],
2165 [ac_cv_func_posix_getpwuid_r=no])])
2166 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
2167 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
2168 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
2169 [Have POSIX function getpwuid_r])
2171 AC_CACHE_CHECK([for nonposix getpwuid_r],
2172 ac_cv_func_nonposix_getpwuid_r,
2173 [AC_TRY_LINK([#include <pwd.h>],
2174 [char buffer[10000];
2176 getpwuid_r (0, &pwd, buffer,
2178 [ac_cv_func_nonposix_getpwuid_r=yes],
2179 [ac_cv_func_nonposix_getpwuid_r=no])])
2180 GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
2181 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
2182 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
2183 [Have non-POSIX function getpwuid_r])
2187 if test "$ac_cv_header_grp_h" = "yes"; then
2188 AC_CACHE_CHECK([for posix getgrgid_r],
2189 ac_cv_func_posix_getgrgid_r,
2195 struct group grp, *grpptr = &grp;
2198 error = getgrgid_r (0, &grp, buffer,
2199 sizeof (buffer), &grpptr);
2200 return (error < 0 && errno == ENOSYS)
2203 [ac_cv_func_posix_getgrgid_r=yes],
2204 [ac_cv_func_posix_getgrgid_r=no])])
2205 GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
2206 if test "$ac_cv_func_posix_getgrgid_r" = yes; then
2207 AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
2208 [Have POSIX function getgrgid_r])
2210 AC_CACHE_CHECK([for nonposix getgrgid_r],
2211 ac_cv_func_nonposix_getgrgid_r,
2212 [AC_TRY_LINK([#include <grp.h>],
2213 [char buffer[10000];
2215 getgrgid_r (0, &grp, buffer,
2217 [ac_cv_func_nonposix_getgrgid_r=yes],
2218 [ac_cv_func_nonposix_getgrgid_r=no])])
2219 GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
2220 if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
2221 AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
2222 [Have non-POSIX function getgrgid_r])
2226 LIBS="$G_THREAD_LIBS $LIBS"
2227 if test x"$have_threads" = xposix; then
2228 glib_save_CPPFLAGS="$CPPFLAGS"
2229 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2230 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
2231 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
2232 # This is not AC_CHECK_FUNC to also work with function
2233 # name mangling in header files.
2234 AC_MSG_CHECKING(for pthread_attr_setstacksize)
2235 AC_TRY_LINK([#include <pthread.h>],
2236 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
2238 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
2239 [Have function pthread_attr_setstacksize])],
2240 [AC_MSG_RESULT(no)])
2241 AC_MSG_CHECKING(for minimal/maximal thread priority)
2242 if test x"$posix_priority_min" = x; then
2243 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
2245 posix_priority_min=PX_PRIO_MIN
2246 posix_priority_max=PX_PRIO_MAX])
2248 if test x"$posix_priority_min" = x; then
2250 AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
2251 PTHREAD_PRIO_MIN],,[
2252 posix_priority_min=PTHREAD_PRIO_MIN
2253 posix_priority_max=PTHREAD_PRIO_MAX])
2255 if test x"$posix_priority_min" = x; then
2256 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
2258 posix_priority_min=PRI_OTHER_MIN
2259 posix_priority_max=PRI_OTHER_MAX])
2261 if test x"$posix_priority_min" = x; then
2262 AC_MSG_RESULT(none found)
2263 AC_MSG_WARN($POSIX_NO_PRIORITIES)
2264 posix_priority_min=-1
2265 posix_priority_max=-1
2267 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
2268 AC_MSG_CHECKING(for pthread_setschedparam)
2269 AC_TRY_LINK([#include <pthread.h>],
2270 [pthread_t t; pthread_setschedparam(t, 0, NULL)],
2272 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
2273 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
2275 AC_MSG_WARN($POSIX_NO_PRIORITIES)])
2277 posix_yield_func=none
2278 AC_MSG_CHECKING(for posix yield function)
2279 for yield_func in sched_yield pthread_yield_np pthread_yield \
2281 AC_TRY_LINK([#include <pthread.h>],
2283 [posix_yield_func="$yield_func"
2286 if test x"$posix_yield_func" = xnone; then
2287 AC_MSG_RESULT(none found)
2288 AC_MSG_WARN($POSIX_NO_YIELD)
2289 posix_yield_func="g_usleep(1000)"
2291 AC_MSG_RESULT($posix_yield_func)
2292 posix_yield_func="$posix_yield_func()"
2294 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
2295 CPPFLAGS="$glib_save_CPPFLAGS"
2297 elif test x"$have_threads" = xwin32; then
2298 # It's a pointer to a private struct
2299 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
2302 LIBS="$glib_save_LIBS"
2304 # now spit out all the warnings.
2305 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
2306 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
2307 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
2309 if test "$ac_cv_func_localtime_r" != "yes"; then
2310 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
2314 if test x"$glib_cv_sizeof_system_thread" = x; then
2315 # use a pointer as a fallback.
2316 GLIB_SIZEOF(,void *, system_thread)
2320 # Hack to deal with:
2322 # a) GCC < 3.3 for Linux doesn't include -lpthread when
2323 # building shared libraries with linux.
2324 # b) FreeBSD doesn't do this either.
2327 *-*-freebsd*|*-*-linux*)
2328 G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
2331 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
2335 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
2336 [Source file containing theread implementation])
2337 AC_SUBST(G_THREAD_CFLAGS)
2338 AC_SUBST(G_THREAD_LIBS)
2339 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
2340 AC_SUBST(G_THREAD_LIBS_EXTRA)
2342 dnl **********************************************
2343 dnl *** GDefaultMutex setup and initialization ***
2344 dnl **********************************************
2346 dnl if mutex_has_default = yes, we also got
2347 dnl mutex_default_type, mutex_default_init and mutex_header_file
2348 if test $mutex_has_default = yes ; then
2349 glib_save_CPPFLAGS="$CPPFLAGS"
2350 glib_save_LIBS="$LIBS"
2351 LIBS="$G_THREAD_LIBS $LIBS"
2352 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
2353 GLIB_SIZEOF([#include <$mutex_header_file>],
2354 $mutex_default_type,
2356 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
2357 $mutex_default_type,
2359 $glib_cv_sizeof_gmutex,
2360 $mutex_default_init)
2361 if test x"$glib_cv_byte_contents_gmutex" = xno; then
2362 mutex_has_default=no
2364 CPPFLAGS="$glib_save_CPPFLAGS"
2365 LIBS="$glib_save_LIBS"
2368 AC_CHECK_FUNCS(clock_gettime, [], [
2369 AC_CHECK_LIB(rt, clock_gettime, [
2370 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
2371 G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
2372 G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
2376 AC_CACHE_CHECK(for monotonic clocks,
2377 glib_cv_monotonic_clock,AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2381 #if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
2382 #error No monotonic clock
2386 ]])],glib_cv_monotonic_clock=yes,glib_cv_monotonic_clock=no))
2387 if test "$glib_cv_monotonic_clock" = "yes"; then
2388 AC_DEFINE(HAVE_MONOTONIC_CLOCK,1,[Have a monotonic clock])
2392 dnl ********************************
2393 dnl *** g_atomic_* tests for gcc ***
2394 dnl ********************************
2396 AC_MSG_CHECKING([whether to use assembler code for atomic operations])
2398 if test x"$GCC" = xyes; then
2401 AC_MSG_RESULT([none])
2402 glib_memory_barrier_needed=no
2405 AC_MSG_RESULT([i486])
2406 AC_DEFINE_UNQUOTED(G_ATOMIC_I486, 1,
2407 [i486 atomic implementation])
2408 glib_memory_barrier_needed=no
2411 SPARCV9_WARNING="Try to rerun configure with CFLAGS='-mcpu=v9',
2412 when you are using a sparc with v9 instruction set (most
2413 sparcs nowadays). This will make the code for atomic
2414 operations much faster. The resulting code will not run
2415 on very old sparcs though."
2420 int tmp1, tmp2, tmp3;
2421 __asm__ __volatile__("casx [%2], %0, %1"
2422 : "=&r" (tmp1), "=&r" (tmp2) : "r" (&tmp3));
2424 AC_MSG_RESULT([sparcv9])
2425 AC_DEFINE_UNQUOTED(G_ATOMIC_SPARCV9, 1,
2426 [sparcv9 atomic implementation]),
2428 AC_MSG_WARN([[$SPARCV9_WARNING]]))
2429 glib_memory_barrier_needed=yes
2432 AC_MSG_RESULT([alpha])
2433 AC_DEFINE_UNQUOTED(G_ATOMIC_ALPHA, 1,
2434 [alpha atomic implementation])
2435 glib_memory_barrier_needed=yes
2438 AC_MSG_RESULT([x86_64])
2439 AC_DEFINE_UNQUOTED(G_ATOMIC_X86_64, 1,
2440 [x86_64 atomic implementation])
2441 glib_memory_barrier_needed=no
2444 AC_MSG_RESULT([powerpc])
2445 AC_DEFINE_UNQUOTED(G_ATOMIC_POWERPC, 1,
2446 [powerpc atomic implementation])
2447 glib_memory_barrier_needed=yes
2448 AC_MSG_CHECKING([whether asm supports numbered local labels])
2451 __asm__ __volatile__ ("1: nop\n"
2454 AC_DEFINE_UNQUOTED(ASM_NUMERIC_LABELS, 1, [define if asm blocks can use numeric local labels])
2455 AC_MSG_RESULT([yes])
2461 AC_MSG_RESULT([ia64])
2462 AC_DEFINE_UNQUOTED(G_ATOMIC_IA64, 1,
2463 [ia64 atomic implementation])
2464 glib_memory_barrier_needed=yes
2467 AC_MSG_RESULT([s390])
2468 AC_DEFINE_UNQUOTED(G_ATOMIC_S390, 1,
2469 [s390 atomic implementation])
2470 glib_memory_barrier_needed=no
2473 AC_MSG_RESULT([arm])
2474 AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 1,
2475 [arm atomic implementation])
2476 glib_memory_barrier_needed=no
2479 AC_MSG_RESULT([crisv32])
2480 AC_DEFINE_UNQUOTED(G_ATOMIC_CRISV32, 1,
2481 [crisv32 atomic implementation])
2482 glib_memory_barrier_needed=no
2485 AC_MSG_RESULT([cris])
2486 AC_DEFINE_UNQUOTED(G_ATOMIC_CRIS, 1,
2487 [cris atomic implementation])
2488 glib_memory_barrier_needed=no
2491 AC_MSG_RESULT([none])
2492 glib_memory_barrier_needed=yes
2496 if test $glib_native_win32 = yes; then
2497 # For Windows but not using gcc. No barriers needed then either.
2498 glib_memory_barrier_needed=no
2502 dnl ****************************************
2503 dnl *** GLib POLL* compatibility defines ***
2504 dnl ****************************************
2506 glib_poll_includes=["
2507 #include <sys/types.h>
2508 #include <sys/poll.h>
2511 if test $ac_cv_header_sys_types_h = yes &&
2512 test $ac_cv_header_sys_poll_h = yes ; then
2514 GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
2515 GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
2516 GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
2517 GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
2518 GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
2519 GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
2520 if $glib_failed ; then
2521 AC_MSG_ERROR([Could not determine values for POLL* constants])
2524 glib_cv_value_POLLIN=1
2525 glib_cv_value_POLLOUT=4
2526 glib_cv_value_POLLPRI=2
2527 glib_cv_value_POLLERR=8
2528 glib_cv_value_POLLHUP=16
2529 glib_cv_value_POLLNVAL=32
2532 AC_MSG_CHECKING([for broken poll])
2533 AC_RUN_IFELSE([AC_LANG_SOURCE([[
2537 #ifdef HAVE_SYS_POLL_H
2538 #include <sys/poll.h>
2541 struct pollfd fds[1];
2543 fd = open("/dev/null", 1);
2545 fds[0].events = POLLIN;
2547 if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
2548 exit(1); /* Does not work for devices -- fail */
2554 AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
2555 [broken_poll="no (cross compiling)"])
2556 AC_MSG_RESULT($broken_poll)
2558 dnl *********************
2559 dnl *** GRegex checks ***
2560 dnl *********************
2561 PCRE_REQUIRED_VERSION=7.2
2563 # Check if we should compile GRegex
2564 AC_ARG_ENABLE(regex, AC_HELP_STRING([--disable-regex],
2565 [disable the compilation of GRegex]),
2566 [case "${enableval}" in
2567 yes) enable_regex=true ;;
2568 no) enable_regex=false ;;
2569 *) AC_MSG_ERROR(bad value ${enableval} for --enable-regex) ;;
2571 [enable_regex=true])
2573 AM_CONDITIONAL(ENABLE_REGEX, $enable_regex)
2575 if test x$enable_regex = xtrue; then
2576 AC_DEFINE(ENABLE_REGEX, [], [include GRegex])
2577 # Check if we should use the internal or the system-supplied pcre
2579 [AC_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
2580 [specify whether to use the internal or the
2581 system-supplied PCRE library])])
2583 AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
2585 if test "x$with_pcre" = xsystem; then
2586 PKG_CHECK_MODULES(PCRE,
2587 libpcre >= $PCRE_REQUIRED_VERSION)
2588 AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
2589 glib_save_CFLAGS="$CFLAGS"
2590 glib_save_LIBS="$LIBS"
2591 CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
2592 AC_TRY_RUN([#include <pcre.h>
2595 pcre_config (PCRE_CONFIG_UTF8, &support);
2598 pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
2603 glib_cv_pcre_has_unicode=yes,
2604 glib_cv_pcre_has_unicode=no,
2605 glib_cv_pcre_has_unicode=yes)
2606 CFLAGS="$glib_save_CFLAGS"
2607 LIBS="$glib_save_LIBS"
2609 if test "$glib_cv_pcre_has_unicode" = "no"; then
2610 AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
2612 AC_SUBST(PCRE_CFLAGS)
2614 AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
2615 PCRE_REQUIRES=libpcre
2616 AC_SUBST(PCRE_REQUIRES)
2618 # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
2619 if test x"$GCC" = xyes; then
2620 AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
2621 save_CFLAGS="$CFLAGS"
2622 CFLAGS="$CFLAGS -Wno-pointer-sign"
2623 AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
2624 AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
2625 CFLAGS="$save_CFLAGS"
2628 AC_SUBST(PCRE_WARN_CFLAGS)
2630 AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
2633 dnl **********************
2634 dnl *** Win32 API libs ***
2635 dnl **********************
2639 G_LIBS_EXTRA="-luser32 -lkernel32"
2642 G_LIBS_EXTRA="-lws2_32 -lole32"
2648 AC_SUBST(G_LIBS_EXTRA)
2650 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
2651 dnl since we need it for g_iconv()
2653 AC_MSG_CHECKING([for EILSEQ])
2659 ], have_eilseq=yes, have_eilseq=no);
2660 AC_MSG_RESULT($have_eilseq)
2662 dnl ******************************************************************
2663 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
2664 dnl ******************************************************************
2666 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
2668 if test $cross_compiling = yes; then
2669 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
2670 if test x$GLIB_GENMARSHAL = xno; then
2671 AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
2675 dnl **************************
2676 dnl *** Checks for gtk-doc ***
2677 dnl **************************
2679 GTK_DOC_CHECK([1.11])
2682 [AC_HELP_STRING([--enable-man],
2683 [regenerate man pages from Docbook [default=no]])],enable_man=yes,
2686 if test "${enable_man}" != no; then
2688 dnl Check for xsltproc
2690 AC_PATH_PROG([XSLTPROC], [xsltproc])
2691 if test -z "$XSLTPROC"; then
2695 dnl check for DocBook DTD and stylesheets in the local catalog.
2696 JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
2697 [DocBook XML DTD V4.1.2],,enable_man=no)
2698 JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
2699 [DocBook XSL Stylesheets],,enable_man=no)
2702 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
2704 dnl ******************************
2705 dnl *** output the whole stuff ***
2706 dnl ******************************
2708 dnl this section will only be run if config.status is invoked with no
2709 dnl arguments, or with "glibconfig.h" as an argument.
2710 AC_CONFIG_COMMANDS([glibconfig.h],
2712 outfile=glibconfig.h-tmp
2713 cat > $outfile <<\_______EOF
2716 * This is a generated file. Please modify 'configure.in'
2719 #ifndef __G_LIBCONFIG_H__
2720 #define __G_LIBCONFIG_H__
2722 #include <glib/gmacros.h>
2726 if test x$glib_limits_h = xyes; then
2727 echo '#include <limits.h>' >> $outfile
2729 if test x$glib_float_h = xyes; then
2730 echo '#include <float.h>' >> $outfile
2732 if test x$glib_values_h = xyes; then
2733 echo '#include <values.h>' >> $outfile
2735 if test "$glib_header_alloca_h" = "yes"; then
2736 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
2738 if test x$glib_sys_poll_h = xyes; then
2739 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
2741 if test x$glib_included_printf != xyes; then
2743 /* Specifies that GLib's g_print*() functions wrap the
2744 * system printf functions. This is useful to know, for example,
2745 * when using glibc's register_printf_function().
2747 echo '#define GLIB_USING_SYSTEM_PRINTF' >> $outfile
2750 cat >> $outfile <<_______EOF
2754 #define G_MINFLOAT $glib_mf
2755 #define G_MAXFLOAT $glib_Mf
2756 #define G_MINDOUBLE $glib_md
2757 #define G_MAXDOUBLE $glib_Md
2758 #define G_MINSHORT $glib_ms
2759 #define G_MAXSHORT $glib_Ms
2760 #define G_MAXUSHORT $glib_Mus
2761 #define G_MININT $glib_mi
2762 #define G_MAXINT $glib_Mi
2763 #define G_MAXUINT $glib_Mui
2764 #define G_MINLONG $glib_ml
2765 #define G_MAXLONG $glib_Ml
2766 #define G_MAXULONG $glib_Mul
2771 ### this should always be true in a modern C/C++ compiler
2772 cat >>$outfile <<_______EOF
2773 typedef signed char gint8;
2774 typedef unsigned char guint8;
2778 if test -n "$gint16"; then
2779 cat >>$outfile <<_______EOF
2780 typedef signed $gint16 gint16;
2781 typedef unsigned $gint16 guint16;
2782 #define G_GINT16_MODIFIER $gint16_modifier
2783 #define G_GINT16_FORMAT $gint16_format
2784 #define G_GUINT16_FORMAT $guint16_format
2789 if test -n "$gint32"; then
2790 cat >>$outfile <<_______EOF
2791 typedef signed $gint32 gint32;
2792 typedef unsigned $gint32 guint32;
2793 #define G_GINT32_MODIFIER $gint32_modifier
2794 #define G_GINT32_FORMAT $gint32_format
2795 #define G_GUINT32_FORMAT $guint32_format
2799 cat >>$outfile <<_______EOF
2800 #define G_HAVE_GINT64 1 /* deprecated, always true */
2802 ${glib_extension}typedef signed $gint64 gint64;
2803 ${glib_extension}typedef unsigned $gint64 guint64;
2805 #define G_GINT64_CONSTANT(val) $gint64_constant
2806 #define G_GUINT64_CONSTANT(val) $guint64_constant
2809 if test x$gint64_format != x ; then
2810 cat >>$outfile <<_______EOF
2811 #define G_GINT64_MODIFIER $gint64_modifier
2812 #define G_GINT64_FORMAT $gint64_format
2813 #define G_GUINT64_FORMAT $guint64_format
2816 cat >>$outfile <<_______EOF
2817 #undef G_GINT64_MODIFIER
2818 #undef G_GINT64_FORMAT
2819 #undef G_GUINT64_FORMAT
2823 cat >>$outfile <<_______EOF
2825 #define GLIB_SIZEOF_VOID_P $glib_void_p
2826 #define GLIB_SIZEOF_LONG $glib_long
2827 #define GLIB_SIZEOF_SIZE_T $glib_size_t
2831 cat >>$outfile <<_______EOF
2832 typedef signed $glib_size_type_define gssize;
2833 typedef unsigned $glib_size_type_define gsize;
2834 #define G_GSIZE_MODIFIER $gsize_modifier
2835 #define G_GSSIZE_FORMAT $gssize_format
2836 #define G_GSIZE_FORMAT $gsize_format
2838 #define G_MAXSIZE G_MAXU$glib_msize_type
2839 #define G_MINSSIZE G_MIN$glib_msize_type
2840 #define G_MAXSSIZE G_MAX$glib_msize_type
2842 typedef gint64 goffset;
2843 #define G_MINOFFSET G_MININT64
2844 #define G_MAXOFFSET G_MAXINT64
2846 #define G_GOFFSET_MODIFIER G_GINT64_MODIFIER
2847 #define G_GOFFSET_FORMAT G_GINT64_FORMAT
2848 #define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
2852 if test -z "$glib_unknown_void_p"; then
2853 cat >>$outfile <<_______EOF
2855 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
2856 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
2858 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
2859 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
2861 typedef signed $glib_intptr_type_define gintptr;
2862 typedef unsigned $glib_intptr_type_define guintptr;
2864 #define G_GINTPTR_MODIFIER $gintptr_modifier
2865 #define G_GINTPTR_FORMAT $gintptr_format
2866 #define G_GUINTPTR_FORMAT $guintptr_format
2869 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
2874 cat >>$outfile <<_______EOF
2879 $glib_static_compilation
2884 #define G_HAVE_INLINE 1
2885 #else /* !__cplusplus */
2887 #endif /* !__cplusplus */
2890 #define G_CAN_INLINE 1
2893 if test x$g_can_inline = xyes ; then
2894 cat >>$outfile <<_______EOF
2895 #else /* !__cplusplus */
2896 #define G_CAN_INLINE 1
2900 cat >>$outfile <<_______EOF
2905 if test x$g_have_iso_c_varargs = xyes ; then
2906 cat >>$outfile <<_______EOF
2908 # define G_HAVE_ISO_VARARGS 1
2912 if test x$g_have_iso_cxx_varargs = xyes ; then
2913 cat >>$outfile <<_______EOF
2915 # define G_HAVE_ISO_VARARGS 1
2919 if test x$g_have_gnuc_varargs = xyes ; then
2920 cat >>$outfile <<_______EOF
2922 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2923 * is passed ISO vararg support is turned off, and there is no work
2924 * around to turn it on, so we unconditionally turn it off.
2926 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2927 # undef G_HAVE_ISO_VARARGS
2930 #define G_HAVE_GNUC_VARARGS 1
2934 case x$g_stack_grows in
2935 xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2936 *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2941 if test x$g_have_eilseq = xno; then
2942 cat >>$outfile <<_______EOF
2944 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2945 * The correspondence between this and the corresponding definition
2946 * in libiconv is essential.
2948 # define EILSEQ ENOENT
2954 if test x$g_have_gnuc_visibility = xyes; then
2955 cat >>$outfile <<_______EOF
2956 #define G_HAVE_GNUC_VISIBILITY 1
2959 cat >>$outfile <<_______EOF
2960 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
2961 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
2962 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
2963 #define G_GNUC_INTERNAL __hidden
2964 #elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
2965 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
2967 #define G_GNUC_INTERNAL
2973 if test x$g_mutex_has_default = xyes; then
2974 cat >>$outfile <<_______EOF
2975 $g_enable_threads_def G_THREADS_ENABLED
2976 #define G_THREADS_IMPL_$g_threads_impl_def
2977 typedef struct _GStaticMutex GStaticMutex;
2978 struct _GStaticMutex
2980 struct _GMutex *runtime_mutex;
2982 char pad[[$g_mutex_sizeof]];
2983 double dummy_double;
2984 void *dummy_pointer;
2988 #define G_STATIC_MUTEX_INIT { NULL, { { $g_mutex_contents} } }
2989 #define g_static_mutex_get_mutex(mutex) \\
2990 (g_thread_use_default_impl ? ((GMutex*)(gpointer) ((mutex)->static_mutex.pad)) : \\
2991 g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
2994 cat >>$outfile <<_______EOF
2995 $g_enable_threads_def G_THREADS_ENABLED
2996 #define G_THREADS_IMPL_$g_threads_impl_def
2997 typedef struct _GMutex* GStaticMutex;
2998 #define G_STATIC_MUTEX_INIT NULL
2999 #define g_static_mutex_get_mutex(mutex) \\
3000 (g_static_mutex_get_mutex_impl_shortcut (mutex))
3004 cat >>$outfile <<_______EOF
3005 /* This represents a system thread as used by the implementation. An
3006 * alien implementaion, as loaded by g_thread_init can only count on
3007 * "sizeof (gpointer)" bytes to store their info. We however need more
3008 * for some of our native implementations. */
3009 typedef union _GSystemThread GSystemThread;
3010 union _GSystemThread
3012 char data[[$g_system_thread_sizeof]];
3013 double dummy_double;
3014 void *dummy_pointer;
3018 if test x"$g_memory_barrier_needed" != xno; then
3020 echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
3024 g_bit_sizes="16 32 64"
3025 for bits in $g_bit_sizes; do
3026 cat >>$outfile <<_______EOF
3027 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
3028 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
3029 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
3030 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
3034 cat >>$outfile <<_______EOF
3035 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
3036 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
3037 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
3038 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
3039 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
3040 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
3041 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
3042 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
3043 #define G_BYTE_ORDER $g_byte_order
3045 #define GLIB_SYSDEF_POLLIN =$g_pollin
3046 #define GLIB_SYSDEF_POLLOUT =$g_pollout
3047 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
3048 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
3049 #define GLIB_SYSDEF_POLLERR =$g_pollerr
3050 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
3052 #define G_MODULE_SUFFIX "$g_module_suffix"
3054 /* A GPid is an abstraction for a process "handle". It is *not* an
3055 * abstraction for a process identifier in general. GPid is used in
3056 * GLib only for descendant processes spawned with the g_spawn*
3057 * functions. On POSIX there is no "process handle" concept as such,
3058 * but on Windows a GPid is a handle to a process, a kind of pointer,
3059 * not a process identifier.
3061 typedef $g_pid_type GPid;
3063 #define GLIB_SYSDEF_AF_UNIX $g_af_unix
3064 #define GLIB_SYSDEF_AF_INET $g_af_inet
3065 #define GLIB_SYSDEF_AF_INET6 $g_af_inet6
3067 #define GLIB_SYSDEF_MSG_OOB $g_msg_oob
3068 #define GLIB_SYSDEF_MSG_PEEK $g_msg_peek
3069 #define GLIB_SYSDEF_MSG_DONTROUTE $g_msg_dontroute
3073 #endif /* GLIBCONFIG_H */
3077 if cmp -s $outfile glibconfig.h; then
3078 AC_MSG_NOTICE([glibconfig.h is unchanged])
3081 mv $outfile glibconfig.h
3085 # Note that if two cases are the same, case goes with the first one.
3086 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
3087 # on variable expansion in case labels. Look at the generated config.status
3090 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
3091 glib_header_alloca_h="$ac_cv_working_alloca_h"
3093 glib_header_alloca_h="$ac_cv_header_alloca_h"
3097 x$ac_cv_header_float_h)
3099 glib_mf=FLT_MIN glib_Mf=FLT_MAX
3100 glib_md=DBL_MIN glib_Md=DBL_MAX
3102 x$ac_cv_header_values_h)
3104 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
3105 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
3110 x$ac_cv_header_limits_h)
3112 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
3113 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
3114 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
3116 x$ac_cv_header_values_h)
3118 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
3119 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
3120 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
3124 if test x$ac_cv_header_sys_poll_h = xyes ; then
3128 if test x$enable_included_printf = xyes ; then
3129 glib_included_printf=yes
3133 $ac_cv_sizeof_short)
3135 gint16_modifier='"h"'
3136 gint16_format='"hi"'
3137 guint16_format='"hu"'
3141 gint16_modifier='""'
3143 guint16_format='"u"'
3147 $ac_cv_sizeof_short)
3149 gint32_modifier='"h"'
3150 gint32_format='"hi"'
3151 guint32_format='"hu"'
3155 gint32_modifier='""'
3157 guint32_format='"u"'
3161 gint32_modifier='"l"'
3162 gint32_format='"li"'
3163 guint32_format='"lu"'
3169 gint64_modifier='""'
3171 guint64_format='"u"'
3173 gint64_constant='(val)'
3174 guint64_constant='(val)'
3178 gint64_modifier='"l"'
3179 gint64_format='"li"'
3180 guint64_format='"lu"'
3182 gint64_constant='(val##L)'
3183 guint64_constant='(val##UL)'
3185 $ac_cv_sizeof_long_long)
3187 if test -n "$glib_cv_long_long_format"; then
3188 gint64_modifier='"'$glib_cv_long_long_format'"'
3189 gint64_format='"'$glib_cv_long_long_format'i"'
3190 guint64_format='"'$glib_cv_long_long_format'u"'
3192 glib_extension='G_GNUC_EXTENSION '
3193 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
3194 guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
3196 $ac_cv_sizeof___int64)
3198 if test -n "$glib_cv_long_long_format"; then
3199 gint64_modifier='"'$glib_cv_long_long_format'"'
3200 gint64_format='"'$glib_cv_long_long_format'i"'
3201 guint64_format='"'$glib_cv_long_long_format'u"'
3204 gint64_constant='(val##i64)'
3205 guint64_constant='(val##ui64)'
3208 glib_size_t=$ac_cv_sizeof_size_t
3209 glib_size_type_define="$glib_size_type"
3210 glib_void_p=$ac_cv_sizeof_void_p
3211 glib_long=$ac_cv_sizeof_long
3213 case "$glib_size_type" in
3215 gsize_modifier='"h"'
3217 gssize_format='"hi"'
3218 glib_msize_type='SHRT'
3224 glib_msize_type='INT'
3227 gsize_modifier='"l"'
3229 gssize_format='"li"'
3230 glib_msize_type='LONG'
3232 "long long"|__int64)
3233 gsize_modifier='"I64"'
3234 gsize_format='"I64u"'
3235 gssize_format='"I64i"'
3236 glib_msize_type='INT64'
3240 gintbits=`expr $ac_cv_sizeof_int \* 8`
3241 glongbits=`expr $ac_cv_sizeof_long \* 8`
3243 case $ac_cv_sizeof_void_p in
3245 glib_intptr_type_define=int
3246 gintptr_modifier='""'
3247 gintptr_format='"i"'
3248 guintptr_format='"u"'
3253 glib_intptr_type_define=long
3254 gintptr_modifier='"l"'
3255 gintptr_format='"li"'
3256 guintptr_format='"lu"'
3257 glib_gpi_cast='(glong)'
3258 glib_gpui_cast='(gulong)'
3260 $ac_cv_sizeof_long_long)
3261 glib_intptr_type_define='long long'
3262 gintptr_modifier='"I64"'
3263 gintptr_format='"I64i"'
3264 guintptr_format='"I64u"'
3265 glib_gpi_cast='(gint64)'
3266 glib_gpui_cast='(guint64)'
3268 $ac_cv_sizeof___int64)
3269 glib_intptr_type_define=__int64
3270 gintptr_modifier='"I64"'
3271 gintptr_format='"I64i"'
3272 guintptr_format='"I64u"'
3273 glib_gpi_cast='(gint64)'
3274 glib_gpui_cast='(guint64)'
3277 glib_unknown_void_p=yes
3283 x$ac_cv_func_atexit)
3285 #ifdef NeXT /* @#%@! NeXTStep */
3286 # define g_ATEXIT(proc) (!atexit (proc))
3288 # define g_ATEXIT(proc) (atexit (proc))
3291 x$ac_cv_func_on_exit)
3293 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
3298 x$ac_cv_func_memmove)
3300 #define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END'
3302 x$glib_cv_working_bcopy)
3304 /* memmove isn't available, but bcopy can copy overlapping memory regions */
3305 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
3309 /* memmove isn't found and bcopy can't copy overlapping memory regions,
3310 * so we have to roll our own copy routine. */
3311 void g_memmove (void* dest, const void * src, unsigned long len);"
3316 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
3317 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
3318 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
3322 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
3323 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
3327 if test x$glib_cv_va_val_copy = xno; then
3328 glib_vacopy="\$glib_vacopy
3329 #define G_VA_COPY_AS_ARRAY 1"
3332 if test x$glib_cv_hasinline = xyes; then
3333 glib_inline='#define G_HAVE_INLINE 1'
3335 if test x$glib_cv_has__inline = xyes; then
3336 glib_inline="\$glib_inline
3337 #define G_HAVE___INLINE 1"
3339 if test x$glib_cv_has__inline__ = xyes; then
3340 glib_inline="\$glib_inline
3341 #define G_HAVE___INLINE__ 1"
3344 g_have_gnuc_varargs=$g_have_gnuc_varargs
3345 g_have_iso_c_varargs=$g_have_iso_c_varargs
3346 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
3348 g_can_inline=$g_can_inline
3349 g_have_gnuc_visibility=$g_have_gnuc_visibility
3350 g_have_sunstudio_visibility=$g_have_sunstudio_visibility
3352 if test x$ac_cv_c_bigendian = xyes; then
3353 g_byte_order=G_BIG_ENDIAN
3357 g_byte_order=G_LITTLE_ENDIAN
3362 g_pollin=$glib_cv_value_POLLIN
3363 g_pollout=$glib_cv_value_POLLOUT
3364 g_pollpri=$glib_cv_value_POLLPRI
3365 g_pollhup=$glib_cv_value_POLLHUP
3366 g_pollerr=$glib_cv_value_POLLERR
3367 g_pollnval=$glib_cv_value_POLLNVAL
3369 g_af_unix=$glib_cv_value_AF_UNIX
3370 g_af_inet=$glib_cv_value_AF_INET
3371 g_af_inet6=$glib_cv_value_AF_INET6
3373 g_msg_peek=$glib_cv_value_MSG_PEEK
3374 g_msg_oob=$glib_cv_value_MSG_OOB
3375 g_msg_dontroute=$glib_cv_value_MSG_DONTROUTE
3377 g_stack_grows=$glib_cv_stack_grows
3379 g_have_eilseq=$have_eilseq
3381 case x$have_threads in
3382 xno) g_enable_threads_def="#undef";;
3383 *) g_enable_threads_def="#define";;
3386 g_threads_impl_def=$g_threads_impl
3388 g_mutex_has_default="$mutex_has_default"
3389 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
3390 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
3391 g_mutex_contents="$glib_cv_byte_contents_gmutex"
3393 g_memory_barrier_needed="$glib_memory_barrier_needed"
3395 g_module_suffix="$glib_gmodule_suffix"
3397 g_pid_type="$glib_pid_type"
3400 glib_os="#define G_OS_BEOS"
3403 glib_os="#define G_OS_UNIX
3404 #define G_PLATFORM_WIN32
3405 #define G_WITH_CYGWIN"
3408 glib_os="#define G_OS_WIN32
3409 #define G_PLATFORM_WIN32"
3412 glib_os="#define G_OS_UNIX"
3415 glib_static_compilation=""
3416 if test x$glib_win32_static_compilation = xyes; then
3417 glib_static_compilation="#define GLIB_STATIC_COMPILATION 1
3418 #define GOBJECT_STATIC_COMPILATION 1"
3424 glib-2.0-uninstalled.pc
3426 gmodule-export-2.0.pc
3427 gmodule-no-export-2.0.pc
3428 gmodule-2.0-uninstalled.pc
3429 gmodule-no-export-2.0-uninstalled.pc
3431 gthread-2.0-uninstalled.pc
3433 gobject-2.0-uninstalled.pc
3436 gio-2.0-uninstalled.pc
3437 gio-unix-2.0-uninstalled.pc
3442 build/win32/Makefile
3443 build/win32/dirent/Makefile
3444 build/win32/vs8/Makefile
3445 build/win32/vs9/Makefile
3447 glib/libcharset/Makefile
3448 glib/gnulib/Makefile
3450 glib/update-pcre/Makefile
3453 gmodule/gmoduleconf.h
3455 gobject/glib-mkenums
3456 gobject/tests/Makefile
3459 gio/xdgmime/Makefile
3460 gio/inotify/Makefile
3461 gio/libasyncns/Makefile
3468 docs/reference/Makefile
3469 docs/reference/glib/Makefile
3470 docs/reference/glib/version.xml
3471 docs/reference/gobject/Makefile
3472 docs/reference/gobject/version.xml
3473 docs/reference/gio/Makefile
3474 docs/reference/gio/version.xml
3476 tests/gobject/Makefile
3477 tests/refcount/Makefile
3481 AC_CONFIG_COMMANDS([chmod-scripts],
3482 [chmod 0755 glib-zip
3483 chmod 0755 glib-gettextize
3484 chmod 0755 gobject/glib-mkenums])
3486 # we want to invoke this macro solely so that the config.status script
3487 # and automake generated makefiles know about these generated files.
3488 # They are only needed to distcheck the package
3497 gmodule/makefile.msc
3499 gobject/makefile.msc
3501 gthread/makefile.msc