1 dnl ***********************************
2 dnl *** include special GLib macros ***
3 dnl ***********************************
5 define(glib_configure_in)
6 builtin(include, acglib.m4)dnl
7 builtin(include, glib/libcharset/codeset.m4)dnl
8 builtin(include, glib/libcharset/glibc21.m4)dnl
9 builtin(include, m4macros/glib-gettext.m4)dnl
11 # require autoconf 2.53
14 # Process this file with autoconf to produce a configure script.
17 # Save this value here, since automake will set cflags later
18 cflags_set=${CFLAGS+set}
20 GLIB_AC_DIVERT_BEFORE_HELP([
22 # The following version number definitions apply to GLib, GModule, GObject
23 # and GThread as a whole, so if changes occoured in any of them, they are all
24 # treated with the same interface and binary age.
27 # GLIB_MICRO_VERSION += 1;
28 # GLIB_INTERFACE_AGE += 1;
29 # GLIB_BINARY_AGE += 1;
30 # if any functions have been added, set GLIB_INTERFACE_AGE to 0.
31 # if backwards compatibility has been broken,
32 # set GLIB_BINARY_AGE _and_ GLIB_INTERFACE_AGE to 0.
38 GLIB_BINARY_AGE=`expr 100 '*' $GLIB_MINOR_VERSION + $GLIB_MICRO_VERSION`
39 GLIB_VERSION=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION.$GLIB_MICRO_VERSION
42 AC_SUBST(GLIB_MAJOR_VERSION)
43 AC_SUBST(GLIB_MINOR_VERSION)
44 AC_SUBST(GLIB_MICRO_VERSION)
45 AC_SUBST(GLIB_VERSION)
46 AC_SUBST(GLIB_INTERFACE_AGE)
47 AC_SUBST(GLIB_BINARY_AGE)
50 LT_RELEASE=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION
51 LT_CURRENT=`expr 100 '*' $GLIB_MINOR_VERSION + $GLIB_MICRO_VERSION - $GLIB_INTERFACE_AGE`
52 LT_REVISION=$GLIB_INTERFACE_AGE
53 LT_AGE=`expr $GLIB_BINARY_AGE - $GLIB_INTERFACE_AGE`
54 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
59 AC_SUBST(LT_CURRENT_MINUS_AGE)
64 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
66 # Specify a configuration file
67 AM_CONFIG_HEADER(config.h)
69 AC_DEFINE_UNQUOTED(GLIB_MAJOR_VERSION, $GLIB_MAJOR_VERSION,
70 [Define to the GLIB major version])
71 AC_DEFINE_UNQUOTED(GLIB_MINOR_VERSION, $GLIB_MINOR_VERSION,
72 [Define to the GLIB minor version])
73 AC_DEFINE_UNQUOTED(GLIB_MICRO_VERSION, $GLIB_MICRO_VERSION,
74 [Define to the GLIB micro version])
75 AC_DEFINE_UNQUOTED(GLIB_INTERFACE_AGE, $GLIB_INTERFACE_AGE,
76 [Define to the GLIB interface age])
77 AC_DEFINE_UNQUOTED(GLIB_BINARY_AGE, $GLIB_BINARY_AGE,
78 [Define to the GLIB binary age])
80 dnl Initialize maintainer mode
85 AC_MSG_CHECKING(for the BeOS)
88 glib_native_beos="yes"
94 AC_MSG_RESULT([$glib_native_beos])
98 AC_MSG_CHECKING([for Win32])
101 glib_native_win32=yes
102 G_LIB_WIN32_RESOURCE=glib-win32res.lo
103 G_MODULE_WIN32_RESOURCE=gmodule-win32res.lo
104 G_OBJECT_WIN32_RESOURCE=gobject-win32res.lo
105 G_THREAD_WIN32_RESOURCE=gthread-win32res.lo
107 GMODULE_DEF=gmodule.def
108 GOBJECT_DEF=gobject.def
109 GTHREAD_DEF=gthread.def
110 TESTGMODULE_EXP=testgmodule.exp
114 G_LIB_WIN32_RESOURCE=
115 G_MODULE_WIN32_RESOURCE=
116 G_OBJECT_WIN32_RESOURCE=
117 G_THREAD_WIN32_RESOURCE=
125 AC_MSG_RESULT([$glib_native_win32])
126 AM_CONDITIONAL(OS_WIN32, test "$glib_native_win32" = "yes")
127 AC_SUBST(G_LIB_WIN32_RESOURCE)
128 AC_SUBST(G_MODULE_WIN32_RESOURCE)
129 AC_SUBST(G_OBJECT_WIN32_RESOURCE)
130 AC_SUBST(G_THREAD_WIN32_RESOURCE)
132 AC_SUBST(GMODULE_DEF)
133 AC_SUBST(GOBJECT_DEF)
134 AC_SUBST(GTHREAD_DEF)
135 AC_SUBST(TESTGMODULE_EXP)
137 if test "$glib_native_win32" = "yes"; then
138 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
140 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
142 GLIB_AC_DIVERT_BEFORE_HELP([
143 # figure debugging default, prior to $ac_help setup
144 case $GLIB_MINOR_VERSION in
145 *[[13579]]) debug_default=yes ;;
146 *) debug_default=minimum ;;
150 dnl declare --enable-* args and collect ac_help strings
151 AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
152 AC_ARG_ENABLE(gc_friendly, [ --enable-gc-friendly turn on garbage collector friendliness [default=no]],,enable_gc_friendly=no)
153 AC_ARG_ENABLE(mem_pools, [ --disable-mem-pools disable all glib memory pools],,disable_mem_pools=no)
154 AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
156 AC_ARG_ENABLE(threads, [ --enable-threads turn on basic thread support [default=yes]
157 ([=no] will override --with-threads)],,enable_threads=yes)
158 AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
160 if test "x$enable_threads" != "xyes"; then
164 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}",
165 [Whether glib was compiled with debugging enabled])
167 AC_MSG_CHECKING(whether to enable garbage collector friendliness)
168 if test "x$enable_gc_friendly" = "xyes"; then
169 AC_DEFINE(ENABLE_GC_FRIENDLY, 1, [Whether to enable GC friendliness])
170 AC_SUBST(ENABLE_GC_FRIENDLY)
176 AC_MSG_CHECKING(whether to disable memory pools)
177 if test "x$disable_mem_pools" = "xno"; then
180 AC_DEFINE(DISABLE_MEM_POOLS, 1, [Whether to disable memory pools])
181 AC_SUBST(DISABLE_MEM_POOLS)
185 dnl Checks for programs.
188 dnl Check for a working C++ compiler, but do not bail out, if none is found.
189 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, gcc)
192 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
193 AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
204 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
205 if test x$PKG_CONFIG = xno ; then
206 AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
209 if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then
212 AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.])
215 if test "x$enable_debug" = "xyes"; then
216 if test x$cflags_set != xset ; then
218 *[[\ \ ]]-g[[\ \ ]]*) ;;
219 *) CFLAGS="$CFLAGS -g" ;;
223 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
225 GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
227 if test "x$enable_debug" = "xno"; then
228 GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
232 # Ensure MSVC-compatible struct packing convention is used when
233 # compiling for Win32 with gcc.
234 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
235 # gcc2 uses "-fnative-struct".
236 if test x"$glib_native_win32" = xyes; then
237 if test x"$GCC" = xyes; then
239 AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
240 if test -z "$ac_cv_prog_CC"; then
243 our_gcc="$ac_cv_prog_CC"
245 case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
247 if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
248 msnative_struct='-fnative-struct'
252 if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
253 msnative_struct='-mms-bitfields'
257 if test x"$msnative_struct" = x ; then
258 AC_MSG_RESULT([no way])
259 AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
261 CFLAGS="$CFLAGS $msnative_struct"
262 AC_MSG_RESULT([${msnative_struct}])
270 # define a MAINT-like variable REBUILD which is set if Perl
271 # and awk are found, so autogenerated sources can be rebuilt
273 AC_CHECK_PROGS(PERL, perl5 perl)
274 # We would like indent, but don't require it.
275 AC_CHECK_PROG(INDENT, indent, indent)
277 if test "x$enable_rebuilds" = "xyes" && \
279 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
280 test -n "$AWK" ; then
285 # Need full path to Perl for glib-mkenums
287 if test "x$PERL" != x ; then
288 AC_PATH_PROG(PERL_PATH, $PERL)
290 PERL_PATH="/usr/bin/env perl"
294 dnl ***********************
295 dnl *** Tests for iconv ***
296 dnl ***********************
298 dnl We do this before the gettext checks, to avoid distortion
300 AC_ARG_WITH(libiconv, [ --with-libiconv=[no/gnu/native] use the libiconv library ],,with_libiconv=maybe)
303 case $with_libiconv in
305 # Check in the C library first
306 AC_CHECK_FUNC(iconv_open, with_libiconv=no; found_iconv=yes)
307 # Check if we have GNU libiconv
308 if test $found_iconv = "no"; then
309 AC_CHECK_LIB(iconv, libiconv_open, with_libiconv=gnu; found_iconv=yes)
311 # Check if we have a iconv in -liconv, possibly from vendor
312 if test $found_iconv = "no"; then
313 AC_CHECK_LIB(iconv, iconv_open, with_libiconv=native; found_iconv=yes)
317 AC_CHECK_FUNC(iconv_open, with_libiconv=no; found_iconv=yes)
320 AC_CHECK_LIB(iconv, libiconv_open, with_libiconv=gnu; found_iconv=yes)
323 AC_CHECK_LIB(iconv, iconv_open, with_libiconv=native; found_iconv=yes)
327 if test "x$found_iconv" = "xno" ; then
328 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
335 ALL_LINGUAS="az be bg ca cs da de el es eu fi fr gl hi ja ko ms nl nn no pl pt pt_BR ro ru sk sl sq sv ta tr uk vi zh_CN zh_TW"
338 if test "$gt_cv_have_gettext" != "yes" ; then
340 *** You must have either have gettext support in your C library, or use the
341 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
345 LIBS="$LIBS $INTLLIBS"
347 GETTEXT_PACKAGE=glib20
348 AC_SUBST(GETTEXT_PACKAGE)
349 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
350 [Define the gettext package to be used])
352 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
354 AC_CHECK_FUNCS(bind_textdomain_codeset)
357 dnl Now we are done with gettext checks, figure out ICONV_LIBS
360 if test x$with_libiconv != xno ; then
361 case " $INTLLIBS " in
362 *[[\ \ ]]-liconv[[\ \ ]]*) ;;
363 *) ICONV_LIBS="-liconv" ;;
368 case $with_libiconv in
370 AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
373 AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
377 dnl Initialize libtool
382 if test "x$GCC" = "xyes"; then
384 *[[\ \ ]]-Wall[[\ \ ]]*) ;;
385 *) CFLAGS="$CFLAGS -Wall" ;;
388 if test "x$enable_ansi" = "xyes"; then
390 *[[\ \ ]]-ansi[[\ \ ]]*) ;;
391 *) CFLAGS="$CFLAGS -ansi" ;;
395 *[[\ \ ]]-pedantic[[\ \ ]]*) ;;
396 *) CFLAGS="$CFLAGS -pedantic" ;;
402 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
404 if test $cross_compiling != yes ; then
405 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
408 AC_TRY_RUN([#include <math.h>
409 int main (void) { return (log(1) != log(1.)); }],
410 AC_MSG_RESULT(none needed),
411 glib_save_CFLAGS=$CFLAGS
412 CFLAGS="$CFLAGS -std1"
413 AC_TRY_RUN([#include <math.h>
414 int main (void) { return (log(1) != log(1.)); }],
415 AC_MSG_RESULT(-std1),
417 CFLAGS=$glib_save_CFLAGS
419 [No ANSI prototypes found in library. (-std1 didn't work.)])
425 dnl NeXTStep cc seems to need this
426 AC_MSG_CHECKING([for extra flags for POSIX compliance])
427 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
428 AC_MSG_RESULT(none needed),
429 glib_save_CFLAGS=$CFLAGS
430 CFLAGS="$CFLAGS -posix"
431 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
432 AC_MSG_RESULT(-posix),
434 CFLAGS=$glib_save_CFLAGS
435 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
437 # Checks for header files.
440 # Checks for library functions.
445 AC_CHECK_FUNCS(atexit on_exit)
447 AC_CHECK_SIZEOF(char)
448 AC_CHECK_SIZEOF(short)
449 AC_CHECK_SIZEOF(long)
451 AC_CHECK_SIZEOF(void *)
452 AC_CHECK_SIZEOF(long long)
453 AC_CHECK_SIZEOF(__int64)
455 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
459 *** GLib requires a 64 bit type. You might want to consider
460 *** using the GNU C compiler.
464 if test x$ac_cv_sizeof_long_long = x8; then
465 # long long is a 64 bit integer.
466 AC_MSG_CHECKING(for format to printf and scanf a guint64)
467 AC_CACHE_VAL(glib_cv_long_long_format,[
468 for format in ll q I64; do
469 AC_TRY_RUN([#include <stdio.h>
472 long long b, a = -0x3AFAFAFAFAFAFAFALL;
474 sprintf (buffer, "%${format}u", a);
475 sscanf (buffer, "%${format}u", &b);
479 glib_cv_long_long_format=${format}
482 if test -n "$glib_cv_long_long_format"; then
483 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
487 elif test x$ac_cv_sizeof___int64 = x8; then
488 # __int64 is a 64 bit integer.
489 AC_MSG_CHECKING(for format to printf and scanf a guint64)
490 # We know this is MSVC, and what the formats are
491 glib_cv_long_long_format=I64
492 AC_MSG_RESULT(%${glib_cv_long_long_format}u)
495 dnl long doubles were not used, and a portability problem
499 dnl ok, here we try to check whether the systems prototypes for
500 dnl malloc and friends actually match the prototypes provided
501 dnl by gmem.h (keep in sync). i currently only know how to check
502 dnl this reliably with gcc (-Werror), improvements for other
503 dnl compilers are apprechiated.
504 SANE_MALLOC_PROTOS=no
505 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
506 glib_save_CFLAGS=$CFLAGS
507 if test "x$GCC" = "xyes"; then
508 CFLAGS="$CFLAGS -Werror"
509 AC_TRY_COMPILE([#include <stdlib.h>], [
510 void* (*my_calloc_p) (size_t, size_t) = calloc;
511 void* (*my_malloc_p) (size_t) = malloc;
512 void (*my_free_p) (void*) = free;
513 void* (*my_realloc_p) (void*, size_t) = realloc;
519 AC_DEFINE(SANE_MALLOC_PROTOS, 1,
520 [Define if you have correct malloc prototypes])
521 SANE_MALLOC_PROTOS=yes)
523 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
524 CFLAGS=$glib_save_CFLAGS
527 dnl check in which direction the stack grows
529 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
531 volatile int *a = 0, *b = 0;
533 int main () { volatile int y = 7; a = &y; foo (); return b > a; }
534 void foo (void) { volatile int x = 5; b = &x; }
536 glib_cv_stack_grows=no
538 glib_cv_stack_grows=yes
542 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
543 dnl truely know which ones of `inline', `__inline' and `__inline__' are
544 dnl actually supported.
545 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
547 __inline int foo () { return 0; }
548 int main () { return foo (); }
550 glib_cv_has__inline=yes
552 glib_cv_has__inline=no
555 case x$glib_cv_has__inline in
556 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
558 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
560 __inline__ int foo () { return 0; }
561 int main () { return foo (); }
563 glib_cv_has__inline__=yes
565 glib_cv_has__inline__=no
568 case x$glib_cv_has__inline__ in
569 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
571 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
574 inline int foo () { return 0; }
575 int main () { return foo (); }
577 glib_cv_hasinline=yes
582 case x$glib_cv_hasinline in
583 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
586 # check for flavours of varargs macros
587 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
589 int a(int p1, int p2, int p3);
590 #define call_a(...) a(1,__VA_ARGS__)
592 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
593 AC_MSG_RESULT($g_have_iso_c_varargs)
595 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
596 if test "$CXX" = ""; then
598 g_have_iso_cxx_varargs=no
602 int a(int p1, int p2, int p3);
603 #define call_a(...) a(1,__VA_ARGS__)
605 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
608 AC_MSG_RESULT($g_have_iso_cxx_varargs)
610 AC_MSG_CHECKING(for GNUC varargs macros)
612 int a(int p1, int p2, int p3);
613 #define call_a(params...) a(1,params)
615 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
616 AC_MSG_RESULT($g_have_gnuc_varargs)
618 # check for bytesex stuff
621 # check for header files
622 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h sys/param.h sys/poll.h sys/select.h sys/types.h])
623 AC_CHECK_HEADERS([sys/time.h sys/times.h unistd.h values.h stdint.h sched.h])
625 # Checks for libcharset
628 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
629 AC_CHECK_FUNCS(setlocale)
631 AC_MSG_CHECKING(whether make is GNU Make)
634 if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
635 STRIP_BEGIN='$(strip $(STRIP_DUMMY)'
642 AC_SUBST(STRIP_DUMMY)
643 AC_SUBST(STRIP_BEGIN)
646 # check additional type sizes
647 AC_CHECK_SIZEOF(size_t)
649 dnl Try to figure out whether gsize, gssize should be long or int
650 AC_MSG_CHECKING([for the appropriate definition for size_t])
652 case $ac_cv_sizeof_size_t in
662 *) AC_MSG_ERROR([No type matching size_t in size])
666 dnl If int/long are the same size, we see which one produces
667 dnl warnings when used in the location as size_t. (This matters
670 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
671 test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
672 GLIB_CHECK_COMPILE_WARNINGS([
677 unsigned int *size_int = &s;
678 return (int)*size_int;
680 ],glib_size_type=int,
681 [GLIB_CHECK_COMPILE_WARNINGS([
686 unsigned long *size_long = &s;
687 return (int)*size_long;
689 ],glib_size_type=long)])
692 AC_MSG_RESULT(unsigned $glib_size_type)
694 # Check for some functions
695 AC_CHECK_FUNCS(lstat strerror strsignal memmove mkstemp vsnprintf stpcpy strcasecmp strncasecmp poll getcwd nanosleep vasprintf unsetenv getc_unlocked)
697 AC_FUNC_VSNPRINTF_C99
698 AC_FUNC_PRINTF_UNIX98
701 # Check whether to use trio printf
704 AC_ARG_ENABLE(included-printf, [ --enable-included-printf use included printf [default=auto]], enable_trio="$enableval")
706 if test "$enable_trio" != "no" ; then
707 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
710 if test "$ac_cv_func_printf_unix98" != "yes" ; then
715 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_trio" != "yes")
716 if test "$enable_trio" != "yes" ; then
717 AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
719 AC_DEFINE(HAVE_VASPRINTF,1)
720 AC_DEFINE(HAVE_C99_VSNPRINTF,1)
721 AC_DEFINE(HAVE_UNIX98_PRINTF,1)
724 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
725 # The check is borrowed from the PERL Configure script.
726 if test "$ac_cv_func_memmove" != "yes"; then
727 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
728 glib_cv_working_bcopy,[AC_TRY_RUN([
730 char buf[128], abc[128], *b;
732 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
733 for (align = 7; align >= 0; align--) {
734 for (len = 36; len; len--) {
735 b = buf+align; bcopy(abc, b, len);
736 for (off = 1; off <= len; off++) {
737 bcopy(b, b+off, len); bcopy(b+off, b, len);
738 if (bcmp(b, abc, len)) return(1);
743 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
745 GLIB_ASSERT_SET(glib_cv_working_bcopy)
746 if test "$glib_cv_working_bcopy" = "yes"; then
747 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
751 # Check for sys_errlist
752 AC_MSG_CHECKING(for sys_errlist)
754 extern char *sys_errlist[];
756 sys_errlist[sys_nerr-1][0] = 0;
757 ], glib_ok=yes, glib_ok=no)
758 AC_MSG_RESULT($glib_ok)
759 if test "$glib_ok" = "no"; then
760 AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
763 # Check for sys_siglist
764 AC_MSG_CHECKING(for sys_siglist)
766 extern char *sys_siglist[];
767 exit (sys_siglist[0]);
768 ], glib_ok=yes, glib_ok=no)
769 AC_MSG_RESULT($glib_ok)
770 if test "$glib_ok" = "no"; then
771 AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
774 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
775 AC_MSG_CHECKING(for sys_siglist declaration)
776 AC_TRY_COMPILE([#include <signal.h>], [
777 strlen (sys_siglist[0]);
778 ], glib_ok=yes, glib_ok=no)
779 AC_MSG_RESULT($glib_ok)
780 if test "$glib_ok" = "no"; then
781 AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
784 # Check if <sys/select.h> needs to be included for fd_set
785 AC_MSG_CHECKING([for fd_set])
786 AC_TRY_COMPILE([#include <sys/types.h>],
787 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
788 if test "$gtk_ok" = "yes"; then
789 AC_MSG_RESULT([yes, found in sys/types.h])
791 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
792 if test "$gtk_ok" = "yes"; then
793 # *** FIXME: give it a different name
794 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
795 AC_MSG_RESULT([yes, found in sys/select.h])
797 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
802 dnl *** check for sane realloc() ***
803 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
804 AC_TRY_RUN([#include <stdlib.h>
806 return realloc (0, sizeof (int)) == 0;
808 [glib_cv_sane_realloc=yes],
809 [glib_cv_sane_realloc=no],
810 [glib_cv_sane_realloc=yes])
812 if test x$glib_cv_sane_realloc = xyes; then
813 AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
816 dnl Check for nl_langinfo and CODESET
818 AC_MSG_CHECKING([for nl_langinfo (CODESET)])
819 AC_TRY_COMPILE([#include <langinfo.h>],
820 [char *codeset = nl_langinfo (CODESET);],
821 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
824 AC_MSG_RESULT($have_codeset)
827 dnl ****************************************
828 dnl *** strlcpy/strlcat ***
829 dnl ****************************************
831 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
832 AC_TRY_RUN([#include <stdlib.h>
836 (void) strlcpy (p, "hi", 10);
837 if (strlcat (p, "bye", 0) != 3)
840 }], glib_cv_have_strlcpy=yes,
841 glib_cv_have_strlcpy=no,
842 glib_cv_have_strlcpy=no)])
843 if test "$glib_cv_have_strlcpy" = "yes"; then
844 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
848 dnl **********************
849 dnl *** va_copy checks ***
850 dnl **********************
851 dnl we currently check for all three va_copy possibilities, so we get
852 dnl all results in config.log for bug reports.
853 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
854 AC_LINK_IFELSE([#include <stdarg.h>
855 void f (int i, ...) {
856 va_list args1, args2;
858 va_copy (args2, args1);
859 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
861 va_end (args1); va_end (args2);
867 [glib_cv_va_copy=yes],
868 [glib_cv_va_copy=no])
870 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
871 AC_LINK_IFELSE([#include <stdarg.h>
872 void f (int i, ...) {
873 va_list args1, args2;
875 __va_copy (args2, args1);
876 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
878 va_end (args1); va_end (args2);
884 [glib_cv___va_copy=yes],
885 [glib_cv___va_copy=no])
888 if test "x$glib_cv_va_copy" = "xyes"; then
889 g_va_copy_func=va_copy
890 else if test "x$glib_cv___va_copy" = "xyes"; then
891 g_va_copy_func=__va_copy
895 if test -n "$g_va_copy_func"; then
896 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
899 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
900 AC_TRY_RUN([#include <stdarg.h>
901 void f (int i, ...) {
902 va_list args1, args2;
905 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
907 va_end (args1); va_end (args2);
913 [glib_cv_va_val_copy=yes],
914 [glib_cv_va_val_copy=no],
915 [glib_cv_va_val_copy=yes])
918 if test "x$glib_cv_va_val_copy" = "xno"; then
919 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
922 dnl ***********************
923 dnl *** g_module checks ***
924 dnl ***********************
927 G_MODULE_PLUGIN_LIBS=
928 if test x"$glib_native_win32" = xyes; then
929 dnl No use for this on Win32
932 G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
934 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
935 G_MODULE_NEED_USCORE=0
936 G_MODULE_BROKEN_RTLD_GLOBAL=0
937 G_MODULE_HAVE_DLERROR=0
938 dnl *** force native WIN32 shared lib loader
939 if test -z "$G_MODULE_IMPL"; then
941 *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
944 dnl *** dlopen() and dlsym() in system libraries
945 if test -z "$G_MODULE_IMPL"; then
946 AC_CHECK_FUNC(dlopen,
947 [AC_CHECK_FUNC(dlsym,
948 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
951 dnl *** load_image (BeOS)
952 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
953 AC_CHECK_LIB(root, load_image,
954 [G_MODULE_LIBS="-lbe -lroot -lglib"
955 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
956 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
957 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
960 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
961 if test -z "$G_MODULE_IMPL"; then
962 AC_CHECK_FUNC(NSLinkModule,
963 [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
964 G_MODULE_NEED_USCORE=1],
967 dnl *** dlopen() and dlsym() in libdl
968 if test -z "$G_MODULE_IMPL"; then
969 AC_CHECK_LIB(dl, dlopen,
970 [AC_CHECK_LIB(dl, dlsym,
972 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
975 dnl *** shl_load() in libdld (HP-UX)
976 if test -z "$G_MODULE_IMPL"; then
977 AC_CHECK_LIB(dld, shl_load,
979 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
982 dnl *** additional checks for G_MODULE_IMPL_DL
983 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
985 LDFLAGS_orig="$LDFLAGS"
986 LIBS="$LIBS $G_MODULE_LIBS"
987 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
988 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
989 AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
990 glib_cv_rtldglobal_broken,[
994 # define RTLD_GLOBAL 0
1001 void *handle, *global, *local;
1002 global = &pthread_create;
1003 handle = dlopen ("libpthread.so", RTLD_GLOBAL | RTLD_LAZY);
1004 if (!handle) return 0;
1005 local = dlsym (handle, "pthread_create");
1006 return global == local;
1008 [glib_cv_rtldglobal_broken=no],
1009 [glib_cv_rtldglobal_broken=yes],
1010 [glib_cv_rtldglobal_broken=no])
1011 rm -f plugin.c plugin.o plugin.lo
1013 if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1014 G_MODULE_BROKEN_RTLD_GLOBAL=1
1016 G_MODULE_BROKEN_RTLD_GLOBAL=0
1018 dnl *** check whether we need preceeding underscores
1019 AC_CACHE_CHECK([for preceeding underscore in symbols],
1021 AC_TRY_RUN([#include <dlfcn.h>
1022 int glib_underscore_test (void) { return 42; }
1024 void *f1 = (void*)0, *f2 = (void*)0, *handle;
1025 handle = dlopen ((void*)0, 0);
1027 f1 = dlsym (handle, "glib_underscore_test");
1028 f2 = dlsym (handle, "_glib_underscore_test");
1029 } return (!f2 || f1);
1031 [glib_cv_uscore=yes],
1032 [glib_cv_uscore=no],
1034 rm -f plugin.c plugin.$ac_objext plugin.lo
1036 GLIB_ASSERT_SET(glib_cv_uscore)
1037 if test "x$glib_cv_uscore" = "xyes"; then
1038 G_MODULE_NEED_USCORE=1
1040 G_MODULE_NEED_USCORE=0
1043 LDFLAGS="$LDFLAGS_orig"
1044 dnl *** check for having dlerror()
1045 AC_CHECK_FUNC(dlerror,
1046 [G_MODULE_HAVE_DLERROR=1],
1047 [G_MODULE_HAVE_DLERROR=0])
1050 dnl *** done, have we got an implementation?
1051 if test -z "$G_MODULE_IMPL"; then
1053 G_MODULE_SUPPORTED=false
1055 G_MODULE_SUPPORTED=true
1058 AC_MSG_CHECKING(for the suffix of shared libraries)
1060 hpux9* | hpux10* | hpux11*) # taken from ltconfig
1061 glib_gmodule_suffix='sl'
1064 glib_gmodule_suffix='dll'
1067 glib_gmodule_suffix='so'
1070 AC_MSG_RESULT(.$glib_gmodule_suffix)
1072 AC_SUBST(G_MODULE_SUPPORTED)
1073 AC_SUBST(G_MODULE_IMPL)
1074 AC_SUBST(G_MODULE_LIBS)
1075 AC_SUBST(G_MODULE_LIBS_EXTRA)
1076 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1077 AC_SUBST(G_MODULE_LDFLAGS)
1078 AC_SUBST(G_MODULE_HAVE_DLERROR)
1079 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1080 AC_SUBST(G_MODULE_NEED_USCORE)
1081 AC_SUBST(GLIB_DEBUG_FLAGS)
1083 dnl **********************
1084 dnl *** g_spawn checks ***
1085 dnl **********************
1087 AC_MSG_CHECKING(for gspawn implementation)
1090 GSPAWN=gspawn-win32.lo
1096 AC_MSG_RESULT($GSPAWN)
1099 dnl *************************
1100 dnl *** GIOChannel checks ***
1101 dnl *************************
1103 AC_MSG_CHECKING(for GIOChannel implementation)
1115 dnl ****************************************
1116 dnl *** platform dependent source checks ***
1117 dnl ****************************************
1119 AC_MSG_CHECKING(for platform-dependent source)
1121 *-*-cygwin*|*-*-mingw*)
1122 PLATFORMDEP=gwin32.lo
1128 AC_MSG_RESULT($PLATFORMDEP)
1129 AC_SUBST(PLATFORMDEP)
1131 AC_MSG_CHECKING([whether to compile timeloop])
1133 *-*-cygwin*|*-*-mingw*)
1140 AC_MSG_RESULT($enable_timeloop)
1141 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1143 AC_MSG_CHECKING([if building for some Win32 platform])
1145 *-*-mingw*|*-*-cygwin*)
1152 AC_MSG_RESULT($platform_win32)
1153 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1155 dnl ***********************
1156 dnl *** g_thread checks ***
1157 dnl ***********************
1159 AC_ARG_WITH(threads, [ --with-threads=[none/posix/dce/solaris/win32] specify a thread implementation to use],
1160 if test "x$with_threads" = x; then
1163 want_threads=$with_threads
1166 if test "x$enable_threads" = "xno"; then
1170 dnl error and warning message
1171 dnl *************************
1173 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1174 computer. GLib will not have a default thread implementation."
1176 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1177 platform (normally it's "_REENTRANT"). I'll not use any flag on
1178 compilation now, but then your programs might not work.
1179 Please provide information on how it is done on your system."
1181 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1184 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1185 provide information on your thread implementation.
1186 You can also run 'configure --disable-threads'
1187 to compile without thread support."
1189 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1190 functions will not be MT-safe during their first call because
1191 there is no working 'getpwuid_r' on your system."
1193 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1194 because there is no 'localtime_r' on your system."
1196 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1197 crude surrogate will be used. If you happen to know a
1198 yield function for your system, please inform the GLib
1201 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for
1202 threads on your system. Thus threads can only have the default
1203 priority. If you happen to know these main/max
1204 priorities, please inform the GLib developers."
1206 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1207 linking threaded applications. As GLib cannot do that
1208 automatically, you will get an linkg error everytime you are
1209 not using the right compiler. In that case you have to relink
1210 with the right compiler. Ususally just '_r' is appended
1211 to the compiler name."
1213 dnl determination of thread implementation
1214 dnl ***************************************
1216 # have_threads=no means no thread support
1217 # have_threads=none means no default thread implementation
1220 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
1223 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
1227 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1228 || test "x$want_threads" = xdce; then
1229 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1230 # -U_OSF_SOURCE is for Digital UNIX 4.0d
1231 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1232 glib_save_CPPFLAGS="$CPPFLAGS"
1233 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1234 if test "x$have_threads" = xno; then
1235 AC_TRY_COMPILE([#include <pthread.h>],
1236 [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1239 if test "x$have_threads" = xno; then
1240 AC_TRY_COMPILE([#include <pthread.h>],
1242 pthread_mutex_init (&m, pthread_mutexattr_default);],
1245 CPPFLAGS="$glib_save_CPPFLAGS"
1247 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1254 if test "x$want_threads" = xnone; then
1258 AC_MSG_CHECKING(for thread implementation)
1260 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1261 AC_MSG_RESULT(none available)
1262 AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1264 AC_MSG_RESULT($have_threads)
1268 dnl determination of G_THREAD_CFLAGS
1269 dnl ********************************
1272 G_THREAD_LIBS_EXTRA=
1276 dnl Test program for basic POSIX threads functionality
1278 m4_define([glib_thread_test],[
1279 #include <pthread.h>
1281 void* func(void* data) {return check_me = 42;}
1285 pthread_create (&t, 0, func, 0);
1286 pthread_join (t, &ret);
1287 exit (check_me != 42 || ret != 42);
1291 dnl Test program for sched_get_priority_min()
1293 m4_define([glib_sched_priority_test],[
1298 return sched_get_priority_min(SCHED_OTHER)==-1
1302 if test x"$have_threads" != xno; then
1304 if test x"$have_threads" = xposix; then
1305 # First we test for posix, whether -pthread or -pthreads do the trick as
1306 # both CPPFLAG and LIBS.
1307 # One of them does for most gcc versions and some other platforms/compilers
1308 # too and could be considered as the canonical way to go.
1309 for flag in pthread pthreads; do
1310 glib_save_CFLAGS="$CFLAGS"
1311 CFLAGS="$CFLAGS -$flag"
1312 AC_TRY_RUN(glib_thread_test,
1313 glib_flag_works=yes,
1315 [AC_LINK_IFELSE(glib_thread_test,
1316 glib_flag_works=yes,
1317 glib_flag_works=no)])
1318 CFLAGS="$glib_save_CFLAGS"
1319 if test $glib_flag_works = yes ; then
1320 G_THREAD_CFLAGS=-$flag
1321 G_THREAD_LIBS=-$flag
1326 if test x"$G_THREAD_CFLAGS" = x; then
1328 # The canonical -pthread[s] does not work. Try something different.
1332 if test x"$GCC" = xyes; then
1333 # GCC 3.0 and above needs -pthread.
1334 # Should be coverd by the case above.
1335 # GCC 2.x and below needs -mthreads
1336 G_THREAD_CFLAGS="-mthreads"
1337 G_THREAD_LIBS=$G_THREAD_CFLAGS
1339 # We are probably using the aix compiler. Normaly a
1340 # program would have to be compiled with the _r variant
1341 # of the corresponding compiler, but we as GLib cannot
1342 # do that: but the good news is that for compiling the
1343 # only difference is the added -D_THREAD_SAFE compile
1344 # option. This is according to the "C for AIX User's
1346 G_THREAD_CFLAGS="-D_THREAD_SAFE"
1350 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1353 # So we are using dce threads. posix threads are already
1355 G_THREAD_CFLAGS="-threads"
1356 G_THREAD_LIBS=$G_THREAD_CFLAGS
1359 if test x"$GCC" = xyes; then
1360 # We are using solaris threads. posix threads are
1361 # already catched above.
1362 G_THREAD_CFLAGS="-threads"
1364 G_THREAD_CFLAGS="-mt"
1366 G_THREAD_LIBS=$G_THREAD_CFLAGS
1368 *-sysv5uw7*) # UnixWare 7
1369 # We are not using gcc with -pthread. Catched above.
1370 G_THREAD_CFLAGS="-Kthread"
1371 G_THREAD_LIBS=$G_THREAD_CFLAGS
1374 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1380 # if we are not finding the localtime_r function, then we probably are
1381 # not using the proper multithread flag
1383 glib_save_CPPFLAGS="$CPPFLAGS"
1384 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1386 # First we test, whether localtime_r is declared in time.h
1387 # directly. Then we test whether a macro localtime_r exists, in
1388 # which case localtime_r in the test program is replaced and thus
1389 # if we still find localtime_r in the output, it is not defined as
1392 AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
1393 [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>
1395 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
1397 CPPFLAGS="$glib_save_CPPFLAGS"
1399 AC_MSG_CHECKING(thread related cflags)
1400 AC_MSG_RESULT($G_THREAD_CFLAGS)
1401 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1404 dnl determination of G_THREAD_LIBS
1405 dnl ******************************
1407 mutex_has_default=no
1408 case $have_threads in
1410 glib_save_CPPFLAGS="$CPPFLAGS"
1411 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1412 if test x"$G_THREAD_LIBS" = x; then
1415 # We are not using gcc (would have set G_THREAD_LIBS) and thus
1416 # probably using the aix compiler.
1417 AC_MSG_WARN($AIX_COMPILE_INFO)
1421 glib_save_LIBS="$LIBS"
1422 for thread_lib in "" pthread pthread32 pthreads thread dce; do
1423 if test x"$thread_lib" = x; then
1427 add_thread_lib="-l$thread_lib"
1428 IN=" in -l$thread_lib"
1430 if test x"$have_threads" = xposix; then
1433 defattr=pthread_attr_default
1436 LIBS="$glib_save_LIBS $add_thread_lib"
1438 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
1439 AC_TRY_RUN(glib_thread_test,
1442 [AC_LINK_IFELSE(glib_thread_test,
1445 AC_MSG_RESULT($glib_result)
1447 if test "$glib_result" = "yes" ; then
1448 G_THREAD_LIBS="$add_thread_lib"
1452 if test "x$G_THREAD_LIBS" = xerror; then
1453 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1455 LIBS="$glib_save_LIBS"
1460 glib_save_LIBS="$LIBS"
1461 for thread_lib in "" rt rte; do
1462 if test x"$thread_lib" = x; then
1466 add_thread_lib="-l$thread_lib"
1467 IN=" in -l$thread_lib"
1469 LIBS="$glib_save_LIBS $add_thread_lib"
1471 AC_MSG_CHECKING(for sched_get_priority_min$IN)
1472 AC_TRY_RUN(glib_sched_priority_test,
1475 [AC_LINK_IFELSE(glib_sched_priority_test,
1478 AC_MSG_RESULT($glib_result)
1480 if test "$glib_result" = "yes" ; then
1481 G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
1482 posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
1483 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
1487 LIBS="$glib_save_LIBS"
1488 mutex_has_default=yes
1489 mutex_default_type='pthread_mutex_t'
1490 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
1491 mutex_header_file='pthread.h'
1492 if test "x$have_threads" = "xposix"; then
1493 g_threads_impl="POSIX"
1495 g_threads_impl="DCE"
1496 have_threads="posix"
1498 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
1499 CPPFLAGS="$glib_save_CPPFLAGS"
1502 mutex_has_default=yes
1503 mutex_default_type='mutex_t'
1504 mutex_default_init="DEFAULTMUTEX"
1505 mutex_header_file='thread.h'
1506 g_threads_impl="SOLARIS"
1509 g_threads_impl="WIN32"
1512 g_threads_impl="NONE"
1515 g_threads_impl="NONE"
1520 if test "x$G_THREAD_LIBS" = xerror; then
1521 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1526 G_THREAD_LIBS="-lbe -lroot -lglib "
1527 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1533 AC_MSG_CHECKING(thread related libraries)
1534 AC_MSG_RESULT($G_THREAD_LIBS)
1536 dnl check for mt safe function variants and some posix functions
1537 dnl ************************************************************
1539 if test x"$have_threads" != xno; then
1540 glib_save_LIBS="$LIBS"
1541 # we are not doing the following for now, as this might require glib
1542 # to always be linked with the thread libs on some platforms.
1543 # LIBS="$LIBS $G_THREAD_LIBS"
1544 AC_CHECK_FUNCS(localtime_r)
1545 if test "$ac_cv_header_pwd_h" = "yes"; then
1546 AC_CACHE_CHECK([for posix getpwuid_r],
1547 ac_cv_func_posix_getpwuid_r,
1553 struct passwd pwd, *pwptr = &pwd;
1556 error = getpwuid_r (0, &pwd, buffer,
1557 sizeof (buffer), &pwptr);
1558 return (error < 0 && errno == ENOSYS)
1561 [ac_cv_func_posix_getpwuid_r=yes],
1562 [ac_cv_func_posix_getpwuid_r=no])])
1563 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
1564 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
1565 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
1566 [Have POSIX function getpwuid_r])
1568 AC_CACHE_CHECK([for nonposix getpwuid_r],
1569 ac_cv_func_nonposix_getpwuid_r,
1570 [AC_TRY_LINK([#include <pwd.h>],
1571 [char buffer[10000];
1573 getpwuid_r (0, &pwd, buffer,
1575 [ac_cv_func_nonposix_getpwuid_r=yes],
1576 [ac_cv_func_nonposix_getpwuid_r=no])])
1577 GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
1578 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
1579 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
1580 [Have non-POSIX function getpwuid_r])
1584 LIBS="$LIBS $G_THREAD_LIBS"
1585 if test x"$have_threads" = xposix; then
1586 glib_save_CPPFLAGS="$CPPFLAGS"
1587 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1588 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
1589 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
1590 # This is not AC_CHECK_FUNC to also work with function
1591 # name mangling in header files.
1592 AC_MSG_CHECKING(for pthread_attr_setstacksize)
1593 AC_TRY_LINK([#include <pthread.h>],
1594 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
1596 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
1597 [Have function pthread_attr_setstacksize])],
1598 [AC_MSG_RESULT(no)])
1599 AC_MSG_CHECKING(for minimal/maximal thread priority)
1600 if test x"$posix_priority_min" = x; then
1601 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
1603 posix_priority_min=PX_PRIO_MIN
1604 posix_priority_max=PX_PRIO_MAX])
1606 if test x"$posix_priority_min" = x; then
1608 AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
1609 PTHREAD_PRIO_MIN],,[
1610 posix_priority_min=PTHREAD_PRIO_MIN
1611 posix_priority_max=PTHREAD_PRIO_MAX])
1613 if test x"$posix_priority_min" = x; then
1614 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
1616 posix_priority_min=PRI_OTHER_MIN
1617 posix_priority_max=PRI_OTHER_MAX])
1619 if test x"$posix_priority_min" = x; then
1620 AC_MSG_RESULT(none found)
1621 AC_MSG_WARN($POSIX_NO_PRIORITIES)
1622 posix_priority_min=-1
1623 posix_priority_max=-1
1625 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
1626 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
1627 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])
1629 posix_yield_func=none
1630 AC_MSG_CHECKING(for posix yield function)
1631 for yield_func in sched_yield pthread_yield_np pthread_yield \
1633 AC_TRY_LINK([#include <pthread.h>],
1635 [posix_yield_func="$yield_func"
1638 if test x"$posix_yield_func" = xnone; then
1639 AC_MSG_RESULT(none found)
1640 AC_MSG_WARN($POSIX_NO_YIELD)
1641 posix_yield_func="g_usleep(1000)"
1643 AC_MSG_RESULT($posix_yield_func)
1644 posix_yield_func="$posix_yield_func()"
1646 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
1647 CPPFLAGS="$glib_save_CPPFLAGS"
1649 AC_CACHE_CHECK([whether to use the PID niceness surrogate for thread priorities],
1650 glib_cv_use_pid_surrogate,
1652 #include <pthread.h>
1653 #include <sys/types.h>
1655 pid_t other_pid = 0;
1657 void* func(void* data) {other_pid = getpid();}
1661 pthread_create (&t, 0, func, NULL);
1662 pthread_join (t, &ret);
1663 exit (getpid()==other_pid ||
1664 $posix_priority_min != $posix_priority_max);
1666 [glib_cv_use_pid_surrogate=yes],
1667 [glib_cv_use_pid_surrogate=no],
1669 GLIB_ASSERT_SET(glib_cv_use_pid_surrogate)
1670 if test "$glib_cv_use_pid_surrogate" = "yes" ; then
1671 AC_DEFINE(G_THREAD_USE_PID_SURROGATE, 1,
1672 [whether to use the PID niceness surrogate for thread priorities])
1675 elif test x"$have_threads" = xwin32; then
1676 # It's a pointer to a private struct
1677 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
1678 elif test x"$have_threads" = xsolaris; then
1679 GLIB_SIZEOF([#include <thread.h>], thread_t, system_thread)
1682 LIBS="$glib_save_LIBS"
1684 # now spit out all the warnings.
1685 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
1686 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
1687 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
1689 if test "$ac_cv_func_localtime_r" != "yes"; then
1690 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
1694 if test x"$glib_cv_sizeof_system_thread" = x; then
1695 # use a pointer as a fallback.
1696 GLIB_SIZEOF(,void *, system_thread)
1699 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
1700 [Source file containing theread implementation])
1701 AC_SUBST(G_THREAD_CFLAGS)
1702 AC_SUBST(G_THREAD_LIBS)
1703 AC_SUBST(G_THREAD_LIBS_EXTRA)
1705 dnl **********************************************
1706 dnl *** GDefaultMutex setup and initialization ***
1707 dnl **********************************************
1709 dnl if mutex_has_default = yes, we also got
1710 dnl mutex_default_type, mutex_default_init and mutex_header_file
1711 if test $mutex_has_default = yes ; then
1712 glib_save_CPPFLAGS="$CPPFLAGS"
1713 glib_save_LIBS="$LIBS"
1714 LIBS="$LIBS $G_THREAD_LIBS"
1715 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1716 GLIB_SIZEOF([#include <$mutex_header_file>],
1717 $mutex_default_type,
1719 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
1720 $mutex_default_type,
1722 $glib_cv_sizeof_gmutex,
1723 $mutex_default_init)
1724 if test x"$glib_cv_byte_contents_gmutex" = xno; then
1725 mutex_has_default=no
1727 CPPFLAGS="$glib_save_CPPFLAGS"
1728 LIBS="$glib_save_LIBS"
1731 dnl ****************************************
1732 dnl *** GLib POLL* compatibility defines ***
1733 dnl ****************************************
1735 glib_poll_includes=["
1736 #include <sys/types.h>
1737 #include <sys/poll.h>
1740 if test $ac_cv_header_sys_types_h = yes &&
1741 test $ac_cv_header_sys_poll_h = yes ; then
1743 GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
1744 GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
1745 GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
1746 GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
1747 GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
1748 GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
1749 if $glib_failed ; then
1750 AC_MSG_ERROR([Could not determine values for POLL* constants])
1753 glib_cv_value_POLLIN=1
1754 glib_cv_value_POLLOUT=4
1755 glib_cv_value_POLLPRI=2
1756 glib_cv_value_POLLERR=8
1757 glib_cv_value_POLLHUP=16
1758 glib_cv_value_POLLNVAL=32
1761 dnl **********************
1762 dnl *** Win32 API libs ***
1763 dnl **********************
1767 G_LIBS_EXTRA="-luser32 -lkernel32"
1770 G_LIBS_EXTRA="-lwsock32"
1776 AC_SUBST(G_LIBS_EXTRA)
1778 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
1779 dnl since we need it for g_iconv()
1781 AC_MSG_CHECKING([for EILSEQ])
1787 ], have_eilseq=yes, have_eilseq=no);
1788 AC_MSG_RESULT($have_eilseq)
1790 dnl ******************************************************************
1791 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
1792 dnl ******************************************************************
1794 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
1796 if test $cross_compiling = yes; then
1797 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
1798 if test x$GLIB_GENMARSHAL = xno; then
1799 AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
1803 dnl **************************
1804 dnl *** Checks for gtk-doc ***
1805 dnl **************************
1807 AC_ARG_WITH(html-dir, [ --with-html-dir=PATH path to installed docs])
1809 if test "x$with_html_dir" = "x" ; then
1810 HTML_DIR='${datadir}/gtk-doc/html'
1812 HTML_DIR=$with_html_dir
1817 AC_CHECK_PROG(GTKDOC, gtkdoc-mkdb, true, false)
1819 AC_CHECK_PROG(GTKDOC, gtkdoc-mkdb, true, false)
1821 gtk_doc_min_version=0.10
1823 gtk_doc_version=`gtkdoc-mkdb --version`
1824 AC_MSG_CHECKING([gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version])
1826 IFS="${IFS= }"; gtk_save_IFS="$IFS"; IFS="."
1827 set $gtk_doc_version
1828 for min in $gtk_doc_min_version ; do
1830 if test -z $min ; then break; fi
1831 if test -z $cur ; then GTKDOC=false; break; fi
1832 if test $cur -gt $min ; then break ; fi
1833 if test $cur -lt $min ; then GTKDOC=false; break ; fi
1844 AM_CONDITIONAL(HAVE_GTK_DOC, $GTKDOC)
1845 AC_SUBST(HAVE_GTK_DOC)
1847 AC_CHECK_PROG(DB2HTML, db2html, true, false)
1848 AM_CONDITIONAL(HAVE_DOCBOOK, $DB2HTML)
1850 dnl Let people disable the gtk-doc stuff.
1851 AC_ARG_ENABLE(gtk-doc, [ --enable-gtk-doc use gtk-doc to build documentation [default=auto]], enable_gtk_doc="$enableval", enable_gtk_doc=no)
1853 if test x$enable_gtk_doc = xyes ; then
1854 if test x$GTKDOC = xtrue ; then
1861 dnl NOTE: We need to use a separate automake conditional for this
1862 dnl to make this work with the tarballs.
1863 AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
1865 dnl ******************************
1866 dnl *** output the whole stuff ***
1867 dnl ******************************
1869 AC_OUTPUT_COMMANDS([
1871 ## Generate `glibconfig.h' in two cases
1872 ## 1. `config.status' is run either explicitly, or via configure.
1873 ## Esp. not when it is run in `Makefile' to generate makefiles and
1875 ## 2. CONFIG_OTHER is set explicitly
1877 ## Case 1 is difficult. We know that `automake' sets one of
1878 ## CONFIG_FILES or CONFIG_HEADERS to empty. This heuristic works
1879 ## only when AM_CONFIG_HEADER is set, however.
1881 if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
1882 # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
1883 CONFIG_OTHER=${CONFIG_OTHER:-glibconfig.h}
1885 case "$CONFIG_OTHER" in
1887 echo creating glibconfig.h
1888 outfile=glibconfig.h-tmp
1889 cat > $outfile <<\_______EOF
1892 * This is a generated file. Please modify 'configure.in'
1895 #ifndef __G_LIBCONFIG_H__
1896 #define __G_LIBCONFIG_H__
1898 #include <glib/gmacros.h>
1902 if test x$glib_limits_h = xyes; then
1903 echo '#include <limits.h>' >> $outfile
1905 if test x$glib_float_h = xyes; then
1906 echo '#include <float.h>' >> $outfile
1908 if test x$glib_values_h = xyes; then
1909 echo '#include <values.h>' >> $outfile
1911 if test "$glib_header_alloca_h" = "yes"; then
1912 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
1914 if test x$glib_sys_poll_h = xyes; then
1915 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
1918 cat >> $outfile <<_______EOF
1922 #define G_MINFLOAT $glib_mf
1923 #define G_MAXFLOAT $glib_Mf
1924 #define G_MINDOUBLE $glib_md
1925 #define G_MAXDOUBLE $glib_Md
1926 #define G_MINSHORT $glib_ms
1927 #define G_MAXSHORT $glib_Ms
1928 #define G_MAXUSHORT $glib_Mus
1929 #define G_MININT $glib_mi
1930 #define G_MAXINT $glib_Mi
1931 #define G_MAXUINT $glib_Mui
1932 #define G_MINLONG $glib_ml
1933 #define G_MAXLONG $glib_Ml
1934 #define G_MAXULONG $glib_Mul
1936 #define G_MININT64 ((gint64) 0x8000000000000000)
1937 #define G_MAXINT64 ((gint64) 0x7fffffffffffffff)
1938 #define G_MAXUINT64 ((guint64) 0xffffffffffffffff)
1943 ### this should always be true in a modern C/C++ compiler
1944 cat >>$outfile <<_______EOF
1945 typedef signed char gint8;
1946 typedef unsigned char guint8;
1950 if test -n "$gint16"; then
1951 cat >>$outfile <<_______EOF
1952 typedef signed $gint16 gint16;
1953 typedef unsigned $gint16 guint16;
1954 #define G_GINT16_FORMAT $gint16_format
1955 #define G_GUINT16_FORMAT $guint16_format
1960 if test -n "$gint32"; then
1961 cat >>$outfile <<_______EOF
1962 typedef signed $gint32 gint32;
1963 typedef unsigned $gint32 guint32;
1964 #define G_GINT32_FORMAT $gint32_format
1965 #define G_GUINT32_FORMAT $guint32_format
1969 cat >>$outfile <<_______EOF
1970 #define G_HAVE_GINT64 1 /* deprecated, always true */
1972 ${glib_extension}typedef signed $gint64 gint64;
1973 ${glib_extension}typedef unsigned $gint64 guint64;
1975 #define G_GINT64_CONSTANT(val) $gint64_constant
1978 if test x$gint64_format != x ; then
1979 cat >>$outfile <<_______EOF
1980 #define G_GINT64_FORMAT $gint64_format
1981 #define G_GUINT64_FORMAT $guint64_format
1984 cat >>$outfile <<_______EOF
1985 #undef G_GINT64_FORMAT
1986 #undef G_GUINT64_FORMAT
1990 cat >>$outfile <<_______EOF
1992 #define GLIB_SIZEOF_VOID_P $glib_void_p
1993 #define GLIB_SIZEOF_LONG $glib_long
1994 #define GLIB_SIZEOF_SIZE_T $glib_size_t
1998 echo "typedef signed $glib_size_type_define gssize;" >> $outfile
1999 echo "typedef unsigned $glib_size_type_define gsize;" >> $outfile
2001 if test -z "$glib_unknown_void_p"; then
2002 cat >>$outfile <<_______EOF
2004 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
2005 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
2007 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
2008 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
2011 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
2016 cat >>$outfile <<_______EOF
2025 #define G_HAVE_INLINE 1
2026 #else /* !__cplusplus */
2028 #endif /* !__cplusplus */
2032 if test x$g_have_iso_c_varargs = xyes ; then
2033 cat >>$outfile <<_______EOF
2035 # define G_HAVE_ISO_VARARGS 1
2039 if test x$g_have_iso_cxx_varargs = xyes ; then
2040 cat >>$outfile <<_______EOF
2042 # define G_HAVE_ISO_VARARGS 1
2046 if test x$g_have_gnuc_varargs = xyes ; then
2047 cat >>$outfile <<_______EOF
2049 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2050 * is passed ISO vararg support is turned off, and there is no work
2051 * around to turn it on, so we unconditionally turn it off.
2053 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2054 # undef G_HAVE_ISO_VARARGS
2057 #define G_HAVE_GNUC_VARARGS 1
2061 case x$g_stack_grows in
2062 xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2063 *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2068 if test x$g_have_eilseq = xno; then
2069 cat >>$outfile <<_______EOF
2071 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2072 * The correspondence between this and the corresponding definition
2073 * in libiconv is essential.
2075 # define EILSEQ ENOENT
2082 if test x$g_mutex_has_default = xyes; then
2083 cat >>$outfile <<_______EOF
2084 $g_enable_threads_def G_THREADS_ENABLED
2085 #define G_THREADS_IMPL_$g_threads_impl_def
2086 typedef struct _GStaticMutex GStaticMutex;
2087 struct _GStaticMutex
2089 struct _GMutex *runtime_mutex;
2091 char pad[$g_mutex_sizeof];
2092 double dummy_double;
2093 void *dummy_pointer;
2097 #define G_STATIC_MUTEX_INIT { NULL, { { $g_mutex_contents} } }
2098 #define g_static_mutex_get_mutex(mutex) \
2099 (g_thread_use_default_impl ? ((GMutex*) &((mutex)->static_mutex)) : \
2100 g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
2103 cat >>$outfile <<_______EOF
2104 $g_enable_threads_def G_THREADS_ENABLED
2105 #define G_THREADS_IMPL_$g_threads_impl_def
2106 typedef struct _GMutex* GStaticMutex;
2107 #define G_STATIC_MUTEX_INIT NULL
2108 #define g_static_mutex_get_mutex(mutex) (g_static_mutex_get_mutex_impl (mutex))
2112 cat >>$outfile <<_______EOF
2113 /* This represents a system thread as used by the implementation. An
2114 * alien implementaion, as loaded by g_thread_init can only count on
2115 * "sizeof (gpointer)" bytes to store their info. We however need more
2116 * for some of our native implementations. */
2117 typedef union _GSystemThread GSystemThread;
2118 union _GSystemThread
2120 char data[$g_system_thread_sizeof];
2121 double dummy_double;
2122 void *dummy_pointer;
2128 g_bit_sizes="16 32 64"
2129 for bits in $g_bit_sizes; do
2130 cat >>$outfile <<_______EOF
2131 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
2132 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
2133 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
2134 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
2138 cat >>$outfile <<_______EOF
2139 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
2140 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
2141 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
2142 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
2143 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
2144 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
2145 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
2146 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
2147 #define G_BYTE_ORDER $g_byte_order
2149 #define GLIB_SYSDEF_POLLIN =$g_pollin
2150 #define GLIB_SYSDEF_POLLOUT =$g_pollout
2151 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
2152 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
2153 #define GLIB_SYSDEF_POLLERR =$g_pollerr
2154 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
2156 #define G_MODULE_SUFFIX "$g_module_suffix"
2160 #endif /* GLIBCONFIG_H */
2164 if cmp -s $outfile glibconfig.h; then
2165 echo glibconfig.h is unchanged
2168 mv $outfile glibconfig.h
2173 # Note that if two cases are the same, case goes with the first one.
2174 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
2175 # on variable expansion in case labels. Look at the generated config.status
2178 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
2179 glib_header_alloca_h="$ac_cv_working_alloca_h"
2181 glib_header_alloca_h="$ac_cv_header_alloca_h"
2185 x$ac_cv_header_float_h)
2187 glib_mf=FLT_MIN glib_Mf=FLT_MAX
2188 glib_md=DBL_MIN glib_Md=DBL_MAX
2190 x$ac_cv_header_values_h)
2192 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
2193 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
2198 x$ac_cv_header_limits_h)
2200 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
2201 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
2202 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
2204 x$ac_cv_header_values_h)
2206 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
2207 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
2208 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
2212 if test x$ac_cv_header_sys_poll_h = xyes ; then
2217 $ac_cv_sizeof_short)
2219 gint16_format='"hi"'
2220 guint16_format='"hu"'
2225 guint16_format='"u"'
2229 $ac_cv_sizeof_short)
2231 gint32_format='"hi"'
2232 guint32_format='"hu"'
2237 guint32_format='"u"'
2241 gint32_format='"li"'
2242 guint32_format='"lu"'
2249 guint64_format='"u"'
2251 gint64_constant='(val)'
2255 gint64_format='"li"'
2256 guint64_format='"lu"'
2258 gint64_constant='(val##L)'
2260 $ac_cv_sizeof_long_long)
2262 if test -n "$glib_cv_long_long_format"; then
2263 gint64_format='"'$glib_cv_long_long_format'i"'
2264 guint64_format='"'$glib_cv_long_long_format'u"'
2266 glib_extension='G_GNUC_EXTENSION '
2267 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
2269 $ac_cv_sizeof___int64)
2271 if test -n "$glib_cv_long_long_format"; then
2272 gint64_format='"'$glib_cv_long_long_format'i"'
2273 guint64_format='"'$glib_cv_long_long_format'u"'
2276 gint64_constant='(val##i64)'
2279 glib_size_t=$ac_cv_sizeof_size_t
2280 glib_size_type_define=$glib_size_type
2281 glib_void_p=$ac_cv_sizeof_long
2282 glib_long=$ac_cv_sizeof_void_p
2284 gintbits=`expr $ac_cv_sizeof_int \* 8`
2285 glongbits=`expr $ac_cv_sizeof_long \* 8`
2288 case $ac_cv_sizeof_void_p in
2289 $ac_cv_sizeof_int) glib_gpi_cast='' glib_gpui_cast='' ;;
2290 $ac_cv_sizeof_long) glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
2291 *) glib_unknown_void_p=yes ;;
2296 x$ac_cv_func_atexit)
2298 #ifdef NeXT /* @#%@! NeXTStep */
2299 # define g_ATEXIT(proc) (!atexit (proc))
2301 # define g_ATEXIT(proc) (atexit (proc))
2304 x$ac_cv_func_on_exit)
2306 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
2311 x$ac_cv_func_memmove)
2313 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
2315 x$glib_cv_working_bcopy)
2317 /* memmove isn't available, but bcopy can copy overlapping memory regions */
2318 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
2322 /* memmove isn't found and bcopy can't copy overlapping memory regions,
2323 * so we have to roll our own copy routine. */
2324 void g_memmove (void* dest, const void * src, unsigned long len);"
2329 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
2330 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
2331 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
2335 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
2336 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
2340 if test x$glib_cv_va_val_copy = xno; then
2341 glib_vacopy="\$glib_vacopy
2342 #define G_VA_COPY_AS_ARRAY 1"
2345 if test x$glib_cv_hasinline = xyes; then
2346 glib_inline='#define G_HAVE_INLINE 1'
2348 if test x$glib_cv_has__inline = xyes; then
2349 glib_inline="\$glib_inline
2350 #define G_HAVE___INLINE 1"
2352 if test x$glib_cv_has__inline__ = xyes; then
2353 glib_inline="\$glib_inline
2354 #define G_HAVE___INLINE__ 1"
2357 g_have_gnuc_varargs=$g_have_gnuc_varargs
2358 g_have_iso_c_varargs=$g_have_iso_c_varargs
2359 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
2362 x$ac_cv_c_bigendian)
2363 g_byte_order=G_BIG_ENDIAN
2368 g_byte_order=G_LITTLE_ENDIAN
2374 g_pollin=$glib_cv_value_POLLIN
2375 g_pollout=$glib_cv_value_POLLOUT
2376 g_pollpri=$glib_cv_value_POLLPRI
2377 g_pollhup=$glib_cv_value_POLLHUP
2378 g_pollerr=$glib_cv_value_POLLERR
2379 g_pollnval=$glib_cv_value_POLLNVAL
2381 g_stack_grows=$glib_cv_stack_grows
2383 g_have_eilseq=$have_eilseq
2385 case x$have_threads in
2386 xno) g_enable_threads_def="#undef";;
2387 *) g_enable_threads_def="#define";;
2390 g_threads_impl_def=$g_threads_impl
2392 g_mutex_has_default="$mutex_has_default"
2393 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
2394 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
2395 g_mutex_contents="$glib_cv_byte_contents_gmutex"
2397 g_module_suffix="$glib_gmodule_suffix"
2401 glib_os="#define G_OS_BEOS"
2404 glib_os="#define G_OS_UNIX
2405 #define G_PLATFORM_WIN32
2406 #define G_WITH_CYGWIN"
2409 glib_os="#define G_OS_WIN32
2410 #define G_PLATFORM_WIN32"
2413 glib_os="#define G_OS_UNIX"
2420 glib-2.0-uninstalled.pc
2422 gmodule-2.0-uninstalled.pc
2424 gthread-2.0-uninstalled.pc
2426 gobject-2.0-uninstalled.pc
2432 build/win32/Makefile
2433 build/win32/dirent/Makefile
2435 glib/libcharset/Makefile
2437 gmodule/gmoduleconf.h
2440 gobject/glib-mkenums
2444 docs/reference/Makefile
2445 docs/reference/glib/Makefile
2446 docs/reference/glib/version.xml
2447 docs/reference/gobject/Makefile
2448 docs/reference/gobject/version.xml
2453 chmod 0755 glib-gettextize
2454 chmod 0755 gobject/glib-mkenums