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)
10 m4_include(acglib.m4)dnl
11 m4_include(glib/libcharset/codeset.m4)dnl
12 m4_include(glib/libcharset/glibc21.m4)dnl
13 m4_include(m4macros/glib-gettext.m4)dnl
16 # The following version number definitions apply to GLib, GModule, GObject
17 # and GThread as a whole, so if changes occoured in any of them, they are all
18 # treated with the same interface and binary age.
21 # glib_micro_version += 1;
22 # glib_interface_age += 1;
23 # glib_binary_age += 1;
24 # if any functions have been added, set glib_interface_age to 0.
25 # if backwards compatibility has been broken,
26 # set glib_binary_age _and_ glib_interface_age to 0.
28 m4_define([glib_major_version], [2])
29 m4_define([glib_minor_version], [3])
30 m4_define([glib_micro_version], [2])
31 m4_define([glib_interface_age], [0])
32 m4_define([glib_binary_age],
33 [m4_eval(100 * glib_minor_version + glib_micro_version)])
34 m4_define([glib_version],
35 [glib_major_version.glib_minor_version.glib_micro_version])
37 # libtool version related macros
38 m4_define([glib_lt_release], [glib_major_version.glib_minor_version])
39 m4_define([glib_lt_current],
40 [m4_eval(100 * glib_minor_version + glib_micro_version - glib_interface_age)])
41 m4_define([glib_lt_revision], [glib_interface_age])
42 m4_define([glib_lt_age], [m4_eval(glib_binary_age - glib_interface_age)])
43 m4_define([glib_lt_current_minus_age],
44 [m4_eval(glib_lt_current - glib_lt_age)])
46 # if the minor version number is odd, then we want debugging. Otherwise
47 # we only want minimal debugging support.
48 m4_define([glib_debug_default],
49 [m4_if(m4_eval(glib_minor_version % 2), [1], [yes], [minimum])])dnl
52 AC_INIT(glib, [glib_version],
53 [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
55 AC_CONFIG_SRCDIR([glib/glib.h])
57 # Save this value here, since automake will set cflags later
58 cflags_set=${CFLAGS+set}
60 AM_INIT_AUTOMAKE([no-define])
62 # Specify a configuration file
63 AM_CONFIG_HEADER([config.h])
66 GLIB_MAJOR_VERSION=glib_major_version
67 GLIB_MINOR_VERSION=glib_minor_version
68 GLIB_MICRO_VERSION=glib_micro_version
69 GLIB_INTERFACE_AGE=glib_interface_age
70 GLIB_BINARY_AGE=glib_binary_age
71 GLIB_VERSION=glib_version
73 AC_SUBST(GLIB_MAJOR_VERSION)
74 AC_SUBST(GLIB_MINOR_VERSION)
75 AC_SUBST(GLIB_MICRO_VERSION)
76 AC_SUBST(GLIB_VERSION)
77 AC_SUBST(GLIB_INTERFACE_AGE)
78 AC_SUBST(GLIB_BINARY_AGE)
80 AC_DEFINE(GLIB_MAJOR_VERSION, [glib_major_version],
81 [Define to the GLIB major version])
82 AC_DEFINE(GLIB_MINOR_VERSION, [glib_minor_version],
83 [Define to the GLIB minor version])
84 AC_DEFINE(GLIB_MICRO_VERSION, [glib_micro_version],
85 [Define to the GLIB micro version])
86 AC_DEFINE(GLIB_INTERFACE_AGE, [glib_interface_age],
87 [Define to the GLIB interface age])
88 AC_DEFINE(GLIB_BINARY_AGE, [glib_binary_age],
89 [Define to the GLIB binary age])
92 LT_RELEASE=glib_lt_release
93 LT_CURRENT=glib_lt_current
94 LT_REVISION=glib_lt_revision
96 LT_CURRENT_MINUS_AGE=glib_lt_current_minus_age
101 AC_SUBST(LT_CURRENT_MINUS_AGE)
103 dnl Initialize maintainer mode
108 AC_MSG_CHECKING([for the BeOS])
111 glib_native_beos="yes"
114 glib_native_beos="no"
117 AC_MSG_RESULT([$glib_native_beos])
121 AC_MSG_CHECKING([for Win32])
124 glib_native_win32=yes
125 G_LIB_WIN32_RESOURCE=glib-win32res.lo
126 G_MODULE_WIN32_RESOURCE=gmodule-win32res.lo
127 G_OBJECT_WIN32_RESOURCE=gobject-win32res.lo
128 G_THREAD_WIN32_RESOURCE=gthread-win32res.lo
130 GMODULE_DEF=gmodule.def
131 GOBJECT_DEF=gobject.def
132 GTHREAD_DEF=gthread.def
133 TESTGMODULE_EXP=testgmodule.exp
137 G_LIB_WIN32_RESOURCE=
138 G_MODULE_WIN32_RESOURCE=
139 G_OBJECT_WIN32_RESOURCE=
140 G_THREAD_WIN32_RESOURCE=
148 AC_MSG_RESULT([$glib_native_win32])
149 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
150 AC_SUBST(G_LIB_WIN32_RESOURCE)
151 AC_SUBST(G_MODULE_WIN32_RESOURCE)
152 AC_SUBST(G_OBJECT_WIN32_RESOURCE)
153 AC_SUBST(G_THREAD_WIN32_RESOURCE)
155 AC_SUBST(GMODULE_DEF)
156 AC_SUBST(GOBJECT_DEF)
157 AC_SUBST(GTHREAD_DEF)
158 AC_SUBST(TESTGMODULE_EXP)
160 if test "$glib_native_win32" = "yes"; then
161 AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
163 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
165 dnl declare --enable-* args and collect ac_help strings
167 AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
168 [turn on debugging @<:@default=glib_debug_default@:>@]),,
169 enable_debug=glib_debug_default)
171 AC_ARG_ENABLE(gc_friendly,
172 [AC_HELP_STRING([--enable-gc-friendly],
173 [turn on garbage collector friendliness [default=no]])],,
174 [enable_gc_friendly=no])
175 AC_ARG_ENABLE(mem_pools,
176 [AC_HELP_STRING([--disable-mem-pools],
177 [disable all glib memory pools])],,
178 [disable_mem_pools=no])
180 [AC_HELP_STRING([--enable-ansi],
181 [turn on strict ansi [default=no]])],,
183 AC_ARG_ENABLE(threads,
184 [AC_HELP_STRING([--enable-threads],
185 [turn on basic thread support [default=yes]
186 ([=no] will override --with-threads)])],,
187 [enable_threads=yes])
188 AC_ARG_ENABLE(rebuilds,
189 [AC_HELP_STRING([--disable-rebuilds],
190 [disable all source autogeneration rules])],,
191 [enable_rebuilds=yes])
193 if test "x$enable_threads" != "xyes"; then
197 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, ["${enable_debug}"],
198 [Whether glib was compiled with debugging enabled])
200 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
201 if test "x$enable_gc_friendly" = "xyes"; then
202 AC_DEFINE(ENABLE_GC_FRIENDLY, 1, [Whether to enable GC friendliness])
203 AC_SUBST(ENABLE_GC_FRIENDLY)
209 AC_MSG_CHECKING([whether to disable memory pools])
210 if test "x$disable_mem_pools" = "xno"; then
213 AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
214 AC_SUBST(DISABLE_MEM_POOLS)
218 if test "$glib_native_win32" = "yes"; then
219 if test x$enable_static = xyes -o x$enable_static = x; then
220 AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
223 if test x$enable_shared = xno; then
224 AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
229 dnl Checks for programs.
232 dnl Check for a working C++ compiler, but do not bail out, if none is found.
233 AC_CHECK_PROGS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
236 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
237 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
248 AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no])
249 if test x$PKG_CONFIG = xno ; then
250 AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
253 if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then
256 AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.])
259 if test "x$enable_debug" = "xyes"; then
260 if test x$cflags_set != xset ; then
262 *[[\ \ ]]-g[[\ \ ]]*) ;;
263 *) CFLAGS="$CFLAGS -g" ;;
267 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
269 GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
271 if test "x$enable_debug" = "xno"; then
272 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
276 # Ensure MSVC-compatible struct packing convention is used when
277 # compiling for Win32 with gcc.
278 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
279 # gcc2 uses "-fnative-struct".
280 if test x"$glib_native_win32" = xyes; then
281 if test x"$GCC" = xyes; then
283 AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
284 if test -z "$ac_cv_prog_CC"; then
287 our_gcc="$ac_cv_prog_CC"
289 case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
291 if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
292 msnative_struct='-fnative-struct'
296 if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
297 msnative_struct='-mms-bitfields'
301 if test x"$msnative_struct" = x ; then
302 AC_MSG_RESULT([no way])
303 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
305 CFLAGS="$CFLAGS $msnative_struct"
306 AC_MSG_RESULT([${msnative_struct}])
314 # define a MAINT-like variable REBUILD which is set if Perl
315 # and awk are found, so autogenerated sources can be rebuilt
317 AC_CHECK_PROGS(PERL, [perl5 perl])
318 # We would like indent, but don't require it.
319 AC_CHECK_PROG(INDENT, indent, indent)
321 if test "x$enable_rebuilds" = "xyes" && \
323 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
324 test -n "$AWK" ; then
329 # Need full path to Perl for glib-mkenums
331 if test "x$PERL" != x ; then
332 AC_PATH_PROG(PERL_PATH, [$PERL])
334 PERL_PATH="/usr/bin/env perl"
338 dnl ***********************
339 dnl *** Tests for iconv ***
340 dnl ***********************
342 dnl We do this before the gettext checks, to avoid distortion
344 AC_ARG_WITH(libiconv,
345 [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
346 [use the libiconv library])],,
347 [with_libiconv=maybe])
350 case $with_libiconv in
352 # Check in the C library first
353 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
354 # Check if we have GNU libiconv
355 if test $found_iconv = "no"; then
356 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
358 # Check if we have a iconv in -liconv, possibly from vendor
359 if test $found_iconv = "no"; then
360 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
364 AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
367 AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
370 AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
374 if test "x$found_iconv" = "xno" ; then
375 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
382 ALL_LINGUAS="am ar az be bg bn ca cs cy da de el eo es et eu fa fi fr gl he hi id is it ja ko lt lv mk mn ms nl nn no pl pt pt_BR ro ru sk sl sq sr sr@Latn sv ta tr uk vi yi zh_CN zh_TW"
385 if test "$gt_cv_have_gettext" != "yes" ; then
387 *** You must have either have gettext support in your C library, or use the
388 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
392 LIBS="$INTLLIBS $LIBS"
394 GETTEXT_PACKAGE=glib20
395 AC_SUBST(GETTEXT_PACKAGE)
396 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"],
397 [Define the gettext package to be used])
399 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
402 dnl Now we are done with gettext checks, figure out ICONV_LIBS
405 if test x$with_libiconv != xno ; then
406 case " $INTLLIBS " in
407 *[[\ \ ]]-liconv[[\ \ ]]*) ;;
408 *) ICONV_LIBS="-liconv" ;;
413 case $with_libiconv in
415 AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
418 AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
422 dnl Initialize libtool
426 if test "x$GCC" = "xyes"; then
428 *[[\ \ ]]-Wall[[\ \ ]]*) ;;
429 *) CFLAGS="$CFLAGS -Wall" ;;
432 if test "x$enable_ansi" = "xyes"; then
434 *[[\ \ ]]-ansi[[\ \ ]]*) ;;
435 *) CFLAGS="$CFLAGS -ansi" ;;
439 *[[\ \ ]]-pedantic[[\ \ ]]*) ;;
440 *) CFLAGS="$CFLAGS -pedantic" ;;
446 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
448 if test $cross_compiling != yes ; then
449 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
452 AC_TRY_RUN([#include <math.h>
453 int main (void) { return (log(1) != log(1.)); }],
454 AC_MSG_RESULT(none needed),
455 glib_save_CFLAGS=$CFLAGS
456 CFLAGS="$CFLAGS -std1"
457 AC_TRY_RUN([#include <math.h>
458 int main (void) { return (log(1) != log(1.)); }],
459 AC_MSG_RESULT(-std1),
461 CFLAGS=$glib_save_CFLAGS
463 [No ANSI prototypes found in library. (-std1 didn't work.)])
469 dnl NeXTStep cc seems to need this
470 AC_MSG_CHECKING([for extra flags for POSIX compliance])
471 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
472 AC_MSG_RESULT(none needed),
473 glib_save_CFLAGS=$CFLAGS
474 CFLAGS="$CFLAGS -posix"
475 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
476 AC_MSG_RESULT(-posix),
478 CFLAGS=$glib_save_CFLAGS
479 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
481 # Checks for header files.
484 # Checks for library functions.
489 AC_CHECK_FUNCS(atexit on_exit)
491 AC_CHECK_SIZEOF(char)
492 AC_CHECK_SIZEOF(short)
493 AC_CHECK_SIZEOF(long)
495 AC_CHECK_SIZEOF(void *)
496 AC_CHECK_SIZEOF(long long)
497 AC_CHECK_SIZEOF(__int64)
499 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
503 *** GLib requires a 64 bit type. You might want to consider
504 *** using the GNU C compiler.
508 if test x$ac_cv_sizeof_long_long = x8; then
509 # long long is a 64 bit integer.
510 AC_MSG_CHECKING(for format to printf and scanf a guint64)
511 AC_CACHE_VAL(glib_cv_long_long_format,[
512 for format in ll q I64; do
513 AC_TRY_RUN([#include <stdio.h>
516 long long b, a = -0x3AFAFAFAFAFAFAFALL;
518 sprintf (buffer, "%${format}u", a);
519 sscanf (buffer, "%${format}u", &b);
523 [glib_cv_long_long_format=${format}
527 if test -n "$glib_cv_long_long_format"; then
528 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
529 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
533 elif test x$ac_cv_sizeof___int64 = x8; then
534 # __int64 is a 64 bit integer.
535 AC_MSG_CHECKING(for format to printf and scanf a guint64)
536 # We know this is MSVC, and what the formats are
537 glib_cv_long_long_format=I64
538 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
539 AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
540 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing __int64 with format I64])
543 dnl long doubles were not used, and a portability problem
547 dnl ok, here we try to check whether the systems prototypes for
548 dnl malloc and friends actually match the prototypes provided
549 dnl by gmem.h (keep in sync). i currently only know how to check
550 dnl this reliably with gcc (-Werror), improvements for other
551 dnl compilers are apprechiated.
552 SANE_MALLOC_PROTOS=no
553 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
554 glib_save_CFLAGS=$CFLAGS
555 if test "x$GCC" = "xyes"; then
556 CFLAGS="$CFLAGS -Werror"
557 AC_TRY_COMPILE([#include <stdlib.h>], [
558 void* (*my_calloc_p) (size_t, size_t) = calloc;
559 void* (*my_malloc_p) (size_t) = malloc;
560 void (*my_free_p) (void*) = free;
561 void* (*my_realloc_p) (void*, size_t) = realloc;
567 AC_DEFINE(SANE_MALLOC_PROTOS, 1,
568 [Define if you have correct malloc prototypes])
569 SANE_MALLOC_PROTOS=yes)
571 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
572 CFLAGS=$glib_save_CFLAGS
575 dnl check in which direction the stack grows
577 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
579 volatile int *a = 0, *b = 0;
581 int main () { volatile int y = 7; a = &y; foo (); return b > a; }
582 void foo (void) { volatile int x = 5; b = &x; }
584 glib_cv_stack_grows=no
586 glib_cv_stack_grows=yes
590 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
591 dnl truely know which ones of `inline', `__inline' and `__inline__' are
592 dnl actually supported.
593 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
595 __inline int foo () { return 0; }
596 int main () { return foo (); }
598 glib_cv_has__inline=yes
600 glib_cv_has__inline=no
603 case x$glib_cv_has__inline in
604 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
606 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
608 __inline__ int foo () { return 0; }
609 int main () { return foo (); }
611 glib_cv_has__inline__=yes
613 glib_cv_has__inline__=no
616 case x$glib_cv_has__inline__ in
617 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
619 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
622 inline int foo () { return 0; }
623 int main () { return foo (); }
625 glib_cv_hasinline=yes
630 case x$glib_cv_hasinline in
631 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
634 # check for flavours of varargs macros
635 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
637 int a(int p1, int p2, int p3);
638 #define call_a(...) a(1,__VA_ARGS__)
640 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
641 AC_MSG_RESULT($g_have_iso_c_varargs)
643 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
644 if test "$CXX" = ""; then
646 g_have_iso_cxx_varargs=no
650 int a(int p1, int p2, int p3);
651 #define call_a(...) a(1,__VA_ARGS__)
653 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
656 AC_MSG_RESULT($g_have_iso_cxx_varargs)
658 AC_MSG_CHECKING(for GNUC varargs macros)
660 int a(int p1, int p2, int p3);
661 #define call_a(params...) a(1,params)
663 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
664 AC_MSG_RESULT($g_have_gnuc_varargs)
666 # check for bytesex stuff
669 # check for header files
670 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h sys/param.h sys/poll.h sys/select.h sys/types.h])
671 AC_CHECK_HEADERS([sys/time.h sys/times.h unistd.h values.h stdint.h sched.h])
673 # Checks for libcharset
676 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
677 AC_CHECK_FUNCS(setlocale)
679 AC_MSG_CHECKING(whether make is GNU Make)
682 if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
683 STRIP_BEGIN='$(strip $(STRIP_DUMMY)'
690 AC_SUBST(STRIP_DUMMY)
691 AC_SUBST(STRIP_BEGIN)
694 # check additional type sizes
695 AC_CHECK_SIZEOF(size_t)
697 dnl Try to figure out whether gsize, gssize should be long or int
698 AC_MSG_CHECKING([for the appropriate definition for size_t])
700 case $ac_cv_sizeof_size_t in
710 *) AC_MSG_ERROR([No type matching size_t in size])
714 dnl If int/long are the same size, we see which one produces
715 dnl warnings when used in the location as size_t. (This matters
718 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
719 test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
720 GLIB_CHECK_COMPILE_WARNINGS([
725 unsigned int *size_int = &s;
726 return (int)*size_int;
728 ],glib_size_type=int,
729 [GLIB_CHECK_COMPILE_WARNINGS([
734 unsigned long *size_long = &s;
735 return (int)*size_long;
737 ],glib_size_type=long)])
740 AC_MSG_RESULT(unsigned $glib_size_type)
742 # Check for some functions
743 AC_CHECK_FUNCS(lstat strerror strsignal memmove mkstemp vsnprintf stpcpy strcasecmp strncasecmp poll getcwd nanosleep vasprintf setenv unsetenv getc_unlocked readlink symlink)
745 AC_FUNC_VSNPRINTF_C99
746 AC_FUNC_PRINTF_UNIX98
749 # Check whether to use an included printf
752 AC_ARG_ENABLE(included-printf,
753 [AC_HELP_STRING([--enable-included-printf],
754 [use included printf [default=auto]])],
755 enable_included_printf="$enableval")
757 need_included_printf=no
758 if test "x$enable_included_printf" = "xyes" ; then
759 need_included_printf=yes
761 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
762 need_included_printf=yes
764 if test "$ac_cv_func_printf_unix98" != "yes" ; then
765 need_included_printf=yes
767 if test "x$ac_cv_sizeof_long_long" = "x8" &&
768 test -z "$glib_cv_long_long_format" ; then
769 need_included_printf=yes
772 if test "x$enable_included_printf" = "xno" &&
773 test "x$need_included_printf" = "xyes" ; then
775 *** Your C library's printf doesn't appear to have the features that
776 *** GLib needs, but you specified --enable-included-printf=no.])
779 enable_included_printf=$need_included_printf
781 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
782 if test "$enable_included_printf" != "yes" ; then
783 AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
785 if test -z "$glib_cv_long_long_format" ; then
786 glib_cv_long_long_format="ll"
788 AC_DEFINE(HAVE_VASPRINTF,1)
791 # Checks needed for gnulib vasnprintf
798 AC_CHECK_TYPES(ptrdiff_t)
800 AC_CHECK_FUNCS(snprintf)
803 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
804 # The check is borrowed from the PERL Configure script.
805 if test "$ac_cv_func_memmove" != "yes"; then
806 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
807 glib_cv_working_bcopy,[AC_TRY_RUN([
809 char buf[128], abc[128], *b;
811 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
812 for (align = 7; align >= 0; align--) {
813 for (len = 36; len; len--) {
814 b = buf+align; bcopy(abc, b, len);
815 for (off = 1; off <= len; off++) {
816 bcopy(b, b+off, len); bcopy(b+off, b, len);
817 if (bcmp(b, abc, len)) return(1);
822 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
824 GLIB_ASSERT_SET(glib_cv_working_bcopy)
825 if test "$glib_cv_working_bcopy" = "yes"; then
826 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
830 # Check for sys_errlist
831 AC_MSG_CHECKING(for sys_errlist)
833 extern char *sys_errlist[];
835 sys_errlist[sys_nerr-1][0] = 0;
836 ], glib_ok=yes, glib_ok=no)
837 AC_MSG_RESULT($glib_ok)
838 if test "$glib_ok" = "no"; then
839 AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
842 # Check for sys_siglist
843 AC_MSG_CHECKING(for sys_siglist)
845 extern char *sys_siglist[];
846 exit (sys_siglist[0]);
847 ], glib_ok=yes, glib_ok=no)
848 AC_MSG_RESULT($glib_ok)
849 if test "$glib_ok" = "no"; then
850 AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
853 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
854 AC_MSG_CHECKING(for sys_siglist declaration)
855 AC_TRY_COMPILE([#include <signal.h>], [
856 strlen (sys_siglist[0]);
857 ], glib_ok=yes, glib_ok=no)
858 AC_MSG_RESULT($glib_ok)
859 if test "$glib_ok" = "no"; then
860 AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
863 # Check if <sys/select.h> needs to be included for fd_set
864 AC_MSG_CHECKING([for fd_set])
865 AC_TRY_COMPILE([#include <sys/types.h>],
866 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
867 if test "$gtk_ok" = "yes"; then
868 AC_MSG_RESULT([yes, found in sys/types.h])
870 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
871 if test "$gtk_ok" = "yes"; then
872 # *** FIXME: give it a different name
873 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
874 AC_MSG_RESULT([yes, found in sys/select.h])
876 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
881 dnl *** check for sane realloc() ***
882 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
883 AC_TRY_RUN([#include <stdlib.h>
885 return realloc (0, sizeof (int)) == 0;
887 [glib_cv_sane_realloc=yes],
888 [glib_cv_sane_realloc=no],
889 [glib_cv_sane_realloc=yes])
891 if test x$glib_cv_sane_realloc = xyes; then
892 AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
895 dnl Check for nl_langinfo and CODESET
897 AC_MSG_CHECKING([for nl_langinfo (CODESET)])
898 AC_TRY_COMPILE([#include <langinfo.h>],
899 [char *codeset = nl_langinfo (CODESET);],
900 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
903 AC_MSG_RESULT($have_codeset)
906 dnl ****************************************
907 dnl *** strlcpy/strlcat ***
908 dnl ****************************************
910 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
911 AC_TRY_RUN([#include <stdlib.h>
915 (void) strlcpy (p, "hi", 10);
916 if (strlcat (p, "bye", 0) != 3)
919 }], glib_cv_have_strlcpy=yes,
920 glib_cv_have_strlcpy=no,
921 glib_cv_have_strlcpy=no)])
922 if test "$glib_cv_have_strlcpy" = "yes"; then
923 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
927 dnl **********************
928 dnl *** va_copy checks ***
929 dnl **********************
930 dnl we currently check for all three va_copy possibilities, so we get
931 dnl all results in config.log for bug reports.
932 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
933 AC_LINK_IFELSE([#include <stdarg.h>
934 void f (int i, ...) {
935 va_list args1, args2;
937 va_copy (args2, args1);
938 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
940 va_end (args1); va_end (args2);
946 [glib_cv_va_copy=yes],
947 [glib_cv_va_copy=no])
949 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
950 AC_LINK_IFELSE([#include <stdarg.h>
951 void f (int i, ...) {
952 va_list args1, args2;
954 __va_copy (args2, args1);
955 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
957 va_end (args1); va_end (args2);
963 [glib_cv___va_copy=yes],
964 [glib_cv___va_copy=no])
967 if test "x$glib_cv_va_copy" = "xyes"; then
968 g_va_copy_func=va_copy
969 else if test "x$glib_cv___va_copy" = "xyes"; then
970 g_va_copy_func=__va_copy
974 if test -n "$g_va_copy_func"; then
975 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
978 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
979 AC_TRY_RUN([#include <stdarg.h>
980 void f (int i, ...) {
981 va_list args1, args2;
984 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
986 va_end (args1); va_end (args2);
992 [glib_cv_va_val_copy=yes],
993 [glib_cv_va_val_copy=no],
994 [glib_cv_va_val_copy=yes])
997 if test "x$glib_cv_va_val_copy" = "xno"; then
998 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
1001 dnl ***********************
1002 dnl *** g_module checks ***
1003 dnl ***********************
1005 G_MODULE_LIBS_EXTRA=
1006 G_MODULE_PLUGIN_LIBS=
1007 if test x"$glib_native_win32" = xyes; then
1008 dnl No use for this on Win32
1011 G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1013 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1014 G_MODULE_NEED_USCORE=0
1015 G_MODULE_BROKEN_RTLD_GLOBAL=0
1016 G_MODULE_HAVE_DLERROR=0
1017 dnl *** force native WIN32 shared lib loader
1018 if test -z "$G_MODULE_IMPL"; then
1020 *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1023 dnl *** dlopen() and dlsym() in system libraries
1024 if test -z "$G_MODULE_IMPL"; then
1025 AC_CHECK_FUNC(dlopen,
1026 [AC_CHECK_FUNC(dlsym,
1027 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1030 dnl *** load_image (BeOS)
1031 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
1032 AC_CHECK_LIB(root, load_image,
1033 [G_MODULE_LIBS="-lbe -lroot -lglib"
1034 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1035 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1036 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1039 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1040 if test -z "$G_MODULE_IMPL"; then
1041 AC_CHECK_FUNC(NSLinkModule,
1042 [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1043 G_MODULE_NEED_USCORE=1],
1046 dnl *** dlopen() and dlsym() in libdl
1047 if test -z "$G_MODULE_IMPL"; then
1048 AC_CHECK_LIB(dl, dlopen,
1049 [AC_CHECK_LIB(dl, dlsym,
1051 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1054 dnl *** shl_load() in libdld (HP-UX)
1055 if test -z "$G_MODULE_IMPL"; then
1056 AC_CHECK_LIB(dld, shl_load,
1057 [G_MODULE_LIBS=-ldld
1058 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1061 dnl *** additional checks for G_MODULE_IMPL_DL
1062 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1064 LDFLAGS_orig="$LDFLAGS"
1065 LIBS="$G_MODULE_LIBS $LIBS"
1066 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1067 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1068 AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1069 glib_cv_rtldglobal_broken,[
1073 # define RTLD_GLOBAL 0
1076 # define RTLD_LAZY 0
1080 void *handle, *global, *local;
1081 global = &pthread_create;
1082 handle = dlopen ("libpthread.so", RTLD_GLOBAL | RTLD_LAZY);
1083 if (!handle) return 0;
1084 local = dlsym (handle, "pthread_create");
1085 return global == local;
1087 [glib_cv_rtldglobal_broken=no],
1088 [glib_cv_rtldglobal_broken=yes],
1089 [glib_cv_rtldglobal_broken=no])
1090 rm -f plugin.c plugin.o plugin.lo
1092 if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1093 G_MODULE_BROKEN_RTLD_GLOBAL=1
1095 G_MODULE_BROKEN_RTLD_GLOBAL=0
1097 dnl *** check whether we need preceeding underscores
1098 AC_CACHE_CHECK([for preceeding underscore in symbols],
1100 AC_TRY_RUN([#include <dlfcn.h>
1101 int glib_underscore_test (void) { return 42; }
1103 void *f1 = (void*)0, *f2 = (void*)0, *handle;
1104 handle = dlopen ((void*)0, 0);
1106 f1 = dlsym (handle, "glib_underscore_test");
1107 f2 = dlsym (handle, "_glib_underscore_test");
1108 } return (!f2 || f1);
1110 [glib_cv_uscore=yes],
1111 [glib_cv_uscore=no],
1113 rm -f plugin.c plugin.$ac_objext plugin.lo
1115 GLIB_ASSERT_SET(glib_cv_uscore)
1116 if test "x$glib_cv_uscore" = "xyes"; then
1117 G_MODULE_NEED_USCORE=1
1119 G_MODULE_NEED_USCORE=0
1122 LDFLAGS="$LDFLAGS_orig"
1123 dnl *** check for having dlerror()
1124 AC_CHECK_FUNC(dlerror,
1125 [G_MODULE_HAVE_DLERROR=1],
1126 [G_MODULE_HAVE_DLERROR=0])
1129 dnl *** done, have we got an implementation?
1130 if test -z "$G_MODULE_IMPL"; then
1132 G_MODULE_SUPPORTED=false
1134 G_MODULE_SUPPORTED=true
1137 AC_MSG_CHECKING(for the suffix of shared libraries)
1139 hpux9* | hpux10* | hpux11*) # taken from ltconfig
1140 glib_gmodule_suffix='sl'
1143 glib_gmodule_suffix='dll'
1146 glib_gmodule_suffix='so'
1149 AC_MSG_RESULT(.$glib_gmodule_suffix)
1151 AC_SUBST(G_MODULE_SUPPORTED)
1152 AC_SUBST(G_MODULE_IMPL)
1153 AC_SUBST(G_MODULE_LIBS)
1154 AC_SUBST(G_MODULE_LIBS_EXTRA)
1155 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1156 AC_SUBST(G_MODULE_LDFLAGS)
1157 AC_SUBST(G_MODULE_HAVE_DLERROR)
1158 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1159 AC_SUBST(G_MODULE_NEED_USCORE)
1160 AC_SUBST(GLIB_DEBUG_FLAGS)
1162 dnl **********************
1163 dnl *** g_spawn checks ***
1164 dnl **********************
1166 AC_MSG_CHECKING(for gspawn implementation)
1169 GSPAWN=gspawn-win32.lo
1175 AC_MSG_RESULT($GSPAWN)
1178 dnl *************************
1179 dnl *** GIOChannel checks ***
1180 dnl *************************
1182 AC_MSG_CHECKING(for GIOChannel implementation)
1194 dnl check for cpu to enable double checked locking when possible
1195 dnl ************************************************************
1197 if test x"$have_threads" != xno; then
1198 AC_MSG_CHECKING(whether double checked locking is safe)
1199 # According to glibc/linuxthreads the following platforms do
1200 # not have the notion of a read or write memory barrier and
1201 # therefore the double checked locking should be safe. Have a
1202 # look at pthread_once in glibc/linuxthreads/mutex.c to see,
1205 arm|hppa|i386|i686|ia64|m68k|sh|cris|x86_64)
1206 g_use_double_checked_locking=yes
1209 g_use_double_checked_locking=no
1212 AC_MSG_RESULT($g_use_double_checked_locking)
1215 dnl ****************************************
1216 dnl *** platform dependent source checks ***
1217 dnl ****************************************
1219 AC_MSG_CHECKING(for platform-dependent source)
1221 *-*-cygwin*|*-*-mingw*)
1222 PLATFORMDEP=gwin32.lo
1228 AC_MSG_RESULT($PLATFORMDEP)
1229 AC_SUBST(PLATFORMDEP)
1231 AC_MSG_CHECKING([whether to compile timeloop])
1233 *-*-cygwin*|*-*-mingw*)
1240 AC_MSG_RESULT($enable_timeloop)
1241 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1243 AC_MSG_CHECKING([if building for some Win32 platform])
1245 *-*-mingw*|*-*-cygwin*)
1252 AC_MSG_RESULT($platform_win32)
1253 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1255 dnl ***********************
1256 dnl *** g_thread checks ***
1257 dnl ***********************
1259 AC_ARG_WITH(threads,
1260 [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/solaris/win32@:>@],
1261 [specify a thread implementation to use])],
1262 [if test "x$with_threads" = x; then
1265 want_threads=$with_threads
1268 if test "x$enable_threads" = "xno"; then
1272 dnl error and warning message
1273 dnl *************************
1275 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1276 computer. GLib will not have a default thread implementation."
1278 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1279 platform (normally it's "_REENTRANT"). I'll not use any flag on
1280 compilation now, but then your programs might not work.
1281 Please provide information on how it is done on your system."
1283 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1286 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1287 provide information on your thread implementation.
1288 You can also run 'configure --disable-threads'
1289 to compile without thread support."
1291 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1292 functions will not be MT-safe during their first call because
1293 there is no working 'getpwuid_r' on your system."
1295 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1296 because there is no 'localtime_r' on your system."
1298 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1299 crude surrogate will be used. If you happen to know a
1300 yield function for your system, please inform the GLib
1303 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for
1304 threads on your system. Thus threads can only have the default
1305 priority. If you happen to know these main/max
1306 priorities, please inform the GLib developers."
1308 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1309 linking threaded applications. As GLib cannot do that
1310 automatically, you will get an linkg error everytime you are
1311 not using the right compiler. In that case you have to relink
1312 with the right compiler. Ususally just '_r' is appended
1313 to the compiler name."
1315 dnl determination of thread implementation
1316 dnl ***************************************
1318 # have_threads=no means no thread support
1319 # have_threads=none means no default thread implementation
1322 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
1325 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
1329 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1330 || test "x$want_threads" = xdce; then
1331 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1332 # -U_OSF_SOURCE is for Digital UNIX 4.0d
1333 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1334 glib_save_CPPFLAGS="$CPPFLAGS"
1335 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1336 if test "x$have_threads" = xno; then
1337 AC_TRY_COMPILE([#include <pthread.h>],
1338 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1341 if test "x$have_threads" = xno; then
1342 AC_TRY_COMPILE([#include <pthread.h>],
1344 pthread_mutex_init (&m, pthread_mutexattr_default);],
1347 # Tru64Unix requires -pthread to find pthread.h. See #103020
1348 CPPFLAGS="$CPPFLAGS -pthread"
1349 if test "x$have_threads" = xno; then
1350 AC_TRY_COMPILE([#include <pthread.h>],
1351 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1354 CPPFLAGS="$glib_save_CPPFLAGS"
1356 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1363 if test "x$want_threads" = xnone; then
1367 AC_MSG_CHECKING(for thread implementation)
1369 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1370 AC_MSG_RESULT(none available)
1371 AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1373 AC_MSG_RESULT($have_threads)
1377 dnl determination of G_THREAD_CFLAGS
1378 dnl ********************************
1381 G_THREAD_LIBS_EXTRA=
1385 dnl Test program for basic POSIX threads functionality
1387 m4_define([glib_thread_test],[
1388 #include <pthread.h>
1390 void* func(void* data) {check_me = 42; return &check_me;}
1394 pthread_create (&t, $1, func, 0);
1395 pthread_join (t, &ret);
1396 exit (check_me != 42 || ret != &check_me);
1400 dnl Test program for sched_get_priority_min()
1402 m4_define([glib_sched_priority_test],[
1407 return sched_get_priority_min(SCHED_OTHER)==-1
1411 if test x"$have_threads" != xno; then
1413 if test x"$have_threads" = xposix; then
1414 # First we test for posix, whether -pthread or -pthreads do the trick as
1415 # both CPPFLAG and LIBS.
1416 # One of them does for most gcc versions and some other platforms/compilers
1417 # too and could be considered as the canonical way to go.
1418 for flag in pthread pthreads; do
1419 glib_save_CFLAGS="$CFLAGS"
1420 CFLAGS="$CFLAGS -$flag"
1421 AC_TRY_RUN(glib_thread_test(0),
1422 glib_flag_works=yes,
1424 [AC_LINK_IFELSE(glib_thread_test(0),
1425 glib_flag_works=yes,
1426 glib_flag_works=no)])
1427 CFLAGS="$glib_save_CFLAGS"
1428 if test $glib_flag_works = yes ; then
1429 G_THREAD_CFLAGS=-$flag
1430 G_THREAD_LIBS=-$flag
1435 if test x"$G_THREAD_CFLAGS" = x; then
1437 # The canonical -pthread[s] does not work. Try something different.
1441 if test x"$GCC" = xyes; then
1442 # GCC 3.0 and above needs -pthread.
1443 # Should be coverd by the case above.
1444 # GCC 2.x and below needs -mthreads
1445 G_THREAD_CFLAGS="-mthreads"
1446 G_THREAD_LIBS=$G_THREAD_CFLAGS
1448 # We are probably using the aix compiler. Normaly a
1449 # program would have to be compiled with the _r variant
1450 # of the corresponding compiler, but we as GLib cannot
1451 # do that: but the good news is that for compiling the
1452 # only difference is the added -D_THREAD_SAFE compile
1453 # option. This is according to the "C for AIX User's
1455 G_THREAD_CFLAGS="-D_THREAD_SAFE"
1459 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1462 # So we are using dce threads. posix threads are already
1464 G_THREAD_CFLAGS="-threads"
1465 G_THREAD_LIBS=$G_THREAD_CFLAGS
1468 if test x"$GCC" = xyes; then
1469 # We are using solaris threads. posix threads are
1470 # already catched above.
1471 G_THREAD_CFLAGS="-threads"
1473 G_THREAD_CFLAGS="-mt"
1475 G_THREAD_LIBS=$G_THREAD_CFLAGS
1477 *-sysv5uw7*) # UnixWare 7
1478 # We are not using gcc with -pthread. Catched above.
1479 G_THREAD_CFLAGS="-Kthread"
1480 G_THREAD_LIBS=$G_THREAD_CFLAGS
1483 # No flag needed when using MSVCRT.DLL
1487 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1493 # if we are not finding the localtime_r function, then we probably are
1494 # not using the proper multithread flag
1496 glib_save_CPPFLAGS="$CPPFLAGS"
1497 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1499 # First we test, whether localtime_r is declared in time.h
1500 # directly. Then we test whether a macro localtime_r exists, in
1501 # which case localtime_r in the test program is replaced and thus
1502 # if we still find localtime_r in the output, it is not defined as
1505 AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
1506 [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>
1508 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
1510 CPPFLAGS="$glib_save_CPPFLAGS"
1512 AC_MSG_CHECKING(thread related cflags)
1513 AC_MSG_RESULT($G_THREAD_CFLAGS)
1514 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1517 dnl determination of G_THREAD_LIBS
1518 dnl ******************************
1520 mutex_has_default=no
1521 case $have_threads in
1523 glib_save_CPPFLAGS="$CPPFLAGS"
1524 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1525 if test x"$G_THREAD_LIBS" = x; then
1528 # We are not using gcc (would have set G_THREAD_LIBS) and thus
1529 # probably using the aix compiler.
1530 AC_MSG_WARN($AIX_COMPILE_INFO)
1534 glib_save_LIBS="$LIBS"
1535 for thread_lib in "" pthread pthread32 pthreads thread dce; do
1536 if test x"$thread_lib" = x; then
1540 add_thread_lib="-l$thread_lib"
1541 IN=" in -l$thread_lib"
1543 if test x"$have_threads" = xposix; then
1546 defattr=pthread_attr_default
1549 LIBS="$add_thread_lib $glib_save_LIBS"
1551 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
1552 AC_TRY_RUN(glib_thread_test($defattr),
1555 [AC_LINK_IFELSE(glib_thread_test($defattr),
1558 AC_MSG_RESULT($glib_result)
1560 if test "$glib_result" = "yes" ; then
1561 G_THREAD_LIBS="$add_thread_lib"
1565 if test "x$G_THREAD_LIBS" = xerror; then
1566 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1568 LIBS="$glib_save_LIBS"
1573 glib_save_LIBS="$LIBS"
1574 for thread_lib in "" rt rte; do
1575 if test x"$thread_lib" = x; then
1579 add_thread_lib="-l$thread_lib"
1580 IN=" in -l$thread_lib"
1582 LIBS="$add_thread_lib $glib_save_LIBS"
1584 AC_MSG_CHECKING(for sched_get_priority_min$IN)
1585 AC_TRY_RUN(glib_sched_priority_test,
1588 [AC_LINK_IFELSE(glib_sched_priority_test,
1591 AC_MSG_RESULT($glib_result)
1593 if test "$glib_result" = "yes" ; then
1594 G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
1595 posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
1596 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
1600 LIBS="$glib_save_LIBS"
1601 mutex_has_default=yes
1602 mutex_default_type='pthread_mutex_t'
1603 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
1604 mutex_header_file='pthread.h'
1605 if test "x$have_threads" = "xposix"; then
1606 g_threads_impl="POSIX"
1608 g_threads_impl="DCE"
1609 have_threads="posix"
1611 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
1612 CPPFLAGS="$glib_save_CPPFLAGS"
1615 mutex_has_default=yes
1616 mutex_default_type='mutex_t'
1617 mutex_default_init="DEFAULTMUTEX"
1618 mutex_header_file='thread.h'
1619 g_threads_impl="SOLARIS"
1622 g_threads_impl="WIN32"
1625 g_threads_impl="NONE"
1628 g_threads_impl="NONE"
1633 if test "x$G_THREAD_LIBS" = xerror; then
1634 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1639 G_THREAD_LIBS="-lbe -lroot -lglib "
1640 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1646 AC_MSG_CHECKING(thread related libraries)
1647 AC_MSG_RESULT($G_THREAD_LIBS)
1649 dnl check for mt safe function variants and some posix functions
1650 dnl ************************************************************
1652 if test x"$have_threads" != xno; then
1653 glib_save_LIBS="$LIBS"
1654 # we are not doing the following for now, as this might require glib
1655 # to always be linked with the thread libs on some platforms.
1656 # LIBS="$LIBS $G_THREAD_LIBS"
1657 AC_CHECK_FUNCS(localtime_r)
1658 if test "$ac_cv_header_pwd_h" = "yes"; then
1659 AC_CACHE_CHECK([for posix getpwuid_r],
1660 ac_cv_func_posix_getpwuid_r,
1666 struct passwd pwd, *pwptr = &pwd;
1669 error = getpwuid_r (0, &pwd, buffer,
1670 sizeof (buffer), &pwptr);
1671 return (error < 0 && errno == ENOSYS)
1674 [ac_cv_func_posix_getpwuid_r=yes],
1675 [ac_cv_func_posix_getpwuid_r=no])])
1676 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
1677 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
1678 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
1679 [Have POSIX function getpwuid_r])
1681 AC_CACHE_CHECK([for nonposix getpwuid_r],
1682 ac_cv_func_nonposix_getpwuid_r,
1683 [AC_TRY_LINK([#include <pwd.h>],
1684 [char buffer[10000];
1686 getpwuid_r (0, &pwd, buffer,
1688 [ac_cv_func_nonposix_getpwuid_r=yes],
1689 [ac_cv_func_nonposix_getpwuid_r=no])])
1690 GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
1691 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
1692 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
1693 [Have non-POSIX function getpwuid_r])
1697 LIBS="$G_THREAD_LIBS $LIBS"
1698 if test x"$have_threads" = xposix; then
1699 glib_save_CPPFLAGS="$CPPFLAGS"
1700 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1701 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
1702 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
1703 # This is not AC_CHECK_FUNC to also work with function
1704 # name mangling in header files.
1705 AC_MSG_CHECKING(for pthread_attr_setstacksize)
1706 AC_TRY_LINK([#include <pthread.h>],
1707 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
1709 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
1710 [Have function pthread_attr_setstacksize])],
1711 [AC_MSG_RESULT(no)])
1712 AC_MSG_CHECKING(for minimal/maximal thread priority)
1713 if test x"$posix_priority_min" = x; then
1714 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
1716 posix_priority_min=PX_PRIO_MIN
1717 posix_priority_max=PX_PRIO_MAX])
1719 if test x"$posix_priority_min" = x; then
1721 AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
1722 PTHREAD_PRIO_MIN],,[
1723 posix_priority_min=PTHREAD_PRIO_MIN
1724 posix_priority_max=PTHREAD_PRIO_MAX])
1726 if test x"$posix_priority_min" = x; then
1727 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
1729 posix_priority_min=PRI_OTHER_MIN
1730 posix_priority_max=PRI_OTHER_MAX])
1732 if test x"$posix_priority_min" = x; then
1733 AC_MSG_RESULT(none found)
1734 AC_MSG_WARN($POSIX_NO_PRIORITIES)
1735 posix_priority_min=-1
1736 posix_priority_max=-1
1738 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
1739 AC_MSG_CHECKING(for pthread_setschedparam)
1740 AC_TRY_LINK([#include <pthread.h>],
1741 [pthread_t t; pthread_setschedparam(t, 0, NULL)],
1743 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
1744 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
1746 AC_MSG_WARN($POSIX_NO_PRIORITIES)])
1748 posix_yield_func=none
1749 AC_MSG_CHECKING(for posix yield function)
1750 for yield_func in sched_yield pthread_yield_np pthread_yield \
1752 AC_TRY_LINK([#include <pthread.h>],
1754 [posix_yield_func="$yield_func"
1757 if test x"$posix_yield_func" = xnone; then
1758 AC_MSG_RESULT(none found)
1759 AC_MSG_WARN($POSIX_NO_YIELD)
1760 posix_yield_func="g_usleep(1000)"
1762 AC_MSG_RESULT($posix_yield_func)
1763 posix_yield_func="$posix_yield_func()"
1765 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
1766 CPPFLAGS="$glib_save_CPPFLAGS"
1768 AC_CACHE_CHECK([whether to use the PID niceness surrogate for thread priorities],
1769 glib_cv_use_pid_surrogate,
1771 #include <pthread.h>
1772 #include <sys/types.h>
1774 pid_t other_pid = 0;
1776 void* func(void* data) {other_pid = getpid();}
1780 pthread_create (&t, 0, func, NULL);
1781 pthread_join (t, &ret);
1782 exit (getpid()==other_pid ||
1783 $posix_priority_min != $posix_priority_max);
1785 [glib_cv_use_pid_surrogate=yes],
1786 [glib_cv_use_pid_surrogate=no],
1788 GLIB_ASSERT_SET(glib_cv_use_pid_surrogate)
1789 if test "$glib_cv_use_pid_surrogate" = "yes" ; then
1790 AC_DEFINE(G_THREAD_USE_PID_SURROGATE, 1,
1791 [whether to use the PID niceness surrogate for thread priorities])
1794 elif test x"$have_threads" = xwin32; then
1795 # It's a pointer to a private struct
1796 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
1797 elif test x"$have_threads" = xsolaris; then
1798 GLIB_SIZEOF([#include <thread.h>], thread_t, system_thread)
1801 LIBS="$glib_save_LIBS"
1803 # now spit out all the warnings.
1804 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
1805 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
1806 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
1808 if test "$ac_cv_func_localtime_r" != "yes"; then
1809 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
1813 if test x"$glib_cv_sizeof_system_thread" = x; then
1814 # use a pointer as a fallback.
1815 GLIB_SIZEOF(,void *, system_thread)
1819 # Hack to deal with:
1821 # a) GCC < 3.3 for Linux doesn't include -lpthread when
1822 # building shared libraries with linux.
1823 # b) libtool doesn't recognize -pthread as a library dependency.
1827 G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
1830 G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-Wc,-pthread/`"
1834 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
1835 [Source file containing theread implementation])
1836 AC_SUBST(G_THREAD_CFLAGS)
1837 AC_SUBST(G_THREAD_LIBS)
1838 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
1839 AC_SUBST(G_THREAD_LIBS_EXTRA)
1841 dnl **********************************************
1842 dnl *** GDefaultMutex setup and initialization ***
1843 dnl **********************************************
1845 dnl if mutex_has_default = yes, we also got
1846 dnl mutex_default_type, mutex_default_init and mutex_header_file
1847 if test $mutex_has_default = yes ; then
1848 glib_save_CPPFLAGS="$CPPFLAGS"
1849 glib_save_LIBS="$LIBS"
1850 LIBS="$G_THREAD_LIBS $LIBS"
1851 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1852 GLIB_SIZEOF([#include <$mutex_header_file>],
1853 $mutex_default_type,
1855 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
1856 $mutex_default_type,
1858 $glib_cv_sizeof_gmutex,
1859 $mutex_default_init)
1860 if test x"$glib_cv_byte_contents_gmutex" = xno; then
1861 mutex_has_default=no
1863 CPPFLAGS="$glib_save_CPPFLAGS"
1864 LIBS="$glib_save_LIBS"
1867 dnl ****************************************
1868 dnl *** GLib POLL* compatibility defines ***
1869 dnl ****************************************
1871 glib_poll_includes=["
1872 #include <sys/types.h>
1873 #include <sys/poll.h>
1876 if test $ac_cv_header_sys_types_h = yes &&
1877 test $ac_cv_header_sys_poll_h = yes ; then
1879 GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
1880 GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
1881 GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
1882 GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
1883 GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
1884 GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
1885 if $glib_failed ; then
1886 AC_MSG_ERROR([Could not determine values for POLL* constants])
1889 glib_cv_value_POLLIN=1
1890 glib_cv_value_POLLOUT=4
1891 glib_cv_value_POLLPRI=2
1892 glib_cv_value_POLLERR=8
1893 glib_cv_value_POLLHUP=16
1894 glib_cv_value_POLLNVAL=32
1897 dnl **********************
1898 dnl *** Win32 API libs ***
1899 dnl **********************
1903 G_LIBS_EXTRA="-luser32 -lkernel32"
1906 G_LIBS_EXTRA="-lwsock32"
1912 AC_SUBST(G_LIBS_EXTRA)
1914 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
1915 dnl since we need it for g_iconv()
1917 AC_MSG_CHECKING([for EILSEQ])
1923 ], have_eilseq=yes, have_eilseq=no);
1924 AC_MSG_RESULT($have_eilseq)
1926 dnl ******************************************************************
1927 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
1928 dnl ******************************************************************
1930 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
1932 if test $cross_compiling = yes; then
1933 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
1934 if test x$GLIB_GENMARSHAL = xno; then
1935 AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
1939 dnl **************************
1940 dnl *** Checks for gtk-doc ***
1941 dnl **************************
1943 GTK_DOC_CHECK([1.0])
1946 [AC_HELP_STRING([--enable-man],
1947 [regenerate man pages from Docbook [default=no]])],enable_man=yes,
1950 dnl Check for xsltproc
1952 AC_PATH_PROG([XSLTPROC], [xsltproc])
1953 if test -z "$XSLTPROC"; then
1957 dnl check for DocBook DTD and stylesheets in the local catalog.
1958 JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
1959 [DocBook XML DTD V4.1.2],,enable_man=no)
1960 JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
1961 [DocBook XSL Stylesheets],,enable_man=no)
1962 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
1964 dnl ******************************
1965 dnl *** output the whole stuff ***
1966 dnl ******************************
1968 dnl this section will only be run if config.status is invoked with no
1969 dnl arguments, or with "glibconfig.h" as an argument.
1970 AC_CONFIG_COMMANDS([glibconfig.h],
1972 outfile=glibconfig.h-tmp
1973 cat > $outfile <<\_______EOF
1976 * This is a generated file. Please modify 'configure.in'
1979 #ifndef __G_LIBCONFIG_H__
1980 #define __G_LIBCONFIG_H__
1982 #include <glib/gmacros.h>
1986 if test x$glib_limits_h = xyes; then
1987 echo '#include <limits.h>' >> $outfile
1989 if test x$glib_float_h = xyes; then
1990 echo '#include <float.h>' >> $outfile
1992 if test x$glib_values_h = xyes; then
1993 echo '#include <values.h>' >> $outfile
1995 if test "$glib_header_alloca_h" = "yes"; then
1996 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
1998 if test x$glib_sys_poll_h = xyes; then
1999 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
2002 cat >> $outfile <<_______EOF
2006 #define G_MINFLOAT $glib_mf
2007 #define G_MAXFLOAT $glib_Mf
2008 #define G_MINDOUBLE $glib_md
2009 #define G_MAXDOUBLE $glib_Md
2010 #define G_MINSHORT $glib_ms
2011 #define G_MAXSHORT $glib_Ms
2012 #define G_MAXUSHORT $glib_Mus
2013 #define G_MININT $glib_mi
2014 #define G_MAXINT $glib_Mi
2015 #define G_MAXUINT $glib_Mui
2016 #define G_MINLONG $glib_ml
2017 #define G_MAXLONG $glib_Ml
2018 #define G_MAXULONG $glib_Mul
2023 ### this should always be true in a modern C/C++ compiler
2024 cat >>$outfile <<_______EOF
2025 typedef signed char gint8;
2026 typedef unsigned char guint8;
2030 if test -n "$gint16"; then
2031 cat >>$outfile <<_______EOF
2032 typedef signed $gint16 gint16;
2033 typedef unsigned $gint16 guint16;
2034 #define G_GINT16_MODIFIER $gint16_modifier
2035 #define G_GINT16_FORMAT $gint16_format
2036 #define G_GUINT16_FORMAT $guint16_format
2041 if test -n "$gint32"; then
2042 cat >>$outfile <<_______EOF
2043 typedef signed $gint32 gint32;
2044 typedef unsigned $gint32 guint32;
2045 #define G_GINT32_MODIFIER $gint32_modifier
2046 #define G_GINT32_FORMAT $gint32_format
2047 #define G_GUINT32_FORMAT $guint32_format
2051 cat >>$outfile <<_______EOF
2052 #define G_HAVE_GINT64 1 /* deprecated, always true */
2054 ${glib_extension}typedef signed $gint64 gint64;
2055 ${glib_extension}typedef unsigned $gint64 guint64;
2057 #define G_GINT64_CONSTANT(val) $gint64_constant
2060 if test x$gint64_format != x ; then
2061 cat >>$outfile <<_______EOF
2062 #define G_GINT64_MODIFIER $gint64_modifier
2063 #define G_GINT64_FORMAT $gint64_format
2064 #define G_GUINT64_FORMAT $guint64_format
2067 cat >>$outfile <<_______EOF
2068 #undef G_GINT64_MODIFIER
2069 #undef G_GINT64_FORMAT
2070 #undef G_GUINT64_FORMAT
2074 cat >>$outfile <<_______EOF
2076 #define GLIB_SIZEOF_VOID_P $glib_void_p
2077 #define GLIB_SIZEOF_LONG $glib_long
2078 #define GLIB_SIZEOF_SIZE_T $glib_size_t
2082 cat >>$outfile <<_______EOF
2083 typedef signed $glib_size_type_define gssize;
2084 typedef unsigned $glib_size_type_define gsize;
2085 #define G_GSIZE_MODIFIER $gsize_modifier
2086 #define G_GSSIZE_FORMAT $gssize_format
2087 #define G_GSIZE_FORMAT $gsize_format
2089 #define G_MAXSIZE G_MAXU$glib_msize_type
2092 if test -z "$glib_unknown_void_p"; then
2093 cat >>$outfile <<_______EOF
2095 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
2096 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
2098 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
2099 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
2102 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
2107 cat >>$outfile <<_______EOF
2116 #define G_HAVE_INLINE 1
2117 #else /* !__cplusplus */
2119 #endif /* !__cplusplus */
2123 if test x$g_have_iso_c_varargs = xyes ; then
2124 cat >>$outfile <<_______EOF
2126 # define G_HAVE_ISO_VARARGS 1
2130 if test x$g_have_iso_cxx_varargs = xyes ; then
2131 cat >>$outfile <<_______EOF
2133 # define G_HAVE_ISO_VARARGS 1
2137 if test x$g_have_gnuc_varargs = xyes ; then
2138 cat >>$outfile <<_______EOF
2140 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2141 * is passed ISO vararg support is turned off, and there is no work
2142 * around to turn it on, so we unconditionally turn it off.
2144 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2145 # undef G_HAVE_ISO_VARARGS
2148 #define G_HAVE_GNUC_VARARGS 1
2152 case x$g_stack_grows in
2153 xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2154 *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2159 if test x$g_have_eilseq = xno; then
2160 cat >>$outfile <<_______EOF
2162 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2163 * The correspondence between this and the corresponding definition
2164 * in libiconv is essential.
2166 # define EILSEQ ENOENT
2173 if test x$g_mutex_has_default = xyes; then
2174 cat >>$outfile <<_______EOF
2175 $g_enable_threads_def G_THREADS_ENABLED
2176 #define G_THREADS_IMPL_$g_threads_impl_def
2177 typedef struct _GStaticMutex GStaticMutex;
2178 struct _GStaticMutex
2180 struct _GMutex *runtime_mutex;
2182 char pad[[$g_mutex_sizeof]];
2183 double dummy_double;
2184 void *dummy_pointer;
2188 #define G_STATIC_MUTEX_INIT { NULL, { { $g_mutex_contents} } }
2189 #define g_static_mutex_get_mutex(mutex) \\
2190 (g_thread_use_default_impl ? ((GMutex*) &((mutex)->static_mutex)) : \\
2191 g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
2194 cat >>$outfile <<_______EOF
2195 $g_enable_threads_def G_THREADS_ENABLED
2196 #define G_THREADS_IMPL_$g_threads_impl_def
2197 typedef struct _GMutex* GStaticMutex;
2198 #define G_STATIC_MUTEX_INIT NULL
2199 #define g_static_mutex_get_mutex(mutex) \\
2200 (g_static_mutex_get_mutex_impl_shortcut (mutex))
2204 if test x$g_use_double_checked_locking = xyes; then
2205 cat >>$outfile <<_______EOF
2206 /* double checked locking can be used on this platform */
2207 #define g_once(once, func, arg) \\
2208 ((once)->status == G_ONCE_STATUS_READY ? (once)->retval : \\
2209 g_once_impl (once, func, arg))
2210 #define g_static_mutex_get_mutex_impl_shortcut(mutex) \\
2211 (*(mutex) ? *(mutex) : g_static_mutex_get_mutex_impl (mutex))
2214 cat >>$outfile <<_______EOF
2215 /* double checked locking is unsafe to use on this platform, do full locking */
2216 #define g_once(once, func, arg) (g_once_impl(once, func, arg))
2217 #define g_static_mutex_get_mutex_impl_shortcut(mutex) \\
2218 (g_static_mutex_get_mutex_impl (mutex))
2222 cat >>$outfile <<_______EOF
2223 /* This represents a system thread as used by the implementation. An
2224 * alien implementaion, as loaded by g_thread_init can only count on
2225 * "sizeof (gpointer)" bytes to store their info. We however need more
2226 * for some of our native implementations. */
2227 typedef union _GSystemThread GSystemThread;
2228 union _GSystemThread
2230 char data[[$g_system_thread_sizeof]];
2231 double dummy_double;
2232 void *dummy_pointer;
2238 g_bit_sizes="16 32 64"
2239 for bits in $g_bit_sizes; do
2240 cat >>$outfile <<_______EOF
2241 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
2242 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
2243 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
2244 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
2248 cat >>$outfile <<_______EOF
2249 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
2250 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
2251 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
2252 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
2253 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
2254 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
2255 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
2256 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
2257 #define G_BYTE_ORDER $g_byte_order
2259 #define GLIB_SYSDEF_POLLIN =$g_pollin
2260 #define GLIB_SYSDEF_POLLOUT =$g_pollout
2261 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
2262 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
2263 #define GLIB_SYSDEF_POLLERR =$g_pollerr
2264 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
2266 #define G_MODULE_SUFFIX "$g_module_suffix"
2270 #endif /* GLIBCONFIG_H */
2274 if cmp -s $outfile glibconfig.h; then
2275 AC_MSG_NOTICE([glibconfig.h is unchanged])
2278 mv $outfile glibconfig.h
2282 # Note that if two cases are the same, case goes with the first one.
2283 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
2284 # on variable expansion in case labels. Look at the generated config.status
2287 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
2288 glib_header_alloca_h="$ac_cv_working_alloca_h"
2290 glib_header_alloca_h="$ac_cv_header_alloca_h"
2294 x$ac_cv_header_float_h)
2296 glib_mf=FLT_MIN glib_Mf=FLT_MAX
2297 glib_md=DBL_MIN glib_Md=DBL_MAX
2299 x$ac_cv_header_values_h)
2301 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
2302 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
2307 x$ac_cv_header_limits_h)
2309 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
2310 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
2311 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
2313 x$ac_cv_header_values_h)
2315 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
2316 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
2317 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
2321 if test x$ac_cv_header_sys_poll_h = xyes ; then
2326 $ac_cv_sizeof_short)
2328 gint16_modifier='"h"'
2329 gint16_format='"hi"'
2330 guint16_format='"hu"'
2334 gint16_modifier='""'
2336 guint16_format='"u"'
2340 $ac_cv_sizeof_short)
2342 gint32_modifier='"h"'
2343 gint32_format='"hi"'
2344 guint32_format='"hu"'
2348 gint32_modifier='""'
2350 guint32_format='"u"'
2354 gint32_modifier='"l"'
2355 gint32_format='"li"'
2356 guint32_format='"lu"'
2362 gint64_modifier='""'
2364 guint64_format='"u"'
2366 gint64_constant='(val)'
2370 gint64_modifier='"l"'
2371 gint64_format='"li"'
2372 guint64_format='"lu"'
2374 gint64_constant='(val##L)'
2376 $ac_cv_sizeof_long_long)
2378 if test -n "$glib_cv_long_long_format"; then
2379 gint64_modifier='"'$glib_cv_long_long_format'"'
2380 gint64_format='"'$glib_cv_long_long_format'i"'
2381 guint64_format='"'$glib_cv_long_long_format'u"'
2383 glib_extension='G_GNUC_EXTENSION '
2384 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
2386 $ac_cv_sizeof___int64)
2388 if test -n "$glib_cv_long_long_format"; then
2389 gint64_modifier='"'$glib_cv_long_long_format'"'
2390 gint64_format='"'$glib_cv_long_long_format'i"'
2391 guint64_format='"'$glib_cv_long_long_format'u"'
2394 gint64_constant='(val##i64)'
2397 glib_size_t=$ac_cv_sizeof_size_t
2398 glib_size_type_define=$glib_size_type
2399 glib_void_p=$ac_cv_sizeof_long
2400 glib_long=$ac_cv_sizeof_void_p
2402 case $glib_size_type in
2404 gsize_modifier='"h"'
2406 gssize_format='"hi"'
2407 glib_msize_type='SHRT'
2413 glib_msize_type='INT'
2416 gsize_modifier='"l"'
2418 gssize_format='"li"'
2419 glib_msize_type='LONG'
2423 gintbits=`expr $ac_cv_sizeof_int \* 8`
2424 glongbits=`expr $ac_cv_sizeof_long \* 8`
2427 case $ac_cv_sizeof_void_p in
2428 $ac_cv_sizeof_int) glib_gpi_cast='' glib_gpui_cast='' ;;
2429 $ac_cv_sizeof_long) glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
2430 *) glib_unknown_void_p=yes ;;
2435 x$ac_cv_func_atexit)
2437 #ifdef NeXT /* @#%@! NeXTStep */
2438 # define g_ATEXIT(proc) (!atexit (proc))
2440 # define g_ATEXIT(proc) (atexit (proc))
2443 x$ac_cv_func_on_exit)
2445 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
2450 x$ac_cv_func_memmove)
2452 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
2454 x$glib_cv_working_bcopy)
2456 /* memmove isn't available, but bcopy can copy overlapping memory regions */
2457 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
2461 /* memmove isn't found and bcopy can't copy overlapping memory regions,
2462 * so we have to roll our own copy routine. */
2463 void g_memmove (void* dest, const void * src, unsigned long len);"
2468 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
2469 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
2470 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
2474 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
2475 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
2479 if test x$glib_cv_va_val_copy = xno; then
2480 glib_vacopy="\$glib_vacopy
2481 #define G_VA_COPY_AS_ARRAY 1"
2484 if test x$glib_cv_hasinline = xyes; then
2485 glib_inline='#define G_HAVE_INLINE 1'
2487 if test x$glib_cv_has__inline = xyes; then
2488 glib_inline="\$glib_inline
2489 #define G_HAVE___INLINE 1"
2491 if test x$glib_cv_has__inline__ = xyes; then
2492 glib_inline="\$glib_inline
2493 #define G_HAVE___INLINE__ 1"
2496 g_have_gnuc_varargs=$g_have_gnuc_varargs
2497 g_have_iso_c_varargs=$g_have_iso_c_varargs
2498 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
2501 x$ac_cv_c_bigendian)
2502 g_byte_order=G_BIG_ENDIAN
2507 g_byte_order=G_LITTLE_ENDIAN
2513 g_pollin=$glib_cv_value_POLLIN
2514 g_pollout=$glib_cv_value_POLLOUT
2515 g_pollpri=$glib_cv_value_POLLPRI
2516 g_pollhup=$glib_cv_value_POLLHUP
2517 g_pollerr=$glib_cv_value_POLLERR
2518 g_pollnval=$glib_cv_value_POLLNVAL
2520 g_stack_grows=$glib_cv_stack_grows
2522 g_have_eilseq=$have_eilseq
2524 case x$have_threads in
2525 xno) g_enable_threads_def="#undef";;
2526 *) g_enable_threads_def="#define";;
2529 g_threads_impl_def=$g_threads_impl
2530 g_use_double_checked_locking=$g_use_double_checked_locking
2532 g_mutex_has_default="$mutex_has_default"
2533 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
2534 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
2535 g_mutex_contents="$glib_cv_byte_contents_gmutex"
2537 g_module_suffix="$glib_gmodule_suffix"
2541 glib_os="#define G_OS_BEOS"
2544 glib_os="#define G_OS_UNIX
2545 #define G_PLATFORM_WIN32
2546 #define G_WITH_CYGWIN"
2549 glib_os="#define G_OS_WIN32
2550 #define G_PLATFORM_WIN32"
2553 glib_os="#define G_OS_UNIX"
2560 glib-2.0-uninstalled.pc
2562 gmodule-2.0-uninstalled.pc
2564 gthread-2.0-uninstalled.pc
2566 gobject-2.0-uninstalled.pc
2571 build/win32/Makefile
2572 build/win32/dirent/Makefile
2574 glib/libcharset/Makefile
2575 glib/gnulib/Makefile
2577 gmodule/gmoduleconf.h
2579 gobject/glib-mkenums
2583 docs/reference/Makefile
2584 docs/reference/glib/Makefile
2585 docs/reference/glib/version.xml
2586 docs/reference/gobject/Makefile
2587 docs/reference/gobject/version.xml
2589 tests/gobject/Makefile
2593 AC_CONFIG_COMMANDS([chmod-scripts],
2594 [chmod 0755 glib-zip
2595 chmod 0755 glib-gettextize
2596 chmod 0755 gobject/glib-mkenums])
2598 # we want to invoke this macro solely so that the config.status script
2599 # and automake generated makefiles know about these generated files.
2600 # They are only needed to distcheck the package
2610 gmodule/makefile.mingw
2611 gmodule/makefile.msc
2613 gobject/makefile.mingw
2614 gobject/makefile.msc
2616 gthread/makefile.mingw
2617 gthread/makefile.msc
2619 tests/makefile.mingw