Make the various printf feature test macros reflect the system printf,
[glib.git] / configure.in
blob378bcb3a71e912b581bfc80939c0860729e8dd20
1 # Process this file with autoconf to produce a configure script.
2 # require autoconf 2.54
3 AC_PREREQ(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.
20 # Making releases:
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], [0])
31 m4_define([glib_interface_age], [0])
32 m4_define([glib_binary_age],
33           [m4_eval(100 * glib_minor_version + glib_micro_version)])
34 m4_define([glib_version],
35           [glib_major_version.glib_minor_version.glib_micro_version])
37 # libtool version related macros
38 m4_define([glib_lt_release], [glib_major_version.glib_minor_version])
39 m4_define([glib_lt_current],
40           [m4_eval(100 * glib_minor_version + glib_micro_version - glib_interface_age)])
41 m4_define([glib_lt_revision], [glib_interface_age])
42 m4_define([glib_lt_age], [m4_eval(glib_binary_age - glib_interface_age)])
43 m4_define([glib_lt_current_minus_age],
44           [m4_eval(glib_lt_current - glib_lt_age)])
46 # if the minor version number is odd, then we want debugging.  Otherwise
47 # we only want minimal debugging support.
48 m4_define([glib_debug_default],
49           [m4_if(m4_eval(glib_minor_version % 2), [1], [yes], [minimum])])dnl
52 AC_INIT(glib, [glib_version],
53         [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
55 AC_CONFIG_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])
91 # libtool versioning
92 LT_RELEASE=glib_lt_release
93 LT_CURRENT=glib_lt_current
94 LT_REVISION=glib_lt_revision
95 LT_AGE=glib_lt_age
96 LT_CURRENT_MINUS_AGE=glib_lt_current_minus_age
97 AC_SUBST(LT_RELEASE)
98 AC_SUBST(LT_CURRENT)
99 AC_SUBST(LT_REVISION)
100 AC_SUBST(LT_AGE)
101 AC_SUBST(LT_CURRENT_MINUS_AGE)
103 dnl Initialize maintainer mode
104 AM_MAINTAINER_MODE
106 AC_CANONICAL_HOST
108 AC_MSG_CHECKING([for the BeOS])
109 case $host in
110   *-*-beos*)
111     glib_native_beos="yes"
112     ;;
113   *)
114     glib_native_beos="no"
115     ;;
116 esac
117 AC_MSG_RESULT([$glib_native_beos])
121 AC_MSG_CHECKING([for Win32])
122 case "$host" in
123   *-*-mingw*)
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
129     GLIB_DEF=glib.def
130     GMODULE_DEF=gmodule.def
131     GOBJECT_DEF=gobject.def
132     GTHREAD_DEF=gthread.def
133     TESTGMODULE_EXP=testgmodule.exp
134     ;;
135   *)
136     glib_native_win32=no
137     G_LIB_WIN32_RESOURCE=
138     G_MODULE_WIN32_RESOURCE=
139     G_OBJECT_WIN32_RESOURCE=
140     G_THREAD_WIN32_RESOURCE=
141     GLIB_DEF=
142     GMODULE_DEF=
143     GOBJECT_DEF=
144     GTHREAD_DEF=
145     TESTGMODULE_EXP=
146     ;;
147 esac
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)
154 AC_SUBST(GLIB_DEF)
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
166 AC_ARG_ENABLE(debug,
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])
179 AC_ARG_ENABLE(ansi,
180               [AC_HELP_STRING([--enable-ansi],
181                               [turn on strict ansi [default=no]])],,
182               [enable_ansi=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
194   enable_threads=no
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)
204   AC_MSG_RESULT([yes])
205 else
206   AC_MSG_RESULT([no])
209 AC_MSG_CHECKING([whether to disable memory pools])
210 if test "x$disable_mem_pools" = "xno"; then
211   AC_MSG_RESULT([no])
212 else
213   AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
214   AC_SUBST(DISABLE_MEM_POOLS)
215   AC_MSG_RESULT([yes])
218 dnl Checks for programs.
219 AC_PROG_CC
221 dnl Check for a working C++ compiler, but do not bail out, if none is found.
222 AC_CHECK_PROGS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
223 AC_LANG_SAVE
224 AC_LANG_CPLUSPLUS
225 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
226 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
227 AC_LANG_RESTORE
229 AM_PROG_CC_STDC
230 AC_PROG_INSTALL
232 AC_SYS_LARGEFILE
235 # Find pkg-config
237 AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no])
238 if test x$PKG_CONFIG = xno ; then
239   AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
242 if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then
243   :
244 else
245   AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.])
248 if test "x$enable_debug" = "xyes"; then
249   if test x$cflags_set != xset ; then
250       case " $CFLAGS " in
251       *[[\ \    ]]-g[[\ \       ]]*) ;;
252       *) CFLAGS="$CFLAGS -g" ;;
253       esac
254   fi
255         
256   GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
257 else
258   GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
260   if test "x$enable_debug" = "xno"; then
261     GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
262   fi
265 # Ensure MSVC-compatible struct packing convention is used when
266 # compiling for Win32 with gcc.
267 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
268 # gcc2 uses "-fnative-struct".
269 if test x"$glib_native_win32" = xyes; then
270   if test x"$GCC" = xyes; then
271     msnative_struct=''
272     AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
273     if test -z "$ac_cv_prog_CC"; then
274       our_gcc="$CC"
275     else
276       our_gcc="$ac_cv_prog_CC"
277     fi
278     case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
279       2.)
280         if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
281           msnative_struct='-fnative-struct'
282         fi
283         ;;
284       *)
285         if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
286           msnative_struct='-mms-bitfields'
287         fi
288         ;;
289     esac
290     if test x"$msnative_struct" = x ; then
291       AC_MSG_RESULT([no way])
292       AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
293     else
294       CFLAGS="$CFLAGS $msnative_struct"
295       AC_MSG_RESULT([${msnative_struct}])
296     fi
297   fi
300 AC_CYGWIN
301 AC_EXEEXT
303 # define a MAINT-like variable REBUILD which is set if Perl
304 # and awk are found, so autogenerated sources can be rebuilt
305 AC_PROG_AWK
306 AC_CHECK_PROGS(PERL, [perl5 perl])
307 # We would like indent, but don't require it.
308 AC_CHECK_PROG(INDENT, indent, indent)
309 REBUILD=\#
310 if test "x$enable_rebuilds" = "xyes" && \
311      test -n "$PERL" && \
312      $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
313      test -n "$AWK" ; then
314   REBUILD=
316 AC_SUBST(REBUILD)
318 # Need full path to Perl for glib-mkenums
320 if test "x$PERL" != x ; then
321   AC_PATH_PROG(PERL_PATH, [$PERL])
322 else
323   PERL_PATH="/usr/bin/env perl"
325 AC_SUBST(PERL_PATH)
327 dnl ***********************
328 dnl *** Tests for iconv ***
329 dnl ***********************
331 dnl We do this before the gettext checks, to avoid distortion
333 AC_ARG_WITH(libiconv,
334             [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
335                             [use the libiconv library])],,
336             [with_libiconv=maybe])
338 found_iconv=no
339 case $with_libiconv in
340   maybe)
341     # Check in the C library first
342     AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
343     # Check if we have GNU libiconv
344     if test $found_iconv = "no"; then
345       AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
346     fi
347     # Check if we have a iconv in -liconv, possibly from vendor
348     if test $found_iconv = "no"; then
349       AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
350     fi
351     ;;
352   no)
353     AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
354     ;;
355   gnu|yes)
356     AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
357     ;;
358   native)
359     AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
360     ;;
361 esac
363 if test "x$found_iconv" = "xno" ; then
364    AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
368 dnl gettext support
371 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"
372 GLIB_GNU_GETTEXT
374 if test "$gt_cv_have_gettext" != "yes" ; then
375   AC_MSG_ERROR([
376 *** You must have either have gettext support in your C library, or use the 
377 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
381 LIBS="$INTLLIBS $LIBS"
383 GETTEXT_PACKAGE=glib20
384 AC_SUBST(GETTEXT_PACKAGE)
385 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"], 
386   [Define the gettext package to be used])
388 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
391 dnl Now we are done with gettext checks, figure out ICONV_LIBS
394 if test x$with_libiconv != xno ; then
395   case " $INTLLIBS " in
396   *[[\ \        ]]-liconv[[\ \  ]]*) ;;
397   *) ICONV_LIBS="-liconv" ;;
398   esac
400 AC_SUBST(ICONV_LIBS)
402 case $with_libiconv in
403   gnu)
404     AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
405     ;;
406   native)
407     AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
408     ;;
409 esac
411 dnl Initialize libtool
412 AM_DISABLE_STATIC
413 AC_LIBTOOL_WIN32_DLL
414 AM_PROG_LIBTOOL
416 if test "x$GCC" = "xyes"; then
417   case " $CFLAGS " in
418   *[[\ \        ]]-Wall[[\ \    ]]*) ;;
419   *) CFLAGS="$CFLAGS -Wall" ;;
420   esac
422   if test "x$enable_ansi" = "xyes"; then
423     case " $CFLAGS " in
424     *[[\ \      ]]-ansi[[\ \    ]]*) ;;
425     *) CFLAGS="$CFLAGS -ansi" ;;
426     esac
428     case " $CFLAGS " in
429     *[[\ \      ]]-pedantic[[\ \        ]]*) ;;
430     *) CFLAGS="$CFLAGS -pedantic" ;;
431     esac
432   fi
436 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
438 if test $cross_compiling != yes ; then
439     AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
440     glib_save_LIBS=$LIBS
441     LIBS="$LIBS -lm"
442     AC_TRY_RUN([#include <math.h>
443                  int main (void) { return (log(1) != log(1.)); }],
444          AC_MSG_RESULT(none needed),
445          glib_save_CFLAGS=$CFLAGS
446          CFLAGS="$CFLAGS -std1"
447          AC_TRY_RUN([#include <math.h>
448                      int main (void) { return (log(1) != log(1.)); }],
449              AC_MSG_RESULT(-std1),
450              AC_MSG_RESULT()
451              CFLAGS=$glib_save_CFLAGS
452              AC_MSG_WARN(
453                     [No ANSI prototypes found in library. (-std1 didn't work.)])
454          )
455     )
456     LIBS=$glib_save_LIBS
459 dnl NeXTStep cc seems to need this
460 AC_MSG_CHECKING([for extra flags for POSIX compliance])
461 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
462   AC_MSG_RESULT(none needed),
463   glib_save_CFLAGS=$CFLAGS
464   CFLAGS="$CFLAGS -posix"
465   AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
466     AC_MSG_RESULT(-posix),
467     AC_MSG_RESULT()
468     CFLAGS=$glib_save_CFLAGS
469     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
471 # Checks for header files.
472 AC_HEADER_STDC
474 # Checks for library functions.
475 AC_FUNC_VPRINTF
477 AC_FUNC_ALLOCA
479 AC_CHECK_FUNCS(atexit on_exit)
481 AC_CHECK_SIZEOF(char)
482 AC_CHECK_SIZEOF(short)
483 AC_CHECK_SIZEOF(long)
484 AC_CHECK_SIZEOF(int)
485 AC_CHECK_SIZEOF(void *)
486 AC_CHECK_SIZEOF(long long)
487 AC_CHECK_SIZEOF(__int64)
489 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
490   :
491 else
492   AC_MSG_ERROR([
493 *** GLib requires a 64 bit type. You might want to consider
494 *** using the GNU C compiler.
498 if test x$ac_cv_sizeof_long_long = x8; then
499         # long long is a 64 bit integer.
500         AC_MSG_CHECKING(for format to printf and scanf a guint64)
501         AC_CACHE_VAL(glib_cv_long_long_format,[
502                 for format in ll q I64; do
503                   AC_TRY_RUN([#include <stdio.h>  
504                         int main()
505                         {
506                           long long b, a = -0x3AFAFAFAFAFAFAFALL;
507                           char buffer[1000];
508                           sprintf (buffer, "%${format}u", a);
509                           sscanf (buffer, "%${format}u", &b);
510                           exit (b!=a);
511                         }
512                         ],
513                         [glib_cv_long_long_format=${format}
514                         break],
515                         [],[:])
516                 done])
517         if test -n "$glib_cv_long_long_format"; then
518           AC_MSG_RESULT(%${glib_cv_long_long_format}u)
519           AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
520         else
521           AC_MSG_RESULT(none)
522         fi
523 elif test x$ac_cv_sizeof___int64 = x8; then
524         # __int64 is a 64 bit integer.
525         AC_MSG_CHECKING(for format to printf and scanf a guint64)
526         # We know this is MSVC, and what the formats are
527         glib_cv_long_long_format=I64
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])
532 dnl long doubles were not used, and a portability problem
533 dnl AC_C_LONG_DOUBLE
534 AC_C_CONST
536 dnl ok, here we try to check whether the systems prototypes for
537 dnl malloc and friends actually match the prototypes provided
538 dnl by gmem.h (keep in sync). i currently only know how to check
539 dnl this reliably with gcc (-Werror), improvements for other
540 dnl compilers are apprechiated.
541 SANE_MALLOC_PROTOS=no
542 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
543 glib_save_CFLAGS=$CFLAGS
544 if test "x$GCC" = "xyes"; then
545   CFLAGS="$CFLAGS -Werror"
546   AC_TRY_COMPILE([#include <stdlib.h>], [
547     void* (*my_calloc_p)  (size_t, size_t) = calloc;
548     void* (*my_malloc_p)  (size_t)         = malloc;
549     void  (*my_free_p)    (void*)          = free;
550     void* (*my_realloc_p) (void*, size_t)  = realloc;
551     my_calloc_p = 0;
552     my_malloc_p = 0;
553     my_free_p = 0;
554     my_realloc_p = 0;
555   ],
556     AC_DEFINE(SANE_MALLOC_PROTOS, 1, 
557       [Define if you have correct malloc prototypes])
558     SANE_MALLOC_PROTOS=yes)
560 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
561 CFLAGS=$glib_save_CFLAGS
564 dnl check in which direction the stack grows
566 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
567         AC_TRY_RUN([
568         volatile int *a = 0, *b = 0;
569         void foo (void);
570         int main () { volatile int y = 7; a = &y; foo (); return b > a; }
571         void foo (void) { volatile int x = 5; b = &x; }
572         ],
573         glib_cv_stack_grows=no
574         ,
575         glib_cv_stack_grows=yes
576         ,)
579 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
580 dnl truely know which ones of `inline', `__inline' and `__inline__' are
581 dnl actually supported.
582 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
583         AC_COMPILE_IFELSE([
584         __inline int foo () { return 0; }
585         int main () { return foo (); }
586         ],
587         glib_cv_has__inline=yes
588         ,
589         glib_cv_has__inline=no
590         ,)
592 case x$glib_cv_has__inline in
593 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
594 esac
595 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
596         AC_COMPILE_IFELSE([
597         __inline__ int foo () { return 0; }
598         int main () { return foo (); }
599         ],
600         glib_cv_has__inline__=yes
601         ,
602         glib_cv_has__inline__=no
603         ,)
605 case x$glib_cv_has__inline__ in
606 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
607 esac
608 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
609         AC_COMPILE_IFELSE([
610         #undef inline
611         inline int foo () { return 0; }
612         int main () { return foo (); }
613         ],
614         glib_cv_hasinline=yes
615         ,
616         glib_cv_hasinline=no
617         ,)
619 case x$glib_cv_hasinline in
620 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
621 esac
623 # check for flavours of varargs macros
624 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
625 AC_TRY_COMPILE([],[
626 int a(int p1, int p2, int p3);
627 #define call_a(...) a(1,__VA_ARGS__)
628 call_a(2,3);
629 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
630 AC_MSG_RESULT($g_have_iso_c_varargs)
632 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
633 if test "$CXX" = ""; then
634 dnl No C++ compiler
635   g_have_iso_cxx_varargs=no
636 else
637   AC_LANG_CPLUSPLUS
638   AC_TRY_COMPILE([],[
639 int a(int p1, int p2, int p3);
640 #define call_a(...) a(1,__VA_ARGS__)
641 call_a(2,3);
642 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
643   AC_LANG_C
645 AC_MSG_RESULT($g_have_iso_cxx_varargs)
647 AC_MSG_CHECKING(for GNUC varargs macros)
648 AC_TRY_COMPILE([],[
649 int a(int p1, int p2, int p3);
650 #define call_a(params...) a(1,params)
651 call_a(2,3);
652 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
653 AC_MSG_RESULT($g_have_gnuc_varargs)
655 # check for bytesex stuff
656 AC_C_BIGENDIAN
658 # check for header files
659 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h sys/param.h sys/poll.h sys/select.h sys/types.h])
660 AC_CHECK_HEADERS([sys/time.h sys/times.h unistd.h values.h stdint.h sched.h])
662 # Checks for libcharset
663 jm_LANGINFO_CODESET
664 jm_GLIBC21
665 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
666 AC_CHECK_FUNCS(setlocale)
668 AC_MSG_CHECKING(whether make is GNU Make)
669 STRIP_BEGIN=
670 STRIP_END=
671 if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
672         STRIP_BEGIN='$(strip $(STRIP_DUMMY)'
673         STRIP_END=')'
674         AC_MSG_RESULT(yes)
675 else
676         AC_MSG_RESULT(no)
678 STRIP_DUMMY=
679 AC_SUBST(STRIP_DUMMY)
680 AC_SUBST(STRIP_BEGIN)
681 AC_SUBST(STRIP_END)
683 # check additional type sizes
684 AC_CHECK_SIZEOF(size_t)
686 dnl Try to figure out whether gsize, gssize should be long or int
687 AC_MSG_CHECKING([for the appropriate definition for size_t])
689 case $ac_cv_sizeof_size_t in
690   $ac_cv_sizeof_short) 
691       glib_size_type=short
692       ;;
693   $ac_cv_sizeof_int) 
694       glib_size_type=int
695       ;;
696   $ac_cv_sizeof_long) 
697       glib_size_type=long
698       ;;
699   *)  AC_MSG_ERROR([No type matching size_t in size])
700       ;;
701 esac
703 dnl If int/long are the same size, we see which one produces
704 dnl warnings when used in the location as size_t. (This matters
705 dnl on AIX with xlc)
707 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
708    test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
709   GLIB_CHECK_COMPILE_WARNINGS([
710 #include <stddef.h> 
711 int main ()
713   size_t s = 1;
714   unsigned int *size_int = &s;
715   return (int)*size_int;
717     ],glib_size_type=int,
718       [GLIB_CHECK_COMPILE_WARNINGS([
719 #include <stddef.h> 
720 int main ()
722    size_t s = 1;
723    unsigned long *size_long = &s;
724    return (int)*size_long;
726         ],glib_size_type=long)])
729 AC_MSG_RESULT(unsigned $glib_size_type)
731 # Check for some functions
732 AC_CHECK_FUNCS(lstat strerror strsignal memmove mkstemp vsnprintf stpcpy strcasecmp strncasecmp poll getcwd nanosleep vasprintf setenv unsetenv getc_unlocked readlink symlink)
734 AC_FUNC_VSNPRINTF_C99
735 AC_FUNC_PRINTF_UNIX98
738 # Check whether to use an included printf
741 AC_ARG_ENABLE(included-printf,
742               [AC_HELP_STRING([--enable-included-printf],
743                               [use included printf [default=auto]])],
744               enable_included_printf="$enableval")
746 need_included_printf=no
747 if test "x$enable_included_printf" = "xyes" ; then
748   need_included_printf=yes
750 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
751   need_included_printf=yes
753 if test "$ac_cv_func_printf_unix98" != "yes" ; then
754   need_included_printf=yes
756 if test "x$ac_cv_sizeof_long_long" = "x8" &&
757    test -z "$glib_cv_long_long_format" ; then
758   need_included_printf=yes
761 if test "x$enable_included_printf" = "xno" && 
762    test "x$need_included_printf" = "xyes" ; then
763   AC_MSG_ERROR([
764 *** Your C library's printf doesn't appear to have the features that
765 *** GLib needs, but you specified --enable-included-printf=no.])
768 enable_included_printf=$need_included_printf
770 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
771 if test "$enable_included_printf" != "yes" ; then 
772   AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
773 else
774   glib_cv_long_long_format="ll"
775   AC_DEFINE(HAVE_VASPRINTF,1)
778 # Checks needed for gnulib vasnprintf
779 bh_C_SIGNED
780 jm_AC_TYPE_LONG_LONG
781 gt_TYPE_LONGDOUBLE
782 gt_TYPE_WCHAR_T
783 gt_TYPE_WINT_T
784 AC_TYPE_SIZE_T
785 AC_CHECK_TYPES(ptrdiff_t)
786 jm_AC_TYPE_INTMAX_T
787 AC_CHECK_FUNCS(snprintf)
788 AC_FUNC_SNPRINTF_C99
790 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
791 # The check is borrowed from the PERL Configure script.
792 if test "$ac_cv_func_memmove" != "yes"; then
793   AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
794     glib_cv_working_bcopy,[AC_TRY_RUN([
795       int main() {
796         char buf[128], abc[128], *b;
797         int len, off, align;
798         bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
799         for (align = 7; align >= 0; align--) {
800           for (len = 36; len; len--) {
801             b = buf+align; bcopy(abc, b, len);
802             for (off = 1; off <= len; off++) {
803               bcopy(b, b+off, len); bcopy(b+off, b, len);
804                 if (bcmp(b, abc, len)) return(1);
805             }
806           }
807         }
808         return(0);
809       }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
811   GLIB_ASSERT_SET(glib_cv_working_bcopy)
812   if test "$glib_cv_working_bcopy" = "yes"; then
813     AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
814   fi
817 # Check for sys_errlist
818 AC_MSG_CHECKING(for sys_errlist)
819 AC_TRY_LINK(, [
820 extern char *sys_errlist[];
821 extern int sys_nerr;
822 sys_errlist[sys_nerr-1][0] = 0;
823 ], glib_ok=yes, glib_ok=no)
824 AC_MSG_RESULT($glib_ok)
825 if test "$glib_ok" = "no"; then
826     AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
829 # Check for sys_siglist
830 AC_MSG_CHECKING(for sys_siglist)
831 AC_TRY_LINK(, [
832 extern char *sys_siglist[];
833 exit (sys_siglist[0]);
834 ], glib_ok=yes, glib_ok=no)
835 AC_MSG_RESULT($glib_ok)
836 if test "$glib_ok" = "no"; then
837     AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
840 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
841 AC_MSG_CHECKING(for sys_siglist declaration)
842 AC_TRY_COMPILE([#include <signal.h>], [
843 strlen (sys_siglist[0]);
844 ], glib_ok=yes, glib_ok=no)
845 AC_MSG_RESULT($glib_ok)
846 if test "$glib_ok" = "no"; then
847     AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
850 # Check if <sys/select.h> needs to be included for fd_set
851 AC_MSG_CHECKING([for fd_set])
852 AC_TRY_COMPILE([#include <sys/types.h>],
853         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
854 if test "$gtk_ok" = "yes"; then
855     AC_MSG_RESULT([yes, found in sys/types.h])
856 else
857     AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
858     if test "$gtk_ok" = "yes"; then
859         # *** FIXME: give it a different name
860         AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
861         AC_MSG_RESULT([yes, found in sys/select.h])
862     else
863         AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
864         AC_MSG_RESULT(no)
865     fi
868 dnl *** check for sane realloc() ***
869 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
870         AC_TRY_RUN([#include <stdlib.h>
871         int main() {
872           return realloc (0, sizeof (int)) == 0;
873         }],
874         [glib_cv_sane_realloc=yes],
875         [glib_cv_sane_realloc=no],
876         [glib_cv_sane_realloc=yes])
878 if test x$glib_cv_sane_realloc = xyes; then
879   AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
882 dnl Check for nl_langinfo and CODESET
884 AC_MSG_CHECKING([for nl_langinfo (CODESET)])
885 AC_TRY_COMPILE([#include <langinfo.h>],
886         [char *codeset = nl_langinfo (CODESET);],
887    AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
888    have_codeset=yes,
889    have_codeset=no)
890 AC_MSG_RESULT($have_codeset)
893 dnl ****************************************
894 dnl *** strlcpy/strlcat                  ***
895 dnl ****************************************
896 # Check for strlcpy
897 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
898 AC_TRY_RUN([#include <stdlib.h>
899 #include <string.h>
900 int main() {
901   char p[10];
902   (void) strlcpy (p, "hi", 10);
903   if (strlcat (p, "bye", 0) != 3) 
904     return 1;
905   return 0;
906 }], glib_cv_have_strlcpy=yes, 
907     glib_cv_have_strlcpy=no,
908     glib_cv_have_strlcpy=no)])
909 if test "$glib_cv_have_strlcpy" = "yes"; then
910     AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
912   
914 dnl **********************
915 dnl *** va_copy checks ***
916 dnl **********************
917 dnl we currently check for all three va_copy possibilities, so we get
918 dnl all results in config.log for bug reports.
919 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
920         AC_LINK_IFELSE([#include <stdarg.h>
921         void f (int i, ...) {
922         va_list args1, args2;
923         va_start (args1, i);
924         va_copy (args2, args1);
925         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
926           exit (1);
927         va_end (args1); va_end (args2);
928         }
929         int main() {
930           f (0, 42);
931           return 0;
932         }],
933         [glib_cv_va_copy=yes],
934         [glib_cv_va_copy=no])
936 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
937         AC_LINK_IFELSE([#include <stdarg.h>
938         void f (int i, ...) {
939         va_list args1, args2;
940         va_start (args1, i);
941         __va_copy (args2, args1);
942         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
943           exit (1);
944         va_end (args1); va_end (args2);
945         }
946         int main() {
947           f (0, 42);
948           return 0;
949         }],
950         [glib_cv___va_copy=yes],
951         [glib_cv___va_copy=no])
954 if test "x$glib_cv_va_copy" = "xyes"; then
955   g_va_copy_func=va_copy
956 else if test "x$glib_cv___va_copy" = "xyes"; then
957   g_va_copy_func=__va_copy
961 if test -n "$g_va_copy_func"; then
962   AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
965 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
966         AC_TRY_RUN([#include <stdarg.h>
967         void f (int i, ...) {
968         va_list args1, args2;
969         va_start (args1, i);
970         args2 = args1;
971         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
972           exit (1);
973         va_end (args1); va_end (args2);
974         }
975         int main() {
976           f (0, 42);
977           return 0;
978         }],
979         [glib_cv_va_val_copy=yes],
980         [glib_cv_va_val_copy=no],
981         [glib_cv_va_val_copy=yes])
984 if test "x$glib_cv_va_val_copy" = "xno"; then
985   AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
988 dnl ***********************
989 dnl *** g_module checks ***
990 dnl ***********************
991 G_MODULE_LIBS=
992 G_MODULE_LIBS_EXTRA=
993 G_MODULE_PLUGIN_LIBS=
994 if test x"$glib_native_win32" = xyes; then
995   dnl No use for this on Win32
996   G_MODULE_LDFLAGS=
997 else
998   G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1000 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1001 G_MODULE_NEED_USCORE=0
1002 G_MODULE_BROKEN_RTLD_GLOBAL=0
1003 G_MODULE_HAVE_DLERROR=0
1004 dnl *** force native WIN32 shared lib loader 
1005 if test -z "$G_MODULE_IMPL"; then
1006   case "$host" in
1007   *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1008   esac
1010 dnl *** dlopen() and dlsym() in system libraries
1011 if test -z "$G_MODULE_IMPL"; then
1012         AC_CHECK_FUNC(dlopen,
1013                       [AC_CHECK_FUNC(dlsym,
1014                                      [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1015                       [])
1017 dnl *** load_image (BeOS)
1018 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
1019   AC_CHECK_LIB(root, load_image,
1020       [G_MODULE_LIBS="-lbe -lroot -lglib"
1021       G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1022       G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1023       G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1024       [])
1025 fi   
1026 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1027 if test -z "$G_MODULE_IMPL"; then
1028         AC_CHECK_FUNC(NSLinkModule,
1029                       [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1030                        G_MODULE_NEED_USCORE=1],
1031                       [])
1033 dnl *** dlopen() and dlsym() in libdl
1034 if test -z "$G_MODULE_IMPL"; then
1035         AC_CHECK_LIB(dl, dlopen,
1036                      [AC_CHECK_LIB(dl, dlsym,
1037                                    [G_MODULE_LIBS=-ldl
1038                                    G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1039                      [])
1041 dnl *** shl_load() in libdld (HP-UX)
1042 if test -z "$G_MODULE_IMPL"; then
1043         AC_CHECK_LIB(dld, shl_load,
1044                 [G_MODULE_LIBS=-ldld
1045                 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1046                 [])
1048 dnl *** additional checks for G_MODULE_IMPL_DL
1049 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1050         LIBS_orig="$LIBS"
1051         LDFLAGS_orig="$LDFLAGS"
1052         LIBS="$G_MODULE_LIBS $LIBS"
1053         LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1054 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1055         AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1056                 glib_cv_rtldglobal_broken,[
1057                 AC_TRY_RUN([
1058 #include <dlfcn.h>
1059 #ifndef RTLD_GLOBAL
1060 #  define RTLD_GLOBAL 0
1061 #endif
1062 #ifndef RTLD_LAZY
1063 #  define RTLD_LAZY 0
1064 #endif
1065 int pthread_create;
1066 int main () {
1067     void *handle, *global, *local;
1068     global = &pthread_create;
1069     handle = dlopen ("libpthread.so", RTLD_GLOBAL | RTLD_LAZY);
1070     if (!handle) return 0;
1071     local = dlsym (handle, "pthread_create");
1072     return global == local;
1073 }                       ],
1074                         [glib_cv_rtldglobal_broken=no],
1075                         [glib_cv_rtldglobal_broken=yes],
1076                         [glib_cv_rtldglobal_broken=no])
1077                 rm -f plugin.c plugin.o plugin.lo
1078         ])
1079         if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1080                 G_MODULE_BROKEN_RTLD_GLOBAL=1
1081         else
1082                 G_MODULE_BROKEN_RTLD_GLOBAL=0
1083         fi
1084 dnl *** check whether we need preceeding underscores
1085         AC_CACHE_CHECK([for preceeding underscore in symbols],
1086                 glib_cv_uscore,[
1087                 AC_TRY_RUN([#include <dlfcn.h>
1088                 int glib_underscore_test (void) { return 42; }
1089                 int main() {
1090                   void *f1 = (void*)0, *f2 = (void*)0, *handle;
1091                   handle = dlopen ((void*)0, 0);
1092                   if (handle) {
1093                     f1 = dlsym (handle, "glib_underscore_test");
1094                     f2 = dlsym (handle, "_glib_underscore_test");
1095                   } return (!f2 || f1);
1096                 }],
1097                         [glib_cv_uscore=yes],
1098                         [glib_cv_uscore=no],
1099                         [])
1100                 rm -f plugin.c plugin.$ac_objext plugin.lo
1101         ])
1102         GLIB_ASSERT_SET(glib_cv_uscore)
1103         if test "x$glib_cv_uscore" = "xyes"; then
1104                 G_MODULE_NEED_USCORE=1
1105         else
1106                 G_MODULE_NEED_USCORE=0
1107         fi
1109         LDFLAGS="$LDFLAGS_orig"
1110 dnl *** check for having dlerror()
1111         AC_CHECK_FUNC(dlerror,
1112                 [G_MODULE_HAVE_DLERROR=1],
1113                 [G_MODULE_HAVE_DLERROR=0])
1114         LIBS="$LIBS_orig"
1116 dnl *** done, have we got an implementation?
1117 if test -z "$G_MODULE_IMPL"; then
1118         G_MODULE_IMPL=0
1119         G_MODULE_SUPPORTED=false
1120 else
1121         G_MODULE_SUPPORTED=true
1124 AC_MSG_CHECKING(for the suffix of shared libraries)
1125 case "$host_os" in
1126   hpux9* | hpux10* | hpux11*)  # taken from ltconfig
1127     glib_gmodule_suffix='sl'
1128     ;;
1129   cygwin* | mingw*)
1130     glib_gmodule_suffix='dll'
1131     ;;
1132   *)
1133     glib_gmodule_suffix='so'    
1134     ;;
1135 esac
1136 AC_MSG_RESULT(.$glib_gmodule_suffix)
1138 AC_SUBST(G_MODULE_SUPPORTED)
1139 AC_SUBST(G_MODULE_IMPL)
1140 AC_SUBST(G_MODULE_LIBS)
1141 AC_SUBST(G_MODULE_LIBS_EXTRA)
1142 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1143 AC_SUBST(G_MODULE_LDFLAGS)
1144 AC_SUBST(G_MODULE_HAVE_DLERROR)
1145 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1146 AC_SUBST(G_MODULE_NEED_USCORE)
1147 AC_SUBST(GLIB_DEBUG_FLAGS)
1149 dnl **********************
1150 dnl *** g_spawn checks ***
1151 dnl **********************
1153 AC_MSG_CHECKING(for gspawn implementation)
1154 case "$host" in
1155   *-*-mingw*)
1156     GSPAWN=gspawn-win32.lo
1157     ;;
1158   *)
1159     GSPAWN=gspawn.lo
1160     ;;    
1161 esac
1162 AC_MSG_RESULT($GSPAWN)
1163 AC_SUBST(GSPAWN)
1165 dnl *************************
1166 dnl *** GIOChannel checks ***
1167 dnl *************************
1169 AC_MSG_CHECKING(for GIOChannel implementation)
1170 case "$host" in
1171   *-*-mingw*)
1172     GIO=giowin32.lo
1173     ;;
1174   *)
1175     GIO=giounix.lo
1176     ;;    
1177 esac
1178 AC_MSG_RESULT($GIO)
1179 AC_SUBST(GIO)
1181 dnl check for cpu to enable double checked locking when possible
1182 dnl ************************************************************
1184 if test x"$have_threads" != xno; then
1185         AC_MSG_CHECKING(whether double checked locking is safe)
1186         # According to glibc/linuxthreads the following platforms do
1187         # not have the notion of a read or write memory barrier and
1188         # therefore the double checked locking should be safe. Have a
1189         # look at pthread_once in glibc/linuxthreads/mutex.c to see,
1190         # what this means.
1191         case $host_cpu in
1192                 arm|hppa|i386|i686|ia64|m68k|sh|cris|x86_64)
1193                         g_use_double_checked_locking=yes
1194                 ;;
1195                 *)
1196                         g_use_double_checked_locking=no
1197                 ;;
1198         esac
1199         AC_MSG_RESULT($g_use_double_checked_locking)
1202 dnl ****************************************
1203 dnl *** platform dependent source checks ***
1204 dnl ****************************************
1206 AC_MSG_CHECKING(for platform-dependent source)
1207 case "$host" in
1208   *-*-cygwin*|*-*-mingw*)
1209     PLATFORMDEP=gwin32.lo
1210     ;;
1211   *)
1212     PLATFORMDEP=
1213     ;;    
1214 esac
1215 AC_MSG_RESULT($PLATFORMDEP)
1216 AC_SUBST(PLATFORMDEP)
1218 AC_MSG_CHECKING([whether to compile timeloop])
1219 case "$host" in
1220   *-*-cygwin*|*-*-mingw*)
1221     enable_timeloop=no
1222     ;;
1223   *)
1224     enable_timeloop=yes
1225     ;;    
1226 esac
1227 AC_MSG_RESULT($enable_timeloop)
1228 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1230 AC_MSG_CHECKING([if building for some Win32 platform])
1231 case "$host" in
1232   *-*-mingw*|*-*-cygwin*)
1233     platform_win32=yes
1234     ;;
1235   *)
1236     platform_win32=no
1237     ;;
1238 esac
1239 AC_MSG_RESULT($platform_win32)
1240 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1242 dnl ***********************
1243 dnl *** g_thread checks ***
1244 dnl ***********************
1246 AC_ARG_WITH(threads,
1247            [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/solaris/win32@:>@],
1248                            [specify a thread implementation to use])],
1249            [if test "x$with_threads" = x; then
1250                 want_threads=yes
1251             else
1252                 want_threads=$with_threads
1253             fi],
1254            [want_threads=yes])
1255 if test "x$enable_threads" = "xno"; then
1256         want_threads=no
1259 dnl error and warning message
1260 dnl *************************
1262 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1263                 computer. GLib will not have a default thread implementation."
1265 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1266                 platform (normally it's "_REENTRANT"). I'll not use any flag on
1267                 compilation now, but then your programs might not work.
1268                 Please provide information on how it is done on your system."
1270 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1271                 "
1273 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1274                 provide information on your thread implementation.
1275                 You can also run 'configure --disable-threads' 
1276                 to compile without thread support."
1278 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1279                 functions will not be MT-safe during their first call because
1280                 there is no working 'getpwuid_r' on your system."
1282 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1283                 because there is no 'localtime_r' on your system."
1285 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1286                 crude surrogate will be used. If you happen to know a 
1287                 yield function for your system, please inform the GLib 
1288                 developers."
1290 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for 
1291                 threads on your system. Thus threads can only have the default 
1292                 priority. If you happen to know these main/max
1293                 priorities, please inform the GLib developers."
1295 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1296                 linking threaded applications. As GLib cannot do that 
1297                 automatically, you will get an linkg error everytime you are 
1298                 not using the right compiler. In that case you have to relink 
1299                 with the right compiler. Ususally just '_r' is appended 
1300                 to the compiler name."
1302 dnl determination of thread implementation
1303 dnl ***************************************
1305 # have_threads=no   means no thread support
1306 # have_threads=none means no default thread implementation
1308 have_threads=no
1309 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
1310         case $host in
1311                 *-*-solaris*)
1312                 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
1313                 ;;
1314         esac
1316 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1317                                 || test "x$want_threads" = xdce; then
1318         # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1319         # -U_OSF_SOURCE is for Digital UNIX 4.0d
1320         GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1321         glib_save_CPPFLAGS="$CPPFLAGS"
1322         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1323         if test "x$have_threads" = xno; then
1324                 AC_TRY_COMPILE([#include <pthread.h>],
1325                         [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1326                         have_threads=posix)
1327         fi
1328         if test "x$have_threads" = xno; then
1329                 AC_TRY_COMPILE([#include <pthread.h>],
1330                         [pthread_mutex_t m; 
1331                          pthread_mutex_init (&m, pthread_mutexattr_default);],
1332                         have_threads=dce)
1333         fi
1334         # Tru64Unix requires -pthread to find pthread.h. See #103020
1335         CPPFLAGS="$CPPFLAGS -pthread"
1336         if test "x$have_threads" = xno; then
1337         AC_TRY_COMPILE([#include <pthread.h>],
1338                        [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1339                        have_threads=posix)
1340         fi
1341         CPPFLAGS="$glib_save_CPPFLAGS"
1343 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1344         case $host in
1345                 *-*-mingw*)
1346                 have_threads=win32
1347                 ;;
1348         esac
1350 if test "x$want_threads" = xnone; then
1351         have_threads=none
1354 AC_MSG_CHECKING(for thread implementation)
1356 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1357         AC_MSG_RESULT(none available)
1358         AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1359 else
1360         AC_MSG_RESULT($have_threads)
1364 dnl determination of G_THREAD_CFLAGS
1365 dnl ********************************
1367 G_THREAD_LIBS=
1368 G_THREAD_LIBS_EXTRA=
1369 G_THREAD_CFLAGS=
1372 dnl Test program for basic POSIX threads functionality
1374 m4_define([glib_thread_test],[
1375 #include <pthread.h> 
1376 int check_me = 0;
1377 void* func(void* data) {check_me = 42; return &check_me;}
1378 int main()
1379  { pthread_t t; 
1380    void *ret;
1381    pthread_create (&t, $1, func, 0);
1382    pthread_join (t, &ret);
1383    exit (check_me != 42 || ret != &check_me);
1387 dnl Test program for sched_get_priority_min()
1389 m4_define([glib_sched_priority_test],[
1390 #include <sched.h>
1391 #include <errno.h>
1392 int main() {
1393     errno = 0;
1394     return sched_get_priority_min(SCHED_OTHER)==-1
1395            && errno != 0;
1398 if test x"$have_threads" != xno; then
1400   if test x"$have_threads" = xposix; then
1401     # First we test for posix, whether -pthread or -pthreads do the trick as 
1402     # both CPPFLAG and LIBS. 
1403     # One of them does for most gcc versions and some other platforms/compilers
1404     # too and could be considered as the canonical way to go. 
1405     for flag in pthread pthreads; do
1406       glib_save_CFLAGS="$CFLAGS"
1407       CFLAGS="$CFLAGS -$flag"
1408       AC_TRY_RUN(glib_thread_test(0),
1409                  glib_flag_works=yes,
1410                  glib_flag_works=no,
1411                  [AC_LINK_IFELSE(glib_thread_test(0),
1412                                  glib_flag_works=yes,
1413                                  glib_flag_works=no)])
1414       CFLAGS="$glib_save_CFLAGS"
1415       if test $glib_flag_works = yes ; then
1416          G_THREAD_CFLAGS=-$flag
1417          G_THREAD_LIBS=-$flag
1418       fi
1419     done
1420   fi
1422   if test x"$G_THREAD_CFLAGS" = x; then
1424     # The canonical -pthread[s] does not work. Try something different.
1426     case $host in
1427         *-aix*)
1428                 if test x"$GCC" = xyes; then
1429                         # GCC 3.0 and above needs -pthread. 
1430                         # Should be coverd by the case above.
1431                         # GCC 2.x and below needs -mthreads
1432                         G_THREAD_CFLAGS="-mthreads"             
1433                         G_THREAD_LIBS=$G_THREAD_CFLAGS
1434                 else 
1435                         # We are probably using the aix compiler. Normaly a 
1436                         # program would have to be compiled with the _r variant
1437                         # of the corresponding compiler, but we as GLib cannot 
1438                         # do that: but the good news is that for compiling the
1439                         # only difference is the added -D_THREAD_SAFE compile 
1440                         # option. This is according to the "C for AIX User's 
1441                         # Guide".
1442                         G_THREAD_CFLAGS="-D_THREAD_SAFE"
1443                 fi
1444                 ;;
1445         *-dg-dgux*)  # DG/UX
1446                 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1447                 ;;
1448         *-osf*)
1449                 # So we are using dce threads. posix threads are already 
1450                 # catched above.
1451                 G_THREAD_CFLAGS="-threads"
1452                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1453                 ;;
1454         *-solaris*)
1455                 if test x"$GCC" = xyes; then
1456                    # We are using solaris threads. posix threads are 
1457                    # already catched above.
1458                         G_THREAD_CFLAGS="-threads"
1459                 else
1460                         G_THREAD_CFLAGS="-mt"
1461                 fi
1462                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1463                 ;;
1464         *-sysv5uw7*) # UnixWare 7 
1465                 # We are not using gcc with -pthread. Catched above.
1466                 G_THREAD_CFLAGS="-Kthread"
1467                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1468                 ;;
1469         *)
1470                 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1471                 ;;
1472     esac
1474   fi
1476     # if we are not finding the localtime_r function, then we probably are
1477     # not using the proper multithread flag
1479     glib_save_CPPFLAGS="$CPPFLAGS"
1480     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1482     # First we test, whether localtime_r is declared in time.h
1483     # directly. Then we test whether a macro localtime_r exists, in
1484     # which case localtime_r in the test program is replaced and thus
1485     # if we still find localtime_r in the output, it is not defined as 
1486     # a macro.
1488     AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
1489       [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h> 
1490                                                            localtime_r(a,b)],
1491                    AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
1493     CPPFLAGS="$glib_save_CPPFLAGS"
1495     AC_MSG_CHECKING(thread related cflags)
1496     AC_MSG_RESULT($G_THREAD_CFLAGS)
1497     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1500 dnl determination of G_THREAD_LIBS
1501 dnl ******************************
1503 mutex_has_default=no
1504 case $have_threads in
1505         posix|dce)
1506           glib_save_CPPFLAGS="$CPPFLAGS"
1507           CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1508           if test x"$G_THREAD_LIBS" = x; then
1509             case $host in
1510               *-aix*)
1511                 # We are not using gcc (would have set G_THREAD_LIBS) and thus 
1512                 # probably using the aix compiler.
1513                 AC_MSG_WARN($AIX_COMPILE_INFO)
1514                 ;;
1515               *)
1516                 G_THREAD_LIBS=error
1517                 glib_save_LIBS="$LIBS"
1518                 for thread_lib in "" pthread pthread32 pthreads thread dce; do
1519                         if test x"$thread_lib" = x; then
1520                                 add_thread_lib=""
1521                                 IN=""
1522                         else
1523                                 add_thread_lib="-l$thread_lib"
1524                                 IN=" in -l$thread_lib"
1525                         fi
1526                         if test x"$have_threads" = xposix; then
1527                                 defattr=0
1528                         else
1529                                 defattr=pthread_attr_default
1530                         fi
1531                         
1532                         LIBS="$add_thread_lib $glib_save_LIBS"
1533                         
1534                         AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
1535                         AC_TRY_RUN(glib_thread_test($defattr),
1536                                    glib_result=yes,
1537                                    glib_result=no,
1538                                    [AC_LINK_IFELSE(glib_thread_test($defattr),
1539                                                    glib_result=yes,
1540                                                    glib_result=no)])
1541                         AC_MSG_RESULT($glib_result)
1542                         
1543                         if test "$glib_result" = "yes" ; then
1544                           G_THREAD_LIBS="$add_thread_lib"
1545                           break
1546                         fi
1547                 done
1548                 if test "x$G_THREAD_LIBS" = xerror; then
1549                   AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1550                 fi 
1551                 LIBS="$glib_save_LIBS"
1552                 ;;
1553             esac
1554           fi
1556           glib_save_LIBS="$LIBS"
1557           for thread_lib in "" rt rte; do
1558             if test x"$thread_lib" = x; then
1559               add_thread_lib=""
1560               IN=""
1561             else
1562               add_thread_lib="-l$thread_lib"
1563               IN=" in -l$thread_lib"
1564             fi
1565             LIBS="$add_thread_lib $glib_save_LIBS"
1566             
1567             AC_MSG_CHECKING(for sched_get_priority_min$IN)
1568             AC_TRY_RUN(glib_sched_priority_test,
1569                        glib_result=yes,
1570                        glib_result=no,
1571                        [AC_LINK_IFELSE(glib_sched_priority_test,
1572                                        glib_result=yes,
1573                                        glib_result=no)])
1574             AC_MSG_RESULT($glib_result)
1576             if test "$glib_result" = "yes" ; then           
1577                G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
1578                posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
1579                posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
1580                break
1581             fi
1582           done
1583           LIBS="$glib_save_LIBS"
1584           mutex_has_default=yes
1585           mutex_default_type='pthread_mutex_t'
1586           mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
1587           mutex_header_file='pthread.h'
1588           if test "x$have_threads" = "xposix"; then
1589             g_threads_impl="POSIX"
1590           else
1591             g_threads_impl="DCE"
1592             have_threads="posix"
1593           fi
1594           AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
1595           CPPFLAGS="$glib_save_CPPFLAGS"
1596           ;;
1597         solaris)
1598            mutex_has_default=yes
1599            mutex_default_type='mutex_t'
1600            mutex_default_init="DEFAULTMUTEX"
1601            mutex_header_file='thread.h'
1602            g_threads_impl="SOLARIS"
1603            ;;
1604         win32)
1605            g_threads_impl="WIN32"
1606            ;;
1607         none|no)
1608            g_threads_impl="NONE"
1609            ;;
1610         *)
1611            g_threads_impl="NONE"
1612            G_THREAD_LIBS=error
1613            ;;
1614 esac
1616 if test "x$G_THREAD_LIBS" = xerror; then
1617         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1620 case $host in
1621   *-*-beos*)
1622     G_THREAD_LIBS="-lbe -lroot -lglib "
1623     G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1624     ;;
1625   *)
1626     ;;
1627 esac
1629 AC_MSG_CHECKING(thread related libraries)
1630 AC_MSG_RESULT($G_THREAD_LIBS)
1632 dnl check for mt safe function variants and some posix functions
1633 dnl ************************************************************
1635 if test x"$have_threads" != xno; then
1636         glib_save_LIBS="$LIBS"
1637         # we are not doing the following for now, as this might require glib 
1638         # to always be linked with the thread libs on some platforms. 
1639         # LIBS="$LIBS $G_THREAD_LIBS"
1640         AC_CHECK_FUNCS(localtime_r)
1641         if test "$ac_cv_header_pwd_h" = "yes"; then
1642                 AC_CACHE_CHECK([for posix getpwuid_r],
1643                         ac_cv_func_posix_getpwuid_r,
1644                         [AC_TRY_RUN([
1645 #include <errno.h>
1646 #include <pwd.h>
1647 int main () { 
1648     char buffer[10000];
1649     struct passwd pwd, *pwptr = &pwd;
1650     int error;
1651     errno = 0;
1652     error = getpwuid_r (0, &pwd, buffer, 
1653                         sizeof (buffer), &pwptr);
1654    return (error < 0 && errno == ENOSYS) 
1655            || error == ENOSYS; 
1656 }                               ],
1657                                 [ac_cv_func_posix_getpwuid_r=yes],
1658                                 [ac_cv_func_posix_getpwuid_r=no])])
1659                 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
1660                 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
1661                         AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
1662                                 [Have POSIX function getpwuid_r])
1663                 else
1664                         AC_CACHE_CHECK([for nonposix getpwuid_r],
1665                                 ac_cv_func_nonposix_getpwuid_r,
1666                                 [AC_TRY_LINK([#include <pwd.h>],
1667                                         [char buffer[10000];
1668                                         struct passwd pwd;
1669                                         getpwuid_r (0, &pwd, buffer, 
1670                                                         sizeof (buffer));],
1671                                         [ac_cv_func_nonposix_getpwuid_r=yes],
1672                                         [ac_cv_func_nonposix_getpwuid_r=no])])
1673                         GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
1674                         if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
1675                                 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
1676                                         [Have non-POSIX function getpwuid_r])
1677                         fi
1678                 fi
1679         fi
1680         LIBS="$G_THREAD_LIBS $LIBS"
1681         if test x"$have_threads" = xposix; then
1682                 glib_save_CPPFLAGS="$CPPFLAGS"
1683                 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1684                 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
1685                 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
1686                 # This is not AC_CHECK_FUNC to also work with function
1687                 # name mangling in header files.
1688                 AC_MSG_CHECKING(for pthread_attr_setstacksize)
1689                 AC_TRY_LINK([#include <pthread.h>],
1690                         [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
1691                         [AC_MSG_RESULT(yes)
1692                         AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
1693                                   [Have function pthread_attr_setstacksize])],
1694                         [AC_MSG_RESULT(no)])
1695                 AC_MSG_CHECKING(for minimal/maximal thread priority)
1696                 if test x"$posix_priority_min" = x; then
1697                         AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
1698                                 PX_PRIO_MIN],,[
1699                                 posix_priority_min=PX_PRIO_MIN
1700                                 posix_priority_max=PX_PRIO_MAX])
1701                 fi
1702                 if test x"$posix_priority_min" = x; then
1703                         # AIX
1704                         AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
1705                                 PTHREAD_PRIO_MIN],,[
1706                                 posix_priority_min=PTHREAD_PRIO_MIN
1707                                 posix_priority_max=PTHREAD_PRIO_MAX])
1708                 fi
1709                 if test x"$posix_priority_min" = x; then
1710                         AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
1711                                 PRI_OTHER_MIN],,[
1712                                 posix_priority_min=PRI_OTHER_MIN        
1713                                 posix_priority_max=PRI_OTHER_MAX])
1714                 fi
1715                 if test x"$posix_priority_min" = x; then
1716                         AC_MSG_RESULT(none found)
1717                         AC_MSG_WARN($POSIX_NO_PRIORITIES)
1718                         posix_priority_min=-1
1719                         posix_priority_max=-1
1720                 else
1721                         AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
1722                         AC_MSG_CHECKING(for pthread_setschedparam)
1723                         AC_TRY_LINK([#include <pthread.h>],
1724                           [pthread_t t; pthread_setschedparam(t, 0, NULL)],
1725                           [AC_MSG_RESULT(yes)
1726                         AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
1727                            AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
1728                           [AC_MSG_RESULT(no)
1729                            AC_MSG_WARN($POSIX_NO_PRIORITIES)])
1730                 fi
1731                 posix_yield_func=none
1732                 AC_MSG_CHECKING(for posix yield function)
1733                 for yield_func in sched_yield pthread_yield_np pthread_yield \
1734                                                         thr_yield; do
1735                         AC_TRY_LINK([#include <pthread.h>],
1736                                 [$yield_func()],
1737                                 [posix_yield_func="$yield_func"
1738                                 break])
1739                 done            
1740                 if test x"$posix_yield_func" = xnone; then
1741                         AC_MSG_RESULT(none found)
1742                         AC_MSG_WARN($POSIX_NO_YIELD)
1743                         posix_yield_func="g_usleep(1000)"
1744                 else
1745                         AC_MSG_RESULT($posix_yield_func)
1746                         posix_yield_func="$posix_yield_func()"
1747                 fi
1748                 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
1749                 CPPFLAGS="$glib_save_CPPFLAGS"
1751                 AC_CACHE_CHECK([whether to use the PID niceness surrogate for thread priorities], 
1752                                glib_cv_use_pid_surrogate, 
1753                  [AC_TRY_RUN([
1754 #include <pthread.h> 
1755 #include <sys/types.h>
1756 #include <unistd.h>
1757 pid_t other_pid = 0;
1759 void* func(void* data) {other_pid = getpid();}
1760 main()
1761 { pthread_t t; 
1762   void *ret;
1763   pthread_create (&t, 0, func, NULL);
1764   pthread_join (t, &ret);
1765   exit (getpid()==other_pid || 
1766         $posix_priority_min != $posix_priority_max);
1767 }               ],
1768                 [glib_cv_use_pid_surrogate=yes],
1769                 [glib_cv_use_pid_surrogate=no],
1770                 [])])
1771           GLIB_ASSERT_SET(glib_cv_use_pid_surrogate)
1772           if test "$glib_cv_use_pid_surrogate" = "yes" ; then
1773             AC_DEFINE(G_THREAD_USE_PID_SURROGATE, 1, 
1774                       [whether to use the PID niceness surrogate for thread priorities])
1775           fi
1776            
1777         elif test x"$have_threads" = xwin32; then
1778                 # It's a pointer to a private struct
1779                 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
1780         elif test x"$have_threads" = xsolaris; then 
1781                 GLIB_SIZEOF([#include <thread.h>], thread_t, system_thread)
1782         fi
1784         LIBS="$glib_save_LIBS"
1786         # now spit out all the warnings.
1787         if test "$ac_cv_func_posix_getpwuid_r" != "yes" && 
1788            test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
1789                 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
1790         fi
1791         if test "$ac_cv_func_localtime_r" != "yes"; then
1792                 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
1793         fi
1794 fi      
1796 if test x"$glib_cv_sizeof_system_thread" = x; then
1797    # use a pointer as a fallback.
1798    GLIB_SIZEOF(,void *, system_thread)
1802 # Hack to deal with:
1804 #  a) GCC < 3.3 for Linux doesn't include -lpthread when
1805 #     building shared libraries with linux.
1806 #  b) libtool doesn't recognize -pthread as a library dependency.
1808 case $host in
1809   *-*-linux*)
1810     G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
1811     ;;
1812   *)
1813     G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-Wc,-pthread/`"
1814     ;;
1815 esac
1817 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
1818                    [Source file containing theread implementation])
1819 AC_SUBST(G_THREAD_CFLAGS)
1820 AC_SUBST(G_THREAD_LIBS)
1821 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
1822 AC_SUBST(G_THREAD_LIBS_EXTRA)
1824 dnl **********************************************
1825 dnl *** GDefaultMutex setup and initialization ***
1826 dnl **********************************************
1828 dnl if mutex_has_default = yes, we also got
1829 dnl mutex_default_type, mutex_default_init and mutex_header_file
1830 if test $mutex_has_default = yes ; then
1831         glib_save_CPPFLAGS="$CPPFLAGS"
1832         glib_save_LIBS="$LIBS"
1833         LIBS="$G_THREAD_LIBS $LIBS"
1834         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1835         GLIB_SIZEOF([#include <$mutex_header_file>],
1836                     $mutex_default_type,
1837                     gmutex)
1838         GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
1839                            $mutex_default_type,
1840                            gmutex,
1841                            $glib_cv_sizeof_gmutex,
1842                            $mutex_default_init)
1843         if test x"$glib_cv_byte_contents_gmutex" = xno; then
1844                 mutex_has_default=no
1845         fi
1846         CPPFLAGS="$glib_save_CPPFLAGS"
1847         LIBS="$glib_save_LIBS"
1850 dnl ****************************************
1851 dnl *** GLib POLL* compatibility defines ***
1852 dnl ****************************************
1854 glib_poll_includes=["
1855 #include <sys/types.h>
1856 #include <sys/poll.h>
1859 if test $ac_cv_header_sys_types_h = yes &&
1860    test $ac_cv_header_sys_poll_h = yes ; then
1861   glib_failed=false
1862   GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
1863   GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
1864   GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
1865   GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
1866   GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
1867   GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
1868   if $glib_failed ; then
1869     AC_MSG_ERROR([Could not determine values for POLL* constants])
1870   fi
1871 else
1872   glib_cv_value_POLLIN=1
1873   glib_cv_value_POLLOUT=4
1874   glib_cv_value_POLLPRI=2
1875   glib_cv_value_POLLERR=8
1876   glib_cv_value_POLLHUP=16
1877   glib_cv_value_POLLNVAL=32
1880 dnl **********************
1881 dnl *** Win32 API libs ***
1882 dnl **********************
1884 case $host in
1885   *-*-cygwin*)
1886         G_LIBS_EXTRA="-luser32 -lkernel32"
1887     ;;
1888   *-*-mingw*)
1889         G_LIBS_EXTRA="-lwsock32"
1890     ;;
1891   *)
1892         G_LIBS_EXTRA=""
1893     ;;
1894 esac
1895 AC_SUBST(G_LIBS_EXTRA)
1897 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
1898 dnl since we need it for g_iconv()
1900 AC_MSG_CHECKING([for EILSEQ])
1901 AC_TRY_COMPILE([
1902 #include <errno.h>
1905 int error = EILSEQ;
1906 ], have_eilseq=yes, have_eilseq=no);
1907 AC_MSG_RESULT($have_eilseq)
1909 dnl ******************************************************************
1910 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
1911 dnl ******************************************************************
1913 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
1915 if test $cross_compiling = yes; then
1916   AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
1917   if test x$GLIB_GENMARSHAL = xno; then
1918     AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
1919   fi
1922 dnl **************************
1923 dnl *** Checks for gtk-doc ***
1924 dnl **************************
1926 GTK_DOC_CHECK([1.0])
1928 AC_ARG_ENABLE(man,
1929               [AC_HELP_STRING([--enable-man],
1930                               [regenerate man pages from Docbook [default=no]])],enable_man=yes,
1931               enable_man=no)
1933 dnl Check for xsltproc
1935 AC_PATH_PROG([XSLTPROC], [xsltproc])
1936 if test -z "$XSLTPROC"; then
1937   enable_man=no
1940 dnl check for DocBook DTD and stylesheets in the local catalog.
1941 JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
1942    [DocBook XML DTD V4.1.2],,enable_man=no)
1943 JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
1944    [DocBook XSL Stylesheets],,enable_man=no)
1945 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
1947 dnl ******************************
1948 dnl *** output the whole stuff ***
1949 dnl ******************************
1951 dnl this section will only be run if config.status is invoked with no
1952 dnl arguments, or with "glibconfig.h" as an argument.
1953 AC_CONFIG_COMMANDS([glibconfig.h],
1955         outfile=glibconfig.h-tmp
1956         cat > $outfile <<\_______EOF
1957 /* glibconfig.h
1959  * This is a generated file.  Please modify 'configure.in'
1960  */
1962 #ifndef __G_LIBCONFIG_H__
1963 #define __G_LIBCONFIG_H__
1965 #include <glib/gmacros.h>
1967 _______EOF
1969         if test x$glib_limits_h = xyes; then
1970           echo '#include <limits.h>' >> $outfile
1971         fi
1972         if test x$glib_float_h = xyes; then
1973           echo '#include <float.h>' >> $outfile
1974         fi
1975         if test x$glib_values_h = xyes; then
1976           echo '#include <values.h>' >> $outfile
1977         fi
1978         if test "$glib_header_alloca_h" = "yes"; then
1979           echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
1980         fi
1981         if test x$glib_sys_poll_h = xyes; then
1982           echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
1983         fi
1985         cat >> $outfile <<_______EOF
1987 G_BEGIN_DECLS
1989 #define G_MINFLOAT      $glib_mf
1990 #define G_MAXFLOAT      $glib_Mf
1991 #define G_MINDOUBLE     $glib_md
1992 #define G_MAXDOUBLE     $glib_Md
1993 #define G_MINSHORT      $glib_ms
1994 #define G_MAXSHORT      $glib_Ms
1995 #define G_MAXUSHORT     $glib_Mus
1996 #define G_MININT        $glib_mi
1997 #define G_MAXINT        $glib_Mi
1998 #define G_MAXUINT       $glib_Mui
1999 #define G_MINLONG       $glib_ml
2000 #define G_MAXLONG       $glib_Ml
2001 #define G_MAXULONG      $glib_Mul
2003 #define G_MININT64      G_GINT64_CONSTANT(0x8000000000000000)
2004 #define G_MAXINT64      G_GINT64_CONSTANT(0x7fffffffffffffff)
2005 #define G_MAXUINT64     G_GINT64_CONSTANT(0xffffffffffffffffU)
2007 _______EOF
2010         ### this should always be true in a modern C/C++ compiler
2011         cat >>$outfile <<_______EOF
2012 typedef signed char gint8;
2013 typedef unsigned char guint8;
2014 _______EOF
2017         if test -n "$gint16"; then
2018           cat >>$outfile <<_______EOF
2019 typedef signed $gint16 gint16;
2020 typedef unsigned $gint16 guint16;
2021 #define G_GINT16_MODIFIER $gint16_modifier
2022 #define G_GINT16_FORMAT $gint16_format
2023 #define G_GUINT16_FORMAT $guint16_format
2024 _______EOF
2025         fi
2028         if test -n "$gint32"; then
2029           cat >>$outfile <<_______EOF
2030 typedef signed $gint32 gint32;
2031 typedef unsigned $gint32 guint32;
2032 #define G_GINT32_MODIFIER $gint32_modifier
2033 #define G_GINT32_FORMAT $gint32_format
2034 #define G_GUINT32_FORMAT $guint32_format
2035 _______EOF
2036         fi
2038         cat >>$outfile <<_______EOF
2039 #define G_HAVE_GINT64 1          /* deprecated, always true */
2041 ${glib_extension}typedef signed $gint64 gint64;
2042 ${glib_extension}typedef unsigned $gint64 guint64;
2044 #define G_GINT64_CONSTANT(val)  $gint64_constant
2045 _______EOF
2047         if test x$gint64_format != x ; then
2048           cat >>$outfile <<_______EOF
2049 #define G_GINT64_MODIFIER $gint64_modifier
2050 #define G_GINT64_FORMAT $gint64_format
2051 #define G_GUINT64_FORMAT $guint64_format
2052 _______EOF
2053         else
2054           cat >>$outfile <<_______EOF
2055 #undef G_GINT64_MODIFIER
2056 #undef G_GINT64_FORMAT
2057 #undef G_GUINT64_FORMAT
2058 _______EOF
2059         fi           
2061         cat >>$outfile <<_______EOF
2063 #define GLIB_SIZEOF_VOID_P $glib_void_p
2064 #define GLIB_SIZEOF_LONG   $glib_long
2065 #define GLIB_SIZEOF_SIZE_T $glib_size_t
2067 _______EOF
2069 echo "typedef signed $glib_size_type_define gssize;" >> $outfile
2070 echo "typedef unsigned $glib_size_type_define gsize;" >> $outfile
2072         if test -z "$glib_unknown_void_p"; then
2073           cat >>$outfile <<_______EOF
2075 #define GPOINTER_TO_INT(p)      ((gint)  ${glib_gpi_cast} (p))
2076 #define GPOINTER_TO_UINT(p)     ((guint) ${glib_gpui_cast} (p))
2078 #define GINT_TO_POINTER(i)      ((gpointer) ${glib_gpi_cast} (i))
2079 #define GUINT_TO_POINTER(u)     ((gpointer) ${glib_gpui_cast} (u))
2080 _______EOF
2081         else
2082           echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
2083         fi
2087         cat >>$outfile <<_______EOF
2088 $glib_atexit
2089 $glib_memmove
2090 $glib_defines
2091 $glib_os
2093 $glib_vacopy
2095 #ifdef  __cplusplus
2096 #define G_HAVE_INLINE   1
2097 #else   /* !__cplusplus */
2098 $glib_inline
2099 #endif  /* !__cplusplus */
2101 _______EOF
2103         if test x$g_have_iso_c_varargs = xyes ; then
2104                 cat >>$outfile <<_______EOF
2105 #ifndef __cplusplus
2106 # define G_HAVE_ISO_VARARGS 1
2107 #endif
2108 _______EOF
2109         fi
2110         if test x$g_have_iso_cxx_varargs = xyes ; then
2111                 cat >>$outfile <<_______EOF
2112 #ifdef __cplusplus
2113 # define G_HAVE_ISO_VARARGS 1
2114 #endif
2115 _______EOF
2116         fi
2117         if test x$g_have_gnuc_varargs = xyes ; then
2118                 cat >>$outfile <<_______EOF
2120 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2121  * is passed ISO vararg support is turned off, and there is no work
2122  * around to turn it on, so we unconditionally turn it off.
2123  */
2124 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2125 #  undef G_HAVE_ISO_VARARGS
2126 #endif
2128 #define G_HAVE_GNUC_VARARGS 1
2129 _______EOF
2130         fi
2132         case x$g_stack_grows in
2133         xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2134         *)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2135         esac
2138         echo >>$outfile
2139         if test x$g_have_eilseq = xno; then
2140                 cat >>$outfile <<_______EOF
2141 #ifndef EILSEQ
2142 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2143  * The correspondence between this and the corresponding definition
2144  * in libiconv is essential.
2145  */
2146 #  define EILSEQ ENOENT
2147 #endif
2148 _______EOF
2150         fi
2152         echo >>$outfile
2153         if test x$g_mutex_has_default = xyes; then
2154                 cat >>$outfile <<_______EOF
2155 $g_enable_threads_def G_THREADS_ENABLED
2156 #define G_THREADS_IMPL_$g_threads_impl_def
2157 typedef struct _GStaticMutex GStaticMutex;
2158 struct _GStaticMutex
2160   struct _GMutex *runtime_mutex;
2161   union {
2162     char   pad[[$g_mutex_sizeof]];
2163     double dummy_double;
2164     void  *dummy_pointer;
2165     long   dummy_long;
2166   } static_mutex;
2168 #define G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
2169 #define g_static_mutex_get_mutex(mutex) \\
2170   (g_thread_use_default_impl ? ((GMutex*) &((mutex)->static_mutex)) : \\
2171    g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
2172 _______EOF
2173         else
2174                 cat >>$outfile <<_______EOF
2175 $g_enable_threads_def G_THREADS_ENABLED
2176 #define G_THREADS_IMPL_$g_threads_impl_def
2177 typedef struct _GMutex* GStaticMutex;
2178 #define G_STATIC_MUTEX_INIT NULL
2179 #define g_static_mutex_get_mutex(mutex) \\
2180   (g_static_mutex_get_mutex_impl_shortcut (mutex))
2181 _______EOF
2182         fi
2184         if test x$g_use_double_checked_locking = xyes; then
2185                 cat >>$outfile <<_______EOF
2186 /* double checked locking can be used on this platform */
2187 #define g_once(once, func, arg) \\
2188   ((once)->status == G_ONCE_STATUS_READY ? (once)->retval : \\
2189    g_once_impl (once, func, arg));
2190 #define g_static_mutex_get_mutex_impl_shortcut(mutex) \\
2191   (*(mutex) ? *(mutex) : g_static_mutex_get_mutex_impl (mutex))
2192 _______EOF
2193         else
2194                 cat >>$outfile <<_______EOF
2195 /* double checked locking is unsafe to use on this platform, do full locking */
2196 #define g_once(once, func, arg) (g_once_impl(once, func, arg))
2197 #define g_static_mutex_get_mutex_impl_shortcut(mutex) \\
2198   (g_static_mutex_get_mutex_impl (mutex))
2199 _______EOF
2200 fi              
2202         cat >>$outfile <<_______EOF
2203 /* This represents a system thread as used by the implementation. An
2204  * alien implementaion, as loaded by g_thread_init can only count on
2205  * "sizeof (gpointer)" bytes to store their info. We however need more
2206  * for some of our native implementations. */
2207 typedef union _GSystemThread GSystemThread;
2208 union _GSystemThread
2210   char   data[[$g_system_thread_sizeof]];
2211   double dummy_double;
2212   void  *dummy_pointer;
2213   long   dummy_long;
2215 _______EOF
2217         echo >>$outfile
2218         g_bit_sizes="16 32 64"
2219         for bits in $g_bit_sizes; do
2220           cat >>$outfile <<_______EOF
2221 #define GINT${bits}_TO_${g_bs_native}(val)      ((gint${bits}) (val))
2222 #define GUINT${bits}_TO_${g_bs_native}(val)     ((guint${bits}) (val))
2223 #define GINT${bits}_TO_${g_bs_alien}(val)       ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
2224 #define GUINT${bits}_TO_${g_bs_alien}(val)      (GUINT${bits}_SWAP_LE_BE (val))
2225 _______EOF
2226         done
2228         cat >>$outfile <<_______EOF
2229 #define GLONG_TO_LE(val)        ((glong) GINT${glongbits}_TO_LE (val))
2230 #define GULONG_TO_LE(val)       ((gulong) GUINT${glongbits}_TO_LE (val))
2231 #define GLONG_TO_BE(val)        ((glong) GINT${glongbits}_TO_BE (val))
2232 #define GULONG_TO_BE(val)       ((gulong) GUINT${glongbits}_TO_BE (val))
2233 #define GINT_TO_LE(val)         ((gint) GINT${gintbits}_TO_LE (val))
2234 #define GUINT_TO_LE(val)        ((guint) GUINT${gintbits}_TO_LE (val))
2235 #define GINT_TO_BE(val)         ((gint) GINT${gintbits}_TO_BE (val))
2236 #define GUINT_TO_BE(val)        ((guint) GUINT${gintbits}_TO_BE (val))
2237 #define G_BYTE_ORDER $g_byte_order
2239 #define GLIB_SYSDEF_POLLIN =$g_pollin
2240 #define GLIB_SYSDEF_POLLOUT =$g_pollout
2241 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
2242 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
2243 #define GLIB_SYSDEF_POLLERR =$g_pollerr
2244 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
2246 #define G_MODULE_SUFFIX "$g_module_suffix"
2248 G_END_DECLS
2250 #endif /* GLIBCONFIG_H */
2251 _______EOF
2254         if cmp -s $outfile glibconfig.h; then
2255           AC_MSG_NOTICE([glibconfig.h is unchanged])
2256           rm -f $outfile
2257         else
2258           mv $outfile glibconfig.h
2259         fi
2262 # Note that if two cases are the same, case goes with the first one.
2263 # Note also that this is inside an AC_OUTPUT_COMMAND.  We do not depend
2264 # on variable expansion in case labels.  Look at the generated config.status
2265 # for a hint.
2267 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
2268   glib_header_alloca_h="$ac_cv_working_alloca_h"
2269 else
2270   glib_header_alloca_h="$ac_cv_header_alloca_h"
2273 case xyes in
2274 x$ac_cv_header_float_h)
2275   glib_float_h=yes
2276   glib_mf=FLT_MIN glib_Mf=FLT_MAX
2277   glib_md=DBL_MIN glib_Md=DBL_MAX
2278   ;;
2279 x$ac_cv_header_values_h)
2280   glib_values_h=yes
2281   glib_mf=MINFLOAT  glib_Mf=MAXFLOAT
2282   glib_md=MINDOUBLE glib_Md=MAXDOUBLE
2283   ;;
2284 esac
2286 case xyes in
2287 x$ac_cv_header_limits_h)
2288   glib_limits_h=yes
2289   glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
2290   glib_mi=INT_MIN  glib_Mi=INT_MAX  glib_Mui=UINT_MAX
2291   glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
2292   ;;
2293 x$ac_cv_header_values_h)
2294   glib_values_h=yes
2295   glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
2296   glib_mi=MININT   glib_Mi=MAXINT   glib_Mui="(((guint)G_MAXINT)*2+1)"
2297   glib_ml=MINLONG  glib_Ml=MAXLONG  glib_Mul="(((gulong)G_MAXLONG)*2+1)"
2298   ;;
2299 esac
2301 if test x$ac_cv_header_sys_poll_h = xyes ; then
2302   glib_sys_poll_h=yes
2305 case 2 in
2306 $ac_cv_sizeof_short)            
2307   gint16=short
2308   gint16_modifier='"h"'
2309   gint16_format='"hi"'
2310   guint16_format='"hu"'
2311   ;;
2312 $ac_cv_sizeof_int)              
2313   gint16=int
2314   gint16_modifier='""'
2315   gint16_format='"i"'
2316   guint16_format='"u"'
2317   ;;
2318 esac
2319 case 4 in
2320 $ac_cv_sizeof_short)            
2321   gint32=short
2322   gint32_modifier='"h"'
2323   gint32_format='"hi"'
2324   guint32_format='"hu"'
2325   ;;
2326 $ac_cv_sizeof_int)              
2327   gint32=int
2328   gint32_modifier='""'
2329   gint32_format='"i"'
2330   guint32_format='"u"'
2331   ;;
2332 $ac_cv_sizeof_long)             
2333   gint32=long
2334   gint32_modifier='"l"'
2335   gint32_format='"li"'
2336   guint32_format='"lu"'
2337   ;;
2338 esac
2339 case 8 in
2340 $ac_cv_sizeof_int)
2341   gint64=int
2342   gint64_modifier='""'
2343   gint64_format='"i"'
2344   guint64_format='"u"'
2345   glib_extension=
2346   gint64_constant='(val)'
2347   ;;
2348 $ac_cv_sizeof_long)
2349   gint64=long
2350   gint64_modifier='"l"'
2351   gint64_format='"li"'
2352   guint64_format='"lu"'
2353   glib_extension=
2354   gint64_constant='(val##L)'
2355   ;;
2356 $ac_cv_sizeof_long_long)
2357   gint64='long long'
2358   if test -n "$glib_cv_long_long_format"; then
2359     gint64_modifier='"'$glib_cv_long_long_format'"'
2360     gint64_format='"'$glib_cv_long_long_format'i"'
2361     guint64_format='"'$glib_cv_long_long_format'u"'
2362   fi
2363   glib_extension='G_GNUC_EXTENSION '
2364   gint64_constant='(G_GNUC_EXTENSION (val##LL))'
2365   ;;
2366 $ac_cv_sizeof___int64)
2367   gint64='__int64'
2368   if test -n "$glib_cv_long_long_format"; then
2369     gint64_modifier='"'$glib_cv_long_long_format'"'
2370     gint64_format='"'$glib_cv_long_long_format'i"'
2371     guint64_format='"'$glib_cv_long_long_format'u"'
2372   fi
2373   glib_extension=
2374   gint64_constant='(val##i64)'
2375   ;;
2376 esac
2377 glib_size_t=$ac_cv_sizeof_size_t
2378 glib_size_type_define=$glib_size_type
2379 glib_void_p=$ac_cv_sizeof_long
2380 glib_long=$ac_cv_sizeof_void_p
2382 gintbits=`expr $ac_cv_sizeof_int \* 8`
2383 glongbits=`expr $ac_cv_sizeof_long \* 8`
2386 case $ac_cv_sizeof_void_p in
2387 $ac_cv_sizeof_int)      glib_gpi_cast=''        glib_gpui_cast=''         ;;
2388 $ac_cv_sizeof_long)     glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
2389 *)                      glib_unknown_void_p=yes ;;
2390 esac
2393 case xyes in
2394 x$ac_cv_func_atexit)
2395   glib_atexit="
2396 #ifdef NeXT /* @#%@! NeXTStep */
2397 # define g_ATEXIT(proc) (!atexit (proc))
2398 #else
2399 # define g_ATEXIT(proc) (atexit (proc))
2400 #endif"
2401   ;;
2402 x$ac_cv_func_on_exit)
2403   glib_atexit="
2404 #define g_ATEXIT(proc)  (on_exit ((void (*)(int, void*))(proc), NULL))"
2405   ;;
2406 esac
2408 case xyes in
2409 x$ac_cv_func_memmove)
2410   glib_memmove='
2411 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
2412   ;;
2413 x$glib_cv_working_bcopy)
2414   glib_memmove="
2415 /* memmove isn't available, but bcopy can copy overlapping memory regions */
2416 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
2417   ;;
2418 *)  
2419   glib_memmove="
2420 /* memmove isn't found and bcopy can't copy overlapping memory regions, 
2421  * so we have to roll our own copy routine. */
2422 void g_memmove (void* dest, const void * src, unsigned long len);"
2423   ;;
2424 esac
2426 glib_defines="
2427 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
2428 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
2429 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
2432 case xyes in
2433 x$glib_cv_va_copy)      glib_vacopy='#define G_VA_COPY  va_copy' ;;
2434 x$glib_cv___va_copy)    glib_vacopy='#define G_VA_COPY  __va_copy' ;;
2435 *)                      glib_vacopy=''
2436 esac
2438 if test x$glib_cv_va_val_copy = xno; then
2439   glib_vacopy="\$glib_vacopy
2440 #define G_VA_COPY_AS_ARRAY 1"
2443 if test x$glib_cv_hasinline = xyes; then
2444     glib_inline='#define G_HAVE_INLINE 1'
2446 if test x$glib_cv_has__inline = xyes; then
2447     glib_inline="\$glib_inline
2448 #define G_HAVE___INLINE 1"
2450 if test x$glib_cv_has__inline__ = xyes; then
2451     glib_inline="\$glib_inline
2452 #define G_HAVE___INLINE__ 1"
2455 g_have_gnuc_varargs=$g_have_gnuc_varargs
2456 g_have_iso_c_varargs=$g_have_iso_c_varargs
2457 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
2459 case xyes in
2460 x$ac_cv_c_bigendian)
2461   g_byte_order=G_BIG_ENDIAN
2462   g_bs_native=BE
2463   g_bs_alien=LE
2464   ;;
2466   g_byte_order=G_LITTLE_ENDIAN
2467   g_bs_native=LE
2468   g_bs_alien=BE
2469   ;;
2470 esac
2472 g_pollin=$glib_cv_value_POLLIN
2473 g_pollout=$glib_cv_value_POLLOUT
2474 g_pollpri=$glib_cv_value_POLLPRI
2475 g_pollhup=$glib_cv_value_POLLHUP
2476 g_pollerr=$glib_cv_value_POLLERR
2477 g_pollnval=$glib_cv_value_POLLNVAL
2479 g_stack_grows=$glib_cv_stack_grows
2481 g_have_eilseq=$have_eilseq
2483 case x$have_threads in
2484 xno)    g_enable_threads_def="#undef";;
2485 *)      g_enable_threads_def="#define";;
2486 esac
2488 g_threads_impl_def=$g_threads_impl
2489 g_use_double_checked_locking=$g_use_double_checked_locking
2491 g_mutex_has_default="$mutex_has_default"
2492 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
2493 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
2494 g_mutex_contents="$glib_cv_byte_contents_gmutex"
2496 g_module_suffix="$glib_gmodule_suffix"
2498 case $host in
2499   *-*-beos*)
2500     glib_os="#define G_OS_BEOS"
2501     ;;
2502   *-*-cygwin*)
2503     glib_os="#define G_OS_UNIX
2504 #define G_PLATFORM_WIN32
2505 #define G_WITH_CYGWIN"
2506     ;;
2507   *-*-mingw*)
2508     glib_os="#define G_OS_WIN32
2509 #define G_PLATFORM_WIN32"
2510     ;;
2511   *)
2512     glib_os="#define G_OS_UNIX"
2513     ;;
2514 esac
2517 AC_CONFIG_FILES([
2518 glib-2.0.pc
2519 glib-2.0-uninstalled.pc
2520 gmodule-2.0.pc
2521 gmodule-2.0-uninstalled.pc
2522 gthread-2.0.pc
2523 gthread-2.0-uninstalled.pc
2524 gobject-2.0.pc
2525 gobject-2.0-uninstalled.pc
2526 glib-zip
2527 glib-gettextize
2528 Makefile
2529 build/Makefile
2530 build/win32/Makefile
2531 build/win32/dirent/Makefile
2532 glib/Makefile
2533 glib/libcharset/Makefile
2534 glib/gnulib/Makefile
2535 gmodule/Makefile
2536 gmodule/gmoduleconf.h
2537 gobject/Makefile
2538 gobject/glib-mkenums
2539 gthread/Makefile
2540 po/Makefile.in
2541 docs/Makefile
2542 docs/reference/Makefile
2543 docs/reference/glib/Makefile
2544 docs/reference/glib/version.xml
2545 docs/reference/gobject/Makefile
2546 docs/reference/gobject/version.xml
2547 tests/Makefile
2548 tests/gobject/Makefile
2549 m4macros/Makefile
2552 AC_CONFIG_COMMANDS([chmod-scripts],
2553 [chmod 0755 glib-zip
2554 chmod 0755 glib-gettextize
2555 chmod 0755 gobject/glib-mkenums])
2557 # we want to invoke this macro solely so that the config.status script
2558 # and automake generated makefiles know about these generated files.
2559 # They are only needed to distcheck the package
2560 if false; then
2561   AC_CONFIG_FILES([
2562     INSTALL
2563     README
2564     config.h.win32
2565     glibconfig.h.win32
2566     glib/makefile.mingw
2567     glib/makefile.msc
2568     glib/glib.rc
2569     gmodule/makefile.mingw
2570     gmodule/makefile.msc
2571     gmodule/gmodule.rc
2572     gobject/makefile.mingw
2573     gobject/makefile.msc
2574     gobject/gobject.rc
2575     gthread/makefile.mingw
2576     gthread/makefile.msc
2577     gthread/gthread.rc
2578     tests/makefile.mingw
2579     tests/makefile.msc
2580   ])
2583 AC_OUTPUT