Include a printf implementation supporting C99 snprintf and SUS
[platform/upstream/glib.git] / configure.in
1 dnl ***********************************
2 dnl *** include special GLib macros ***
3 dnl ***********************************
4 builtin(include, acglib.m4)dnl
5 builtin(include, glib/libcharset/codeset.m4)dnl
6 builtin(include, glib/libcharset/glibc21.m4)dnl
7
8 # require autoconf 2.52
9 AC_PREREQ(2.52)
10
11 # Process this file with autoconf to produce a configure script.
12 AC_INIT(glib/glib.h)
13
14 # Save this value here, since automake will set cflags later
15 cflags_set=${CFLAGS+set}
16
17 # we rewrite this file
18 rm -f glibconfig-sysdefs.h
19
20 GLIB_AC_DIVERT_BEFORE_HELP([
21 #
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.
25 #
26 # Making releases:
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.
33 #
34 GLIB_MAJOR_VERSION=2
35 GLIB_MINOR_VERSION=1
36 GLIB_MICRO_VERSION=3
37 GLIB_INTERFACE_AGE=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
40 ])dnl
41
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)
48
49 # libtool versioning
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`
55 AC_SUBST(LT_RELEASE)
56 AC_SUBST(LT_CURRENT)
57 AC_SUBST(LT_REVISION)
58 AC_SUBST(LT_AGE)
59 AC_SUBST(LT_CURRENT_MINUS_AGE)
60
61 VERSION=$GLIB_VERSION
62 PACKAGE=glib
63
64 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
65
66 # Specify a configuration file
67 AM_CONFIG_HEADER(config.h)
68
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])
79
80 dnl Initialize maintainer mode
81 AM_MAINTAINER_MODE
82
83 AC_CANONICAL_HOST
84
85 AC_MSG_CHECKING(for the BeOS)
86 case $host in
87   *-*-beos*)
88     glib_native_beos="yes"
89     ;;
90   *)
91     glib_native_beos="no"
92     ;;
93 esac
94 AC_MSG_RESULT([$glib_native_beos])
95
96 dnl
97
98 AC_MSG_CHECKING([for Win32])
99 case "$host" in
100   *-*-mingw*)
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
106     GLIB_DEF=glib.def
107     GMODULE_DEF=gmodule.def
108     GOBJECT_DEF=gobject.def
109     GTHREAD_DEF=gthread.def
110     TESTGMODULE_EXP=testgmodule.exp
111     ;;
112   *)
113     glib_native_win32=no
114     G_LIB_WIN32_RESOURCE=
115     G_MODULE_WIN32_RESOURCE=
116     G_OBJECT_WIN32_RESOURCE=
117     G_THREAD_WIN32_RESOURCE=
118     GLIB_DEF=
119     GMODULE_DEF=
120     GOBJECT_DEF=
121     GTHREAD_DEF=
122     TESTGMODULE_EXP=
123     ;;
124 esac
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)
131 AC_SUBST(GLIB_DEF)
132 AC_SUBST(GMODULE_DEF)
133 AC_SUBST(GOBJECT_DEF)
134 AC_SUBST(GTHREAD_DEF)
135 AC_SUBST(TESTGMODULE_EXP)
136
137 if test "$glib_native_win32" = "yes"; then
138   AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
139 fi
140 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
141
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 ;;
147 esac[]dnl
148 ])
149
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]],
155                     , enable_ansi=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)
159
160 if test "x$enable_threads" != "xyes"; then
161   enable_threads=no
162 fi
163
164 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}",
165         [Whether glib was compiled with debugging enabled])
166
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)
171   AC_MSG_RESULT(yes)
172 else
173   AC_MSG_RESULT(no)
174 fi
175
176 AC_MSG_CHECKING(whether to disable memory pools)
177 if test "x$disable_mem_pools" = "xno"; then
178   AC_MSG_RESULT(no)
179 else
180   AC_DEFINE(DISABLE_MEM_POOLS, 1, [Whether to disable memory pools])
181   AC_SUBST(DISABLE_MEM_POOLS)
182   AC_MSG_RESULT(yes)
183 fi
184
185 dnl Checks for programs.
186 AC_PROG_CC
187
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)
190 AC_LANG_SAVE
191 AC_LANG_CPLUSPLUS
192 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
193 AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
194 AC_LANG_RESTORE
195
196 AM_PROG_CC_STDC
197 AC_PROG_INSTALL
198
199 AC_SYS_LARGEFILE
200
201 #
202 # Find pkg-config
203 #
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/])
207 fi
208
209 if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then
210   :
211 else
212   AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.])
213 fi
214
215 if test "x$enable_debug" = "xyes"; then
216   if test x$cflags_set != xset ; then
217       case " $CFLAGS " in
218       *[[\ \    ]]-g[[\ \       ]]*) ;;
219       *) CFLAGS="$CFLAGS -g" ;;
220       esac
221   fi
222         
223   GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
224 else
225   GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
226
227   if test "x$enable_debug" = "xno"; then
228     GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
229   fi
230 fi
231
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
238     msnative_struct=''
239     AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
240     if test -z "$ac_cv_prog_CC"; then
241       our_gcc="$CC"
242     else
243       our_gcc="$ac_cv_prog_CC"
244     fi
245     case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
246       2.)
247         if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
248           msnative_struct='-fnative-struct'
249         fi
250         ;;
251       *)
252         if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
253           msnative_struct='-mms-bitfields'
254         fi
255         ;;
256     esac
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])
260     else
261       CFLAGS="$CFLAGS $msnative_struct"
262       AC_MSG_RESULT([${msnative_struct}])
263     fi
264   fi
265 fi
266
267 AC_CYGWIN
268 AC_EXEEXT
269
270 # define a MAINT-like variable REBUILD which is set if Perl
271 # and awk are found, so autogenerated sources can be rebuilt
272 AC_PROG_AWK
273 AC_CHECK_PROGS(PERL, perl5 perl)
274 # We would like indent, but don't require it.
275 AC_CHECK_PROG(INDENT, indent, indent)
276 REBUILD=\#
277 if test "x$enable_rebuilds" = "xyes" && \
278      test -n "$PERL" && \
279      $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
280      test -n "$AWK" ; then
281   REBUILD=
282 fi
283 AC_SUBST(REBUILD)
284
285 # Need full path to Perl for glib-mkenums
286 #
287 if test "x$PERL" != x ; then
288   AC_PATH_PROG(PERL_PATH, $PERL)
289 else
290   PERL_PATH="/usr/bin/env perl"
291 fi
292 AC_SUBST(PERL_PATH)
293
294 dnl ***********************
295 dnl *** Tests for iconv ***
296 dnl ***********************
297 dnl
298 dnl We do this before the gettext checks, to avoid distortion
299
300 AC_ARG_WITH(libiconv, [  --with-libiconv=[no/gnu/native] use the libiconv library ],,with_libiconv=maybe)
301
302 found_iconv=no
303 case $with_libiconv in
304   maybe)
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)
310     fi
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)
314     fi
315     ;;
316   no)
317     AC_CHECK_FUNC(iconv_open, with_libiconv=no; found_iconv=yes)
318     ;;
319   gnu|yes)
320     AC_CHECK_LIB(iconv, libiconv_open, with_libiconv=gnu; found_iconv=yes)
321     ;;
322   native)
323     AC_CHECK_LIB(iconv, iconv_open, with_libiconv=native; found_iconv=yes)
324     ;;
325 esac
326
327 if test "x$found_iconv" = "xno" ; then
328    AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
329 fi
330
331 dnl
332 dnl gettext support
333 dnl
334
335 ALL_LINGUAS="az be bg ca cs de el es eu 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"
336 AM_GLIB_GNU_GETTEXT
337
338 if test "$gt_cv_func_dgettext_libc" = "yes" || test "$gt_cv_func_dgettext_libintl" = "yes"; then
339   :
340 else
341   AC_MSG_ERROR([
342 *** You must have either have gettext support in your C library, or use the 
343 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
344 ])
345 fi
346
347 LIBS="$LIBS $INTLLIBS"
348
349 GETTEXT_PACKAGE=glib20
350 AC_SUBST(GETTEXT_PACKAGE)
351 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE")
352
353 # AM_GLIB_GNU_GETTEXT above substs $DATADIRNAME
354 # this is the directory where the *.{mo,gmo} files are installed
355 GLIB_LOCALE_DIR="${prefix}/${DATADIRNAME}/locale"
356 AC_DEFINE_UNQUOTED(GLIB_LOCALE_DIR,"$GLIB_LOCALE_DIR")
357
358 AC_CHECK_FUNCS(bind_textdomain_codeset)
359
360 dnl
361 dnl Now we are done with gettext checks, figure out ICONV_LIBS
362 dnl
363
364 if test x$with_libiconv != xno ; then
365   case " $INTLLIBS " in
366   *[[\ \        ]]-liconv[[\ \  ]]*) ;;
367   *) ICONV_LIBS="-liconv" ;;
368   esac
369 fi
370 AC_SUBST(ICONV_LIBS)
371
372 case $with_libiconv in
373   gnu)
374     AC_DEFINE(USE_LIBICONV_GNU, [Using GNU libiconv])
375     ;;
376   native)
377     AC_DEFINE(USE_LIBICONV_NATIVE, [Using a native implementation of iconv in a separate library])
378     ;;
379 esac
380
381 dnl Initialize libtool
382 AM_DISABLE_STATIC
383 AC_LIBTOOL_WIN32_DLL
384 AM_PROG_LIBTOOL
385
386 if test "x$GCC" = "xyes"; then
387   case " $CFLAGS " in
388   *[[\ \        ]]-Wall[[\ \    ]]*) ;;
389   *) CFLAGS="$CFLAGS -Wall" ;;
390   esac
391
392   if test "x$enable_ansi" = "xyes"; then
393     case " $CFLAGS " in
394     *[[\ \      ]]-ansi[[\ \    ]]*) ;;
395     *) CFLAGS="$CFLAGS -ansi" ;;
396     esac
397
398     case " $CFLAGS " in
399     *[[\ \      ]]-pedantic[[\ \        ]]*) ;;
400     *) CFLAGS="$CFLAGS -pedantic" ;;
401     esac
402   fi
403 fi
404
405 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
406 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
407 glib_save_LIBS=$LIBS
408 LIBS="$LIBS -lm"
409 AC_TRY_RUN([#include <math.h>
410              int main (void) { return (log(1) != log(1.)); }],
411      AC_MSG_RESULT(none needed),
412      glib_save_CFLAGS=$CFLAGS
413      CFLAGS="$CFLAGS -std1"
414      AC_TRY_RUN([#include <math.h>
415                  int main (void) { return (log(1) != log(1.)); }],
416          AC_MSG_RESULT(-std1),
417          AC_MSG_RESULT()
418          CFLAGS=$glib_save_CFLAGS
419          AC_MSG_WARN(
420                 [No ANSI prototypes found in library. (-std1 didn't work.)])
421      )
422 )
423 LIBS=$glib_save_LIBS
424
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),
433     AC_MSG_RESULT()
434     CFLAGS=$glib_save_CFLAGS
435     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
436
437 # Checks for header files.
438 AC_HEADER_STDC
439
440 # Checks for library functions.
441 AC_FUNC_VPRINTF
442
443 AC_FUNC_ALLOCA
444
445 AC_CHECK_FUNCS(atexit on_exit)
446
447 AC_CHECK_SIZEOF(char)
448 AC_CHECK_SIZEOF(short)
449 AC_CHECK_SIZEOF(long)
450 AC_CHECK_SIZEOF(int)
451 AC_CHECK_SIZEOF(void *)
452 AC_CHECK_SIZEOF(long long)
453 AC_CHECK_SIZEOF(__int64)
454
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
456   :
457 else
458   AC_MSG_ERROR([
459 *** GLib requires a 64 bit type. You might want to consider
460 *** using the GNU C compiler.
461 ])
462 fi
463
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>  
470                         int main()
471                         {
472                           long long b, a = -0x3AFAFAFAFAFAFAFALL;
473                           char buffer[1000];
474                           sprintf (buffer, "%${format}u", a);
475                           sscanf (buffer, "%${format}u", &b);
476                           exit (b!=a);
477                         }
478                         ],
479                         glib_cv_long_long_format=${format}
480                         break)
481                 done])
482         if test -n "$glib_cv_long_long_format"; then
483           AC_MSG_RESULT(%${glib_cv_long_long_format}u)
484         else
485           AC_MSG_RESULT(none)
486         fi
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)
493 fi
494
495 dnl long doubles were not used, and a portability problem
496 dnl AC_C_LONG_DOUBLE
497 AC_C_CONST
498
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;
514     my_calloc_p = 0;
515     my_malloc_p = 0;
516     my_free_p = 0;
517     my_realloc_p = 0;
518   ],
519     AC_DEFINE(SANE_MALLOC_PROTOS)
520     SANE_MALLOC_PROTOS=yes)
521 fi
522 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
523 CFLAGS=$glib_save_CFLAGS
524
525 dnl
526 dnl check in which direction the stack grows
527 dnl
528 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
529         AC_TRY_RUN([
530         volatile int *a = 0, *b = 0;
531         void foo (void);
532         int main () { volatile int y = 7; a = &y; foo (); return b > a; }
533         void foo (void) { volatile int x = 5; b = &x; }
534         ],
535         glib_cv_stack_grows=no
536         ,
537         glib_cv_stack_grows=yes
538         ,)
539 ])
540
541 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
542 dnl truely know which ones of `inline', `__inline' and `__inline__' are
543 dnl actually supported.
544 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
545         AC_TRY_RUN([
546         __inline int foo () { return 0; }
547         int main () { return foo (); }
548         ],
549         glib_cv_has__inline=yes
550         ,
551         glib_cv_has__inline=no
552         ,)
553 ])
554 case x$glib_cv_has__inline in
555 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
556 esac
557 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
558         AC_TRY_RUN([
559         __inline__ int foo () { return 0; }
560         int main () { return foo (); }
561         ],
562         glib_cv_has__inline__=yes
563         ,
564         glib_cv_has__inline__=no
565         ,)
566 ])
567 case x$glib_cv_has__inline__ in
568 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
569 esac
570 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
571         AC_TRY_RUN([
572         #undef inline
573         inline int foo () { return 0; }
574         int main () { return foo (); }
575         ],
576         glib_cv_hasinline=yes
577         ,
578         glib_cv_hasinline=no
579         ,)
580 ])
581 case x$glib_cv_hasinline in
582 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
583 esac
584
585 # check for flavours of varargs macros
586 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
587 AC_TRY_COMPILE([],[
588 int a(int p1, int p2, int p3);
589 #define call_a(...) a(1,__VA_ARGS__)
590 call_a(2,3);
591 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
592 AC_MSG_RESULT($g_have_iso_c_varargs)
593
594 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
595 if test "$CXX" = ""; then
596 dnl No C++ compiler
597   g_have_iso_cxx_varargs=no
598 else
599   AC_LANG_CPLUSPLUS
600   AC_TRY_COMPILE([],[
601 int a(int p1, int p2, int p3);
602 #define call_a(...) a(1,__VA_ARGS__)
603 call_a(2,3);
604 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
605   AC_LANG_C
606 fi
607 AC_MSG_RESULT($g_have_iso_cxx_varargs)
608
609 AC_MSG_CHECKING(for GNUC varargs macros)
610 AC_TRY_COMPILE([],[
611 int a(int p1, int p2, int p3);
612 #define call_a(params...) a(1,params)
613 call_a(2,3);
614 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
615 AC_MSG_RESULT($g_have_gnuc_varargs)
616
617 # check for bytesex stuff
618 AC_C_BIGENDIAN
619
620 # check for header files
621 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h sys/param.h sys/poll.h sys/select.h])
622 AC_CHECK_HEADERS([sys/time.h sys/times.h unistd.h values.h stdint.h sched.h])
623
624 # Checks for libcharset
625 jm_LANGINFO_CODESET
626 jm_GLIBC21
627 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
628 AC_CHECK_FUNCS(setlocale)
629
630 AC_MSG_CHECKING(whether make is GNU Make)
631 STRIP_BEGIN=
632 STRIP_END=
633 if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
634         STRIP_BEGIN='$(strip $(STRIP_DUMMY)'
635         STRIP_END=')'
636         AC_MSG_RESULT(yes)
637 else
638         AC_MSG_RESULT(no)
639 fi
640 STRIP_DUMMY=
641 AC_SUBST(STRIP_DUMMY)
642 AC_SUBST(STRIP_BEGIN)
643 AC_SUBST(STRIP_END)
644
645 # check additional type sizes
646 size_includes=["
647 #include <stdarg.h>
648 #include <stdio.h>
649 #include <ctype.h>
650 #include <string.h>
651 "]
652 if test "x$ac_cv_header_stdint_h" = "xyes"; then
653   size_includes=["$size_includes
654 #include <stdint.h>
655 "]
656 fi
657 if test "x$ac_cv_header_unistd_h" = "xyes"; then
658   size_includes=["$size_includes
659 #include <unistd.h>
660 "]
661 fi
662 GLIB_SIZEOF([$size_includes], size_t, size_t)
663 GLIB_SIZEOF([$size_includes], ptrdiff_t, ptrdiff_t)
664 GLIB_SIZEOF([$size_includes], intmax_t, intmax_t)
665
666 dnl Try to figure out whether gsize, gssize should be long or int
667 AC_MSG_CHECKING([for the appropriate definition for size_t])
668
669 case $glib_cv_sizeof_size_t in
670   $ac_cv_sizeof_short) 
671       glib_size_type=short
672       ;;
673   $ac_cv_sizeof_int) 
674       glib_size_type=int
675       ;;
676   $ac_cv_sizeof_long) 
677       glib_size_type=long
678       ;;
679   *)  AC_MSG_ERROR([No type matching size_t in size])
680       ;;
681 esac
682
683 dnl If int/long are the same size, we see which one produces
684 dnl warnings when used in the location as size_t. (This matters
685 dnl on AIX with xlc)
686 dnl
687 if test $glib_cv_sizeof_size_t = $ac_cv_sizeof_int &&
688    test $glib_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
689   GLIB_CHECK_COMPILE_WARNINGS([
690 #include <stddef.h> 
691 int main ()
692 {
693   size_t s = 1;
694   unsigned int *size_int = &s;
695   return (int)*size_int;
696 }
697     ],glib_size_type=int,
698       [GLIB_CHECK_COMPILE_WARNINGS([
699 #include <stddef.h> 
700 int main ()
701 {
702    size_t s = 1;
703    unsigned long *size_long = &s;
704    return (int)*size_long;
705 }
706         ],glib_size_type=long)])
707 fi
708
709 AC_MSG_RESULT(unsigned $glib_size_type)
710
711 # Check for some functions
712 AC_CHECK_FUNCS(lstat strerror strsignal memmove mkstemp vsnprintf stpcpy strcasecmp strncasecmp poll getcwd nanosleep vasprintf unsetenv getc_unlocked)
713
714 AC_FUNC_VSNPRINTF_C99
715 AC_FUNC_PRINTF_UNIX98
716
717 #
718 # Check whether to use trio printf
719 #
720
721 AC_ARG_ENABLE(included-printf, [  --enable-included-printf    use included printf [default=auto]], enable_trio="$enableval")
722
723 if test "$enable_trio" != "no" ; then
724   if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
725     enable_trio = yes
726   fi
727   if test "$ac_cv_func_printf_unix98" != "yes" ; then
728     enable_trio = yes
729   fi
730 fi
731
732 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_trio" != "yes")
733 if test "$enable_trio" != "yes" ; then 
734   AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
735   AC_DEFINE(HAVE_VASPRINTF,1)
736   AC_DEFINE(HAVE_C99_VSNPRINTF,1)
737   AC_DEFINE(HAVE_UNIX98_PRINTF,1)
738 else
739   AC_DEFINE(HAVE_GOOD_PRINTF,0)
740 fi
741
742 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
743 # The check is borrowed from the PERL Configure script.
744 if test "$ac_cv_func_memmove" != "yes"; then
745   AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
746     glib_cv_working_bcopy,[AC_TRY_RUN([
747       int main() {
748         char buf[128], abc[128], *b;
749         int len, off, align;
750         bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
751         for (align = 7; align >= 0; align--) {
752           for (len = 36; len; len--) {
753             b = buf+align; bcopy(abc, b, len);
754             for (off = 1; off <= len; off++) {
755               bcopy(b, b+off, len); bcopy(b+off, b, len);
756                 if (bcmp(b, abc, len)) return(1);
757             }
758           }
759         }
760         return(0);
761       }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
762   if test "$glib_cv_working_bcopy" = "yes"; then
763     AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
764   fi
765 fi
766
767 # Check for sys_errlist
768 AC_MSG_CHECKING(for sys_errlist)
769 AC_TRY_LINK(, [
770 extern char *sys_errlist[];
771 extern int sys_nerr;
772 sys_errlist[sys_nerr-1][0] = 0;
773 ], glib_ok=yes, glib_ok=no)
774 AC_MSG_RESULT($glib_ok)
775 if test "$glib_ok" = "no"; then
776     AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
777 fi
778
779 # Check for sys_siglist
780 AC_MSG_CHECKING(for sys_siglist)
781 AC_TRY_LINK(, [
782 extern char *sys_siglist[];
783 exit (sys_siglist[0]);
784 ], glib_ok=yes, glib_ok=no)
785 AC_MSG_RESULT($glib_ok)
786 if test "$glib_ok" = "no"; then
787     AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
788 fi
789
790 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
791 AC_MSG_CHECKING(for sys_siglist declaration)
792 AC_TRY_COMPILE([#include <signal.h>], [
793 strlen (sys_siglist[0]);
794 ], glib_ok=yes, glib_ok=no)
795 AC_MSG_RESULT($glib_ok)
796 if test "$glib_ok" = "no"; then
797     AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
798 fi
799
800 # Check if <sys/select.h> needs to be included for fd_set
801 AC_MSG_CHECKING([for fd_set])
802 AC_TRY_COMPILE([#include <sys/types.h>],
803         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
804 if test "$gtk_ok" = "yes"; then
805     AC_MSG_RESULT([yes, found in sys/types.h])
806 else
807     AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
808     if test "$gtk_ok" = "yes"; then
809         # *** FIXME: give it a different name
810         AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
811         AC_MSG_RESULT([yes, found in sys/select.h])
812     else
813         AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
814         AC_MSG_RESULT(no)
815     fi
816 fi
817
818 dnl *** check for sane realloc() ***
819 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
820         AC_TRY_RUN([
821         #include <stdlib.h>
822         int main() {
823           return realloc (0, sizeof (int)) == 0;
824         }],
825         [glib_cv_sane_realloc=yes],
826         [glib_cv_sane_realloc=no],
827         [])
828 ])
829 if test x$glib_cv_sane_realloc = xyes; then
830   AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
831 fi
832
833 dnl Check for nl_langinfo and CODESET
834
835 AC_MSG_CHECKING([for nl_langinfo (CODESET)])
836 AC_TRY_COMPILE([#include <langinfo.h>],
837         [char *codeset = nl_langinfo (CODESET);],
838    AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
839    have_codeset=yes,
840    have_codeset=no)
841 AC_MSG_RESULT($have_codeset)
842
843
844 dnl ****************************************
845 dnl *** strlcpy/strlcat                  ***
846 dnl ****************************************
847 # Check for strlcpy
848 AC_MSG_CHECKING(for strlcpy/strlcat)
849 AC_TRY_LINK([#include <stdlib.h>
850 #include <string.h>], [
851 char *p = malloc(10);
852 (void) strlcpy(p, "hi", 10);
853 (void) strlcat(p, "bye", 10);
854 ], glib_ok=yes, glib_ok=no)
855 AC_MSG_RESULT($glib_ok)
856 if test "$glib_ok" = "yes"; then
857     AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
858 fi
859   
860
861 dnl **********************
862 dnl *** va_copy checks ***
863 dnl **********************
864 dnl we currently check for all three va_copy possibilities, so we get
865 dnl all results in config.log for bug reports.
866 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
867         AC_TRY_RUN([
868         #include <stdarg.h>
869         void f (int i, ...) {
870         va_list args1, args2;
871         va_start (args1, i);
872         va_copy (args2, args1);
873         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
874           exit (1);
875         va_end (args1); va_end (args2);
876         }
877         int main() {
878           f (0, 42);
879           return 0;
880         }],
881         [glib_cv_va_copy=yes],
882         [glib_cv_va_copy=no],
883         [])
884 ])
885 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
886         AC_TRY_RUN([
887         #include <stdarg.h>
888         void f (int i, ...) {
889         va_list args1, args2;
890         va_start (args1, i);
891         __va_copy (args2, args1);
892         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
893           exit (1);
894         va_end (args1); va_end (args2);
895         }
896         int main() {
897           f (0, 42);
898           return 0;
899         }],
900         [glib_cv___va_copy=yes],
901         [glib_cv___va_copy=no],
902         [])
903 ])
904
905 if test "x$glib_cv_va_copy" = "xyes"; then
906   g_va_copy_func=va_copy
907 else if test "x$glib_cv___va_copy" = "xyes"; then
908   g_va_copy_func=__va_copy
909 fi
910 fi
911
912 if test -n "$g_va_copy_func"; then
913   AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
914 fi
915
916 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
917         AC_TRY_RUN([
918         #include <stdarg.h>
919         void f (int i, ...) {
920         va_list args1, args2;
921         va_start (args1, i);
922         args2 = args1;
923         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
924           exit (1);
925         va_end (args1); va_end (args2);
926         }
927         int main() {
928           f (0, 42);
929           return 0;
930         }],
931         [glib_cv_va_val_copy=yes],
932         [glib_cv_va_val_copy=no],
933         [])
934 ])
935
936 if test "x$glib_cv_va_val_copy" = "xno"; then
937   AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
938 fi
939
940 dnl ***********************
941 dnl *** g_module checks ***
942 dnl ***********************
943 G_MODULE_LIBS=
944 G_MODULE_LIBS_EXTRA=
945 G_MODULE_PLUGIN_LIBS=
946 if test x"$glib_native_win32" = xyes; then
947   dnl No use for this on Win32
948   G_MODULE_LDFLAGS=
949 else
950   G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
951 fi
952 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
953 G_MODULE_NEED_USCORE=0
954 G_MODULE_BROKEN_RTLD_GLOBAL=0
955 G_MODULE_HAVE_DLERROR=0
956 dnl *** force native WIN32 shared lib loader 
957 if test -z "$G_MODULE_IMPL"; then
958   case "$host" in
959   *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
960   esac
961 fi
962 dnl *** dlopen() and dlsym() in system libraries
963 if test -z "$G_MODULE_IMPL"; then
964         AC_CHECK_FUNC(dlopen,
965                       [AC_CHECK_FUNC(dlsym,
966                                      [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
967                       [])
968 fi
969 dnl *** load_image (BeOS)
970 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
971   AC_CHECK_LIB(root, load_image,
972       [G_MODULE_LIBS="-lbe -lroot -lglib"
973       G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
974       G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
975       G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
976       [])
977 fi   
978 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
979 if test -z "$G_MODULE_IMPL"; then
980         AC_CHECK_FUNC(NSLinkModule,
981                       [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
982                        G_MODULE_NEED_USCORE=1],
983                       [])
984 fi
985 dnl *** dlopen() and dlsym() in libdl
986 if test -z "$G_MODULE_IMPL"; then
987         AC_CHECK_LIB(dl, dlopen,
988                      [AC_CHECK_LIB(dl, dlsym,
989                                    [G_MODULE_LIBS=-ldl
990                                    G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
991                      [])
992 fi
993 dnl *** shl_load() in libdld (HP-UX)
994 if test -z "$G_MODULE_IMPL"; then
995         AC_CHECK_LIB(dld, shl_load,
996                 [G_MODULE_LIBS=-ldld
997                 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
998                 [])
999 fi
1000 dnl *** additional checks for G_MODULE_IMPL_DL
1001 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1002         LIBS_orig="$LIBS"
1003         LDFLAGS_orig="$LDFLAGS"
1004         LIBS="$LIBS $G_MODULE_LIBS"
1005         LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1006 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1007         AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1008                 glib_cv_rtldglobal_broken,[
1009                 AC_TRY_RUN([
1010                 #include <dlfcn.h>
1011                 #ifndef RTLD_GLOBAL
1012                 #define RTLD_GLOBAL 0
1013                 #endif
1014                 #ifndef RTLD_LAZY
1015                 #define RTLD_LAZY 0
1016                 #endif
1017                 int pthread_create;
1018                 int main () {
1019                 void *handle, *global, *local;
1020                 global = &pthread_create;
1021                 handle = dlopen ("libpthread.so", RTLD_GLOBAL | RTLD_LAZY);
1022                 if (!handle) return 0;
1023                 local = dlsym (handle, "pthread_create");
1024                 return global == local;
1025                 }],
1026                         [glib_cv_rtldglobal_broken=no],
1027                         [glib_cv_rtldglobal_broken=yes],
1028                         [])
1029                 rm -f plugin.c plugin.o plugin.lo
1030         ])
1031         if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1032                 G_MODULE_BROKEN_RTLD_GLOBAL=1
1033         else
1034                 G_MODULE_BROKEN_RTLD_GLOBAL=0
1035         fi
1036 dnl *** check whether we need preceeding underscores
1037         AC_CACHE_CHECK([for preceeding underscore in symbols],
1038                 glib_cv_uscore,[
1039                 AC_TRY_RUN([
1040                 #include <dlfcn.h>
1041                 int glib_underscore_test (void) { return 42; }
1042                 int main() {
1043                   void *f1 = (void*)0, *f2 = (void*)0, *handle;
1044                   handle = dlopen ((void*)0, 0);
1045                   if (handle) {
1046                     f1 = dlsym (handle, "glib_underscore_test");
1047                     f2 = dlsym (handle, "_glib_underscore_test");
1048                   } return (!f2 || f1);
1049                 }],
1050                         [glib_cv_uscore=yes],
1051                         [glib_cv_uscore=no],
1052                         [])
1053                 rm -f plugin.c plugin.$ac_objext plugin.lo
1054         ])
1055         if test "x$glib_cv_uscore" = "xyes"; then
1056                 G_MODULE_NEED_USCORE=1
1057         else
1058                 G_MODULE_NEED_USCORE=0
1059         fi
1060
1061         LDFLAGS="$LDFLAGS_orig"
1062 dnl *** check for having dlerror()
1063         AC_CHECK_FUNC(dlerror,
1064                 [G_MODULE_HAVE_DLERROR=1],
1065                 [G_MODULE_HAVE_DLERROR=0])
1066         LIBS="$LIBS_orig"
1067 fi
1068 dnl *** done, have we got an implementation?
1069 if test -z "$G_MODULE_IMPL"; then
1070         G_MODULE_IMPL=0
1071         G_MODULE_SUPPORTED=false
1072 else
1073         G_MODULE_SUPPORTED=true
1074 fi
1075
1076 AC_MSG_CHECKING(for the suffix of shared libraries)
1077 case "$host_os" in
1078   hpux9* | hpux10* | hpux11*)  # taken from ltconfig
1079     glib_gmodule_suffix='sl'
1080     ;;
1081   cygwin* | mingw*)
1082     glib_gmodule_suffix='dll'
1083     ;;
1084   *)
1085     glib_gmodule_suffix='so'    
1086     ;;
1087 esac
1088 AC_MSG_RESULT(.$glib_gmodule_suffix)
1089  
1090 AC_SUBST(G_MODULE_SUPPORTED)
1091 AC_SUBST(G_MODULE_IMPL)
1092 AC_SUBST(G_MODULE_LIBS)
1093 AC_SUBST(G_MODULE_LIBS_EXTRA)
1094 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1095 AC_SUBST(G_MODULE_LDFLAGS)
1096 AC_SUBST(G_MODULE_HAVE_DLERROR)
1097 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1098 AC_SUBST(G_MODULE_NEED_USCORE)
1099 AC_SUBST(GLIB_DEBUG_FLAGS)
1100
1101 dnl **********************
1102 dnl *** g_spawn checks ***
1103 dnl **********************
1104
1105 AC_MSG_CHECKING(for gspawn implementation)
1106 case "$host" in
1107   *-*-mingw*)
1108     GSPAWN=gspawn-win32.lo
1109     ;;
1110   *)
1111     GSPAWN=gspawn.lo
1112     ;;    
1113 esac
1114 AC_MSG_RESULT($GSPAWN)
1115 AC_SUBST(GSPAWN)
1116
1117 dnl *************************
1118 dnl *** GIOChannel checks ***
1119 dnl *************************
1120
1121 AC_MSG_CHECKING(for GIOChannel implementation)
1122 case "$host" in
1123   *-*-mingw*)
1124     GIO=giowin32.lo
1125     ;;
1126   *)
1127     GIO=giounix.lo
1128     ;;    
1129 esac
1130 AC_MSG_RESULT($GIO)
1131 AC_SUBST(GIO)
1132
1133 dnl ****************************************
1134 dnl *** platform dependent source checks ***
1135 dnl ****************************************
1136
1137 AC_MSG_CHECKING(for platform-dependent source)
1138 case "$host" in
1139   *-*-cygwin*|*-*-mingw*)
1140     PLATFORMDEP=gwin32.lo
1141     ;;
1142   *)
1143     PLATFORMDEP=
1144     ;;    
1145 esac
1146 AC_MSG_RESULT($PLATFORMDEP)
1147 AC_SUBST(PLATFORMDEP)
1148
1149 AC_MSG_CHECKING([whether to compile timeloop])
1150 case "$host" in
1151   *-*-cygwin*|*-*-mingw*)
1152     enable_timeloop=no
1153     ;;
1154   *)
1155     enable_timeloop=yes
1156     ;;    
1157 esac
1158 AC_MSG_RESULT($enable_timeloop)
1159 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1160
1161 AC_MSG_CHECKING([if building for some Win32 platform])
1162 case "$host" in
1163   *-*-mingw*|*-*-cygwin*)
1164     platform_win32=yes
1165     ;;
1166   *)
1167     platform_win32=no
1168     ;;
1169 esac
1170 AC_MSG_RESULT($platform_win32)
1171 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1172
1173 dnl ***********************
1174 dnl *** g_thread checks ***
1175 dnl ***********************
1176
1177 AC_ARG_WITH(threads, [  --with-threads=[none/posix/dce/solaris/win32] specify a thread implementation to use],
1178         if test "x$with_threads" = x; then
1179                 want_threads=yes
1180         else
1181                 want_threads=$with_threads
1182         fi,
1183         want_threads=yes)
1184 if test "x$enable_threads" = "xno"; then
1185         want_threads=no
1186 fi
1187
1188 dnl error and warning message
1189 dnl *************************
1190
1191 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1192                 computer. GLib will not have a default thread implementation."
1193
1194 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1195                 platform (normally it's "_REENTRANT"). I'll not use any flag on
1196                 compilation now, but then your programs might not work.
1197                 Please provide information on how it is done on your system."
1198
1199 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1200                 "
1201
1202 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1203                 provide information on your thread implementation.
1204                 You can also run 'configure --disable-threads' 
1205                 to compile without thread support."
1206
1207 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1208                 functions will not be MT-safe during their first call because
1209                 there is no working 'getpwuid_r' on your system."
1210
1211 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1212                 because there is no 'localtime_r' on your system."
1213
1214 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1215                 crude surrogate will be used. If you happen to know a 
1216                 yield function for your system, please inform the GLib 
1217                 developers."
1218
1219 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for 
1220                 threads on your system. Thus threads can only have the default 
1221                 priority. If you happen to know these main/max
1222                 priorities, please inform the GLib developers."
1223
1224 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1225                 linking threaded applications. As GLib cannot do that 
1226                 automatically, you will get an linkg error everytime you are 
1227                 not using the right compiler. In that case you have to relink 
1228                 with the right compiler. Ususally just '_r' is appended 
1229                 to the compiler name."
1230
1231 dnl determination of thread implementation
1232 dnl ***************************************
1233
1234 # have_threads=no   means no thread support
1235 # have_threads=none means no default thread implementation
1236
1237 have_threads=no
1238 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
1239         case $host in
1240                 *-*-solaris*)
1241                 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
1242                 ;;
1243         esac
1244 fi
1245 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1246                                 || test "x$want_threads" = xdce; then
1247         # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1248         # -U_OSF_SOURCE is for Digital UNIX 4.0d
1249         GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1250         glib_save_CPPFLAGS="$CPPFLAGS"
1251         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1252         if test "x$have_threads" = xno; then
1253                 AC_TRY_COMPILE([#include <pthread.h>],
1254                         [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1255                         have_threads=posix)
1256         fi
1257         if test "x$have_threads" = xno; then
1258                 AC_TRY_COMPILE([#include <pthread.h>],
1259                         [pthread_mutex_t m; 
1260                          pthread_mutex_init (&m, pthread_mutexattr_default);],
1261                         have_threads=dce)
1262         fi
1263         CPPFLAGS="$glib_save_CPPFLAGS"
1264 fi
1265 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1266         case $host in
1267                 *-*-mingw*)
1268                 have_threads=win32
1269                 ;;
1270         esac
1271 fi
1272 if test "x$want_threads" = xnone; then
1273         have_threads=none
1274 fi
1275
1276 AC_MSG_CHECKING(for thread implementation)
1277
1278 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1279         AC_MSG_RESULT(none available)
1280         AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1281 else
1282         AC_MSG_RESULT($have_threads)
1283 fi
1284
1285
1286 dnl determination of G_THREAD_CFLAGS
1287 dnl ********************************
1288
1289 G_THREAD_LIBS=
1290 G_THREAD_LIBS_EXTRA=
1291 G_THREAD_CFLAGS=
1292
1293 if test x"$have_threads" != xno; then
1294
1295   if test x"$have_threads" = xposix; then
1296     # First we test for posix, whether -pthread or -pthreads do the trick as 
1297     # both CPPFLAG and LIBS. 
1298     # One of them does for most gcc versions and some other platforms/compilers
1299     # too and could be considered as the canonical way to go. 
1300     for flag in pthread pthreads; do
1301       glib_save_CFLAGS="$CFLAGS"
1302       CFLAGS="$CFLAGS -$flag"
1303       AC_TRY_RUN([#include <pthread.h> 
1304                   int check_me = 0;
1305                   void* func(void* data) {return check_me = 42;}
1306                   main()
1307                   { pthread_t t; 
1308                     void *ret;
1309                     pthread_create (&t, 0, func, 0);
1310                     pthread_join (t, &ret);
1311                     exit (check_me != 42 || ret != 42);
1312                    }],
1313                    [G_THREAD_CFLAGS=-$flag
1314                     G_THREAD_LIBS=-$flag])
1315       CFLAGS="$glib_save_CFLAGS"
1316     done
1317   fi
1318
1319   if test x"$G_THREAD_CFLAGS" = x; then
1320
1321     # The canonical -pthread[s] does not work. Try something different.
1322
1323     case $host in
1324         *-aix*)
1325                 if test x"$GCC" = xyes; then
1326                         # GCC 3.0 and above needs -pthread. 
1327                         # Should be coverd by the case above.
1328                         # GCC 2.x and below needs -mthreads
1329                         G_THREAD_CFLAGS="-mthreads"             
1330                         G_THREAD_LIBS=$G_THREAD_CFLAGS
1331                 else 
1332                         # We are probably using the aix compiler. Normaly a 
1333                         # program would have to be compiled with the _r variant
1334                         # of the corresponding compiler, but we as GLib cannot 
1335                         # do that: but the good news is that for compiling the
1336                         # only difference is the added -D_THREAD_SAFE compile 
1337                         # option. This is according to the "C for AIX User's 
1338                         # Guide".
1339                         G_THREAD_CFLAGS="-D_THREAD_SAFE"
1340                 fi
1341                 ;;
1342         *-dg-dgux*)  # DG/UX
1343                 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1344                 ;;
1345         *-osf*)
1346                 # So we are using dce threads. posix threads are already 
1347                 # catched above.
1348                 G_THREAD_CFLAGS="-threads"
1349                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1350                 ;;
1351         *-solaris*)
1352                 if test x"$GCC" = xyes; then
1353                    # We are using solaris threads. posix threads are 
1354                    # already catched above.
1355                         G_THREAD_CFLAGS="-threads"
1356                 else
1357                         G_THREAD_CFLAGS="-mt"
1358                 fi
1359                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1360                 ;;
1361         *-sysv5uw7*) # UnixWare 7 
1362                 # We are not using gcc with -pthread. Catched above.
1363                 G_THREAD_CFLAGS="-Kthread"
1364                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1365                 ;;
1366         *)
1367                 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1368                 ;;
1369     esac
1370  
1371   fi
1372
1373     # if we are not finding the localtime_r function, then we probably are
1374     # not using the proper multithread flag
1375
1376     glib_save_CPPFLAGS="$CPPFLAGS"
1377     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1378
1379     # First we test, whether localtime_r is declared in time.h
1380     # directly. Then we test whether a macro localtime_r exists, in
1381     # which case localtime_r in the test program is replaced and thus
1382     # if we still find localtime_r in the output, it is not defined as 
1383     # a macro.
1384
1385     AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
1386       [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h> 
1387                                                            localtime_r(a,b)],
1388                    AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
1389
1390     CPPFLAGS="$glib_save_CPPFLAGS"
1391
1392     AC_MSG_CHECKING(thread related cflags)
1393     AC_MSG_RESULT($G_THREAD_CFLAGS)
1394     CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
1395 fi
1396
1397 dnl determination of G_THREAD_LIBS
1398 dnl ******************************
1399
1400 mutex_has_default=no
1401 case $have_threads in
1402         posix|dce)
1403           if test x"$G_THREAD_LIBS" = x; then
1404             case $host in
1405               *-aix*)
1406                 # We are not using gcc (would have set G_THREAD_LIBS) and thus 
1407                 # probably using the aix compiler.
1408                 AC_MSG_WARN($AIX_COMPILE_INFO)
1409                 ;;
1410               *)
1411                 glib_save_CPPFLAGS="$CPPFLAGS"
1412                 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1413                 G_THREAD_LIBS=error
1414                 glib_save_LIBS="$LIBS"
1415                 for thread_lib in "" pthread pthread32 pthreads thread dce; do
1416                         if test x"$thread_lib" = x; then
1417                                 add_thread_lib=""
1418                                 IN=""
1419                         else
1420                                 add_thread_lib="-l$thread_lib"
1421                                 IN=" in -l$thread_lib"
1422                         fi
1423                         if test x"$have_threads" = xposix; then
1424                                 defattr=0
1425                         else
1426                                 defattr=pthread_attr_default
1427                         fi
1428                         
1429                         LIBS="$glib_save_LIBS $add_thread_lib"
1430                         
1431                         AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
1432                         AC_TRY_RUN([#include <pthread.h> 
1433                                 int check_me = 0;
1434                                 void* func(void* data) {check_me = 42;}
1435                                 main()
1436                                 { pthread_t t; 
1437                                   void *ret;
1438                                   pthread_create (&t, $defattr, func, 0);
1439                                   pthread_join (t, &ret);
1440                                   exit (check_me != 42);
1441                                 }],
1442                                 [AC_MSG_RESULT(yes)
1443                                 G_THREAD_LIBS="$add_thread_lib"
1444                                 break],
1445                                 [AC_MSG_RESULT(no)])
1446                 done
1447                 if test "x$G_THREAD_LIBS" = xerror; then
1448                   AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1449                 fi 
1450                 LIBS="$glib_save_LIBS"
1451                 ;;
1452             esac
1453           fi
1454
1455           glib_save_LIBS="$LIBS"
1456           for thread_lib in "" rt rte; do
1457             if test x"$thread_lib" = x; then
1458               add_thread_lib=""
1459               IN=""
1460             else
1461               add_thread_lib="-l$thread_lib"
1462               IN=" in -l$thread_lib"
1463             fi
1464             LIBS="$glib_save_LIBS $add_thread_lib"
1465         
1466             AC_MSG_CHECKING(for sched_get_priority_min$IN)
1467             AC_TRY_RUN([#include <sched.h>
1468                         #include <errno.h>
1469                         int main() {
1470                           errno = 0;
1471                           return sched_get_priority_min(SCHED_OTHER)==-1
1472                                 && errno != 0;}],
1473                         [AC_MSG_RESULT(yes)
1474                          G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
1475                          posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
1476                          posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
1477                          break],
1478                         [AC_MSG_RESULT(no)])
1479           done
1480           LIBS="$glib_save_LIBS"
1481           mutex_has_default=yes
1482           mutex_default_type='pthread_mutex_t'
1483           mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
1484           mutex_header_file='pthread.h'
1485           if test "x$have_threads" = "xposix"; then
1486             g_threads_impl="POSIX"
1487           else
1488             g_threads_impl="DCE"
1489             have_threads="posix"
1490           fi
1491           AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
1492           CPPFLAGS="$glib_save_CPPFLAGS"
1493           ;;
1494         solaris)
1495            mutex_has_default=yes
1496            mutex_default_type='mutex_t'
1497            mutex_default_init="DEFAULTMUTEX"
1498            mutex_header_file='thread.h'
1499            g_threads_impl="SOLARIS"
1500            ;;
1501         win32)
1502            g_threads_impl="WIN32"
1503            ;;
1504         none|no)
1505            g_threads_impl="NONE"
1506            ;;
1507         *)
1508            g_threads_impl="NONE"
1509            G_THREAD_LIBS=error
1510            ;;
1511 esac
1512
1513 if test "x$G_THREAD_LIBS" = xerror; then
1514         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1515 fi
1516
1517 case $host in
1518   *-*-beos*)
1519     G_THREAD_LIBS="-lbe -lroot -lglib "
1520     G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1521     ;;
1522   *)
1523     ;;
1524 esac
1525
1526 AC_MSG_CHECKING(thread related libraries)
1527 AC_MSG_RESULT($G_THREAD_LIBS)
1528
1529 dnl check for mt safe function variants and some posix functions
1530 dnl ************************************************************
1531
1532 if test x"$have_threads" != xno; then
1533         glib_save_LIBS="$LIBS"
1534         # we are not doing the following for now, as this might require glib 
1535         # to always be linked with the thread libs on some platforms. 
1536         # LIBS="$LIBS $G_THREAD_LIBS"
1537         AC_CHECK_FUNCS(localtime_r)
1538         if test "$ac_cv_header_pwd_h" = "yes"; then
1539                 AC_CACHE_CHECK([for posix getpwuid_r],
1540                         ac_cv_func_posix_getpwuid_r,
1541                         [AC_TRY_RUN([#include <errno.h>
1542                                 #include <pwd.h>
1543                                 int main () { char buffer[10000];
1544                                 struct passwd pwd, *pwptr = &pwd;
1545                                 int error;
1546                                 errno = 0;
1547                                 error = getpwuid_r (0, &pwd, buffer, 
1548                                         sizeof (buffer), &pwptr);
1549                                 return (error < 0 && errno == ENOSYS) 
1550                                         || error == ENOSYS; }],
1551                                 [ac_cv_func_posix_getpwuid_r=yes],
1552                                 [ac_cv_func_posix_getpwuid_r=no])])
1553                 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
1554                         AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
1555                                 [Have POSIX function getpwuid_r])
1556                 else
1557                         AC_CACHE_CHECK([for nonposix getpwuid_r],
1558                                 ac_cv_func_nonposix_getpwuid_r,
1559                                 [AC_TRY_LINK([#include <pwd.h>],
1560                                         [char buffer[10000];
1561                                         struct passwd pwd;
1562                                         getpwuid_r (0, &pwd, buffer, 
1563                                                         sizeof (buffer));],
1564                                         [ac_cv_func_nonposix_getpwuid_r=yes],
1565                                         [ac_cv_func_nonposix_getpwuid_r=no])])
1566                         if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
1567                                 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
1568                                         [Have non-POSIX function getpwuid_r])
1569                         fi
1570                 fi
1571         fi
1572         LIBS="$LIBS $G_THREAD_LIBS"
1573         if test x"$have_threads" = xposix; then
1574                 glib_save_CPPFLAGS="$CPPFLAGS"
1575                 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1576                 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
1577                 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
1578                 # This is not AC_CHECK_FUNC to also work with function
1579                 # name mangling in header files.
1580                 AC_MSG_CHECKING(for pthread_attr_setstacksize)
1581                 AC_TRY_LINK([#include <pthread.h>],
1582                         [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
1583                         [AC_MSG_RESULT(yes)
1584                         AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
1585                                   [Have function pthread_attr_setstacksize])],
1586                         [AC_MSG_RESULT(no)])
1587                 AC_MSG_CHECKING(for minimal/maximal thread priority)
1588                 if test x"$posix_priority_min" = x; then
1589                         AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
1590                                 PX_PRIO_MIN],,[
1591                                 posix_priority_min=PX_PRIO_MIN
1592                                 posix_priority_max=PX_PRIO_MAX])
1593                 fi
1594                 if test x"$posix_priority_min" = x; then
1595                         # AIX
1596                         AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
1597                                 PTHREAD_PRIO_MIN],,[
1598                                 posix_priority_min=PTHREAD_PRIO_MIN
1599                                 posix_priority_max=PTHREAD_PRIO_MIN])
1600                 fi
1601                 if test x"$posix_priority_min" = x; then
1602                         AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
1603                                 PRI_OTHER_MIN],,[
1604                                 posix_priority_min=PRI_OTHER_MIN        
1605                                 posix_priority_max=PRI_OTHER_MAX])
1606                 fi
1607                 if test x"$posix_priority_min" = x; then
1608                         AC_MSG_RESULT(none found)
1609                         AC_MSG_WARN($POSIX_NO_PRIORITIES)
1610                         posix_priority_min=-1
1611                         posix_priority_max=-1
1612                 else
1613                         AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
1614                         AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
1615                         AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])
1616                 fi
1617                 posix_yield_func=none
1618                 AC_MSG_CHECKING(for posix yield function)
1619                 for yield_func in sched_yield pthread_yield_np pthread_yield \
1620                                                         thr_yield; do
1621                         AC_TRY_LINK([#include <pthread.h>],
1622                                 [$yield_func()],
1623                                 [posix_yield_func="$yield_func"
1624                                 break])
1625                 done            
1626                 if test x"$posix_yield_func" = xnone; then
1627                         AC_MSG_RESULT(none found)
1628                         AC_MSG_WARN($POSIX_NO_YIELD)
1629                         posix_yield_func="g_usleep(1000)"
1630                 else
1631                         AC_MSG_RESULT($posix_yield_func)
1632                         posix_yield_func="$posix_yield_func()"
1633                 fi
1634                 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
1635                 CPPFLAGS="$glib_save_CPPFLAGS"
1636
1637                 AC_MSG_CHECKING(whether to use the PID niceness surrogate for thread priorities)
1638                 AC_TRY_RUN([#include <pthread.h> 
1639                         #include <sys/types.h>
1640                         #include <unistd.h>
1641                         pid_t other_pid = 0;
1642
1643                         void* func(void* data) {other_pid = getpid();}
1644                         main()
1645                         { pthread_t t; 
1646                           void *ret;
1647                           pthread_create (&t, $defattr, func, NULL);
1648                           pthread_join (t, &ret);
1649                           exit (getpid()==other_pid || 
1650                                 $posix_priority_min != $posix_priority_max);
1651                         }],
1652                         [AC_MSG_RESULT(yes)
1653                           AC_DEFINE(G_THREAD_USE_PID_SURROGATE, 1, [whether to use the PID niceness surrogate for thread priorities])
1654                         ],
1655                         [AC_MSG_RESULT(no)])
1656         elif test x"$have_threads" = xwin32; then
1657                 # It's a pointer to a private struct
1658                 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
1659         elif test x"$have_threads" = xsolaris; then 
1660                 GLIB_SIZEOF([#include <thread.h>], thread_t, system_thread)
1661         fi
1662
1663         LIBS="$glib_save_LIBS"
1664
1665         # now spit out all the warnings.
1666         if test "$ac_cv_func_posix_getpwuid_r" != "yes" && 
1667            test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
1668                 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
1669         fi
1670         if test "$ac_cv_func_localtime_r" != "yes"; then
1671                 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
1672         fi
1673 fi      
1674
1675 if test x"$glib_cv_sizeof_system_thread" = x; then
1676    # use a pointer as a fallback.
1677    GLIB_SIZEOF(,void *, system_thread)
1678 fi
1679
1680 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
1681                    [Source file containing theread implementation])
1682 AC_SUBST(G_THREAD_CFLAGS)
1683 AC_SUBST(G_THREAD_LIBS)
1684 AC_SUBST(G_THREAD_LIBS_EXTRA)
1685
1686 dnl **********************************************
1687 dnl *** GDefaultMutex setup and initialization ***
1688 dnl **********************************************
1689 dnl
1690 dnl if mutex_has_default = yes, we also got
1691 dnl mutex_default_type, mutex_default_init and mutex_header_file
1692 GLIB_IF_VAR_EQ(mutex_has_default, yes,
1693         glib_save_CPPFLAGS="$CPPFLAGS"
1694         glib_save_LIBS="$LIBS"
1695         LIBS="$LIBS $G_THREAD_LIBS"
1696         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1697         GLIB_SIZEOF([#include <$mutex_header_file>],
1698                     $mutex_default_type,
1699                     gmutex,
1700                     )
1701         GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
1702                            $mutex_default_type,
1703                            gmutex,
1704                            $glib_cv_sizeof_gmutex,
1705                            $mutex_default_init)
1706         if test x"$glib_cv_byte_contents_gmutex" = xno; then
1707                 mutex_has_default=no
1708         fi
1709         CPPFLAGS="$glib_save_CPPFLAGS"
1710         LIBS="$glib_save_LIBS"
1711         ,
1712 )
1713
1714
1715 dnl ****************************************
1716 dnl *** GLib POLL* compatibility defines ***
1717 dnl ****************************************
1718 GLIB_SYSDEFS(
1719 [#include <sys/types.h>
1720 #include <sys/poll.h>],
1721         POLLIN:1 POLLOUT:4 POLLPRI:2 POLLERR:8 POLLHUP:16 POLLNVAL:32,
1722         glibconfig-sysdefs.h,
1723         =)
1724
1725 dnl **********************
1726 dnl *** Win32 API libs ***
1727 dnl **********************
1728
1729 case $host in
1730   *-*-cygwin*)
1731         G_LIBS_EXTRA="-luser32 -lkernel32"
1732     ;;
1733   *-*-mingw*)
1734         G_LIBS_EXTRA="-lwsock32"
1735     ;;
1736   *)
1737         G_LIBS_EXTRA=""
1738     ;;
1739 esac
1740 AC_SUBST(G_LIBS_EXTRA)
1741
1742 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
1743 dnl since we need it for g_iconv()
1744
1745 AC_MSG_CHECKING([for EILSEQ])
1746 AC_TRY_COMPILE([
1747 #include <errno.h>
1748 ],
1749 [
1750 int error = EILSEQ;
1751 ], have_eilseq=yes, have_eilseq=no);
1752 AC_MSG_RESULT($have_eilseq)
1753
1754 dnl ******************************************************************
1755 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
1756 dnl ******************************************************************
1757
1758 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
1759
1760 if test $cross_compiling = yes; then
1761   AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
1762   if test x$GLIB_GENMARSHAL = xno; then
1763     AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
1764   fi
1765 fi
1766
1767 dnl **************************
1768 dnl *** Checks for gtk-doc ***
1769 dnl **************************
1770
1771 AC_ARG_WITH(html-dir, [  --with-html-dir=PATH    path to installed docs])
1772
1773 if test "x$with_html_dir" = "x" ; then
1774   HTML_DIR='${datadir}/gtk-doc/html'
1775 else
1776   HTML_DIR=$with_html_dir
1777 fi
1778
1779 AC_SUBST(HTML_DIR)
1780
1781 AC_CHECK_PROG(GTKDOC, gtkdoc-mkdb, true, false)
1782
1783 gtk_doc_min_version=0.6
1784 if $GTKDOC ; then 
1785     gtk_doc_version=`gtkdoc-mkdb --version`
1786     AC_MSG_CHECKING([gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version])
1787     if perl <<EOF ; then
1788       exit (("$gtk_doc_version" =~ /^[[0-9]]+\.[[0-9]]+$/) &&
1789             ("$gtk_doc_version" >= "$gtk_doc_min_version") ? 0 : 1);
1790 EOF
1791       AC_MSG_RESULT(yes)
1792    else
1793       AC_MSG_RESULT(no)
1794       GTKDOC=false
1795    fi
1796 fi
1797
1798 AM_CONDITIONAL(HAVE_GTK_DOC, $GTKDOC)
1799 AC_SUBST(HAVE_GTK_DOC)
1800
1801 AC_CHECK_PROG(DB2HTML, db2html, true, false)
1802 AM_CONDITIONAL(HAVE_DOCBOOK, $DB2HTML)
1803
1804 dnl Let people disable the gtk-doc stuff.
1805 AC_ARG_ENABLE(gtk-doc, [  --enable-gtk-doc        use gtk-doc to build documentation [default=auto]], enable_gtk_doc="$enableval", enable_gtk_doc=no)
1806
1807 if test x$enable_gtk_doc = xyes ; then
1808   if test x$GTKDOC = xtrue ; then
1809     enable_gtk_doc=yes
1810   else
1811     enable_gtk_doc=no 
1812   fi
1813 fi
1814
1815 dnl NOTE: We need to use a separate automake conditional for this
1816 dnl       to make this work with the tarballs.
1817 AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
1818
1819 dnl ******************************
1820 dnl *** output the whole stuff ***
1821 dnl ******************************
1822
1823 AC_OUTPUT_COMMANDS([
1824
1825 ## Generate `glibconfig.h' in two cases
1826 ## 1. `config.status' is run either explicitly, or via configure.
1827 ##     Esp. not when it is run in `Makefile' to generate makefiles and
1828 ##     config.h
1829 ## 2. CONFIG_OTHER is set explicitly
1830 ##
1831 ## Case 1 is difficult.  We know that `automake' sets one of
1832 ## CONFIG_FILES or CONFIG_HEADERS to empty.  This heuristic works
1833 ## only when AM_CONFIG_HEADER is set, however.
1834
1835 if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
1836   # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
1837   CONFIG_OTHER=${CONFIG_OTHER:-glibconfig.h}
1838 fi
1839 case "$CONFIG_OTHER" in
1840 *glibconfig.h*)
1841         echo creating glibconfig.h
1842         outfile=glibconfig.h-tmp
1843         cat > $outfile <<\_______EOF
1844 /* glibconfig.h
1845  *
1846  * This is a generated file.  Please modify 'configure.in'
1847  */
1848
1849 #ifndef __G_LIBCONFIG_H__
1850 #define __G_LIBCONFIG_H__
1851
1852 #include <glib/gmacros.h>
1853
1854 _______EOF
1855
1856         if test x$glib_limits_h = xyes; then
1857           echo '#include <limits.h>' >> $outfile
1858         fi
1859         if test x$glib_float_h = xyes; then
1860           echo '#include <float.h>' >> $outfile
1861         fi
1862         if test x$glib_values_h = xyes; then
1863           echo '#include <values.h>' >> $outfile
1864         fi
1865         if test "$glib_header_alloca_h" = "yes"; then
1866           echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
1867         fi
1868         if test x$glib_sys_poll_h = xyes; then
1869           echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
1870         fi
1871
1872         cat >> $outfile <<_______EOF
1873
1874 G_BEGIN_DECLS
1875
1876 #define G_MINFLOAT      $glib_mf
1877 #define G_MAXFLOAT      $glib_Mf
1878 #define G_MINDOUBLE     $glib_md
1879 #define G_MAXDOUBLE     $glib_Md
1880 #define G_MINSHORT      $glib_ms
1881 #define G_MAXSHORT      $glib_Ms
1882 #define G_MAXUSHORT     $glib_Mus
1883 #define G_MININT        $glib_mi
1884 #define G_MAXINT        $glib_Mi
1885 #define G_MAXUINT       $glib_Mui
1886 #define G_MINLONG       $glib_ml
1887 #define G_MAXLONG       $glib_Ml
1888 #define G_MAXULONG      $glib_Mul
1889
1890 #define G_MININT64      ((gint64)  0x8000000000000000)
1891 #define G_MAXINT64      ((gint64)  0x7fffffffffffffff)
1892 #define G_MAXUINT64     ((guint64) 0xffffffffffffffff)
1893
1894 _______EOF
1895
1896
1897         ### this should always be true in a modern C/C++ compiler
1898         cat >>$outfile <<_______EOF
1899 typedef signed char gint8;
1900 typedef unsigned char guint8;
1901 _______EOF
1902
1903
1904         if test -n "$gint16"; then
1905           cat >>$outfile <<_______EOF
1906 typedef signed $gint16 gint16;
1907 typedef unsigned $gint16 guint16;
1908 #define G_GINT16_FORMAT $gint16_format
1909 #define G_GUINT16_FORMAT $guint16_format
1910 _______EOF
1911         fi
1912
1913
1914         if test -n "$gint32"; then
1915           cat >>$outfile <<_______EOF
1916 typedef signed $gint32 gint32;
1917 typedef unsigned $gint32 guint32;
1918 #define G_GINT32_FORMAT $gint32_format
1919 #define G_GUINT32_FORMAT $guint32_format
1920 _______EOF
1921         fi
1922
1923         cat >>$outfile <<_______EOF
1924 #define G_HAVE_GINT64 1          /* deprecated, always true */
1925
1926 ${glib_extension}typedef signed $gint64 gint64;
1927 ${glib_extension}typedef unsigned $gint64 guint64;
1928
1929 #define G_GINT64_CONSTANT(val)  $gint64_constant
1930 _______EOF
1931
1932         if test x$gint64_format != x ; then
1933           cat >>$outfile <<_______EOF
1934 #define G_GINT64_FORMAT $gint64_format
1935 #define G_GUINT64_FORMAT $guint64_format
1936 _______EOF
1937         else
1938           cat >>$outfile <<_______EOF
1939 #undef G_GINT64_FORMAT
1940 #undef G_GUINT64_FORMAT
1941 _______EOF
1942         fi           
1943
1944         cat >>$outfile <<_______EOF
1945
1946 #define GLIB_SIZEOF_VOID_P $glib_void_p
1947 #define GLIB_SIZEOF_LONG   $glib_long
1948 #define GLIB_SIZEOF_SIZE_T $glib_size_t
1949
1950 _______EOF
1951
1952 echo "typedef signed $glib_size_type_define gssize;" >> $outfile
1953 echo "typedef unsigned $glib_size_type_define gsize;" >> $outfile
1954
1955         if test -z "$glib_unknown_void_p"; then
1956           cat >>$outfile <<_______EOF
1957
1958 #define GPOINTER_TO_INT(p)      ((gint)  ${glib_gpi_cast} (p))
1959 #define GPOINTER_TO_UINT(p)     ((guint) ${glib_gpui_cast} (p))
1960
1961 #define GINT_TO_POINTER(i)      ((gpointer) ${glib_gpi_cast} (i))
1962 #define GUINT_TO_POINTER(u)     ((gpointer) ${glib_gpui_cast} (u))
1963 _______EOF
1964         else
1965           echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
1966         fi
1967
1968
1969
1970         cat >>$outfile <<_______EOF
1971 $glib_atexit
1972 $glib_memmove
1973 $glib_defines
1974 $glib_os
1975
1976 $glib_vacopy
1977
1978 #ifdef  __cplusplus
1979 #define G_HAVE_INLINE   1
1980 #else   /* !__cplusplus */
1981 $glib_inline
1982 #endif  /* !__cplusplus */
1983
1984 _______EOF
1985
1986         if test x$g_have_iso_c_varargs = xyes ; then
1987                 cat >>$outfile <<_______EOF
1988 #ifndef __cplusplus
1989 # define G_HAVE_ISO_VARARGS 1
1990 #endif
1991 _______EOF
1992         fi
1993         if test x$g_have_iso_cxx_varargs = xyes ; then
1994                 cat >>$outfile <<_______EOF
1995 #ifdef __cplusplus
1996 # define G_HAVE_ISO_VARARGS 1
1997 #endif
1998 _______EOF
1999         fi
2000         if test x$g_have_gnuc_varargs = xyes ; then
2001                 cat >>$outfile <<_______EOF
2002
2003 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2004  * is passed ISO vararg support is turned off, and there is no work
2005  * around to turn it on, so we unconditionally turn it off.
2006  */
2007 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2008 #  undef G_HAVE_ISO_VARARGS
2009 #endif
2010
2011 #define G_HAVE_GNUC_VARARGS 1
2012 _______EOF
2013         fi
2014
2015         case x$g_stack_grows in
2016         xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2017         *)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2018         esac
2019
2020
2021         echo >>$outfile
2022         if test x$g_have_eilseq = xno; then
2023                 cat >>$outfile <<_______EOF
2024 #ifndef EILSEQ
2025 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2026  * The correspondence between this and the corresponding definition
2027  * in libiconv is essential.
2028  */
2029 #  define EILSEQ ENOENT
2030 #endif
2031 _______EOF
2032
2033         fi
2034
2035         echo >>$outfile
2036         if test x$g_mutex_has_default = xyes; then
2037                 cat >>$outfile <<_______EOF
2038 $g_enable_threads_def G_THREADS_ENABLED
2039 #define G_THREADS_IMPL_$g_threads_impl_def
2040 typedef struct _GStaticMutex GStaticMutex;
2041 struct _GStaticMutex
2042 {
2043   struct _GMutex *runtime_mutex;
2044   union {
2045     char   pad[$g_mutex_sizeof];
2046     double dummy_double;
2047     void  *dummy_pointer;
2048     long   dummy_long;
2049   } static_mutex;
2050 };
2051 #define G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
2052 #define g_static_mutex_get_mutex(mutex) \
2053   (g_thread_use_default_impl ? ((GMutex*) &((mutex)->static_mutex)) : \
2054    g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
2055 _______EOF
2056         else
2057                 cat >>$outfile <<_______EOF
2058 $g_enable_threads_def G_THREADS_ENABLED
2059 #define G_THREADS_IMPL_$g_threads_impl_def
2060 typedef struct _GMutex* GStaticMutex;
2061 #define G_STATIC_MUTEX_INIT NULL
2062 #define g_static_mutex_get_mutex(mutex) (g_static_mutex_get_mutex_impl (mutex))
2063 _______EOF
2064         fi
2065
2066         cat >>$outfile <<_______EOF
2067 /* This represents a system thread as used by the implementation. An
2068  * alien implementaion, as loaded by g_thread_init can only count on
2069  * "sizeof (gpointer)" bytes to store their info. We however need more
2070  * for some of our native implementations. */
2071 typedef union _GSystemThread GSystemThread;
2072 union _GSystemThread
2073 {
2074   char   data[$g_system_thread_sizeof];
2075   double dummy_double;
2076   void  *dummy_pointer;
2077   long   dummy_long;
2078 };
2079 _______EOF
2080
2081         echo >>$outfile
2082         g_bit_sizes="16 32 64"
2083         for bits in $g_bit_sizes; do
2084           cat >>$outfile <<_______EOF
2085 #define GINT${bits}_TO_${g_bs_native}(val)      ((gint${bits}) (val))
2086 #define GUINT${bits}_TO_${g_bs_native}(val)     ((guint${bits}) (val))
2087 #define GINT${bits}_TO_${g_bs_alien}(val)       ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
2088 #define GUINT${bits}_TO_${g_bs_alien}(val)      (GUINT${bits}_SWAP_LE_BE (val))
2089 _______EOF
2090         done
2091
2092         cat >>$outfile <<_______EOF
2093 #define GLONG_TO_LE(val)        ((glong) GINT${glongbits}_TO_LE (val))
2094 #define GULONG_TO_LE(val)       ((gulong) GUINT${glongbits}_TO_LE (val))
2095 #define GLONG_TO_BE(val)        ((glong) GINT${glongbits}_TO_BE (val))
2096 #define GULONG_TO_BE(val)       ((gulong) GUINT${glongbits}_TO_BE (val))
2097 #define GINT_TO_LE(val)         ((gint) GINT${gintbits}_TO_LE (val))
2098 #define GUINT_TO_LE(val)        ((guint) GUINT${gintbits}_TO_LE (val))
2099 #define GINT_TO_BE(val)         ((gint) GINT${gintbits}_TO_BE (val))
2100 #define GUINT_TO_BE(val)        ((guint) GUINT${gintbits}_TO_BE (val))
2101 #define G_BYTE_ORDER $g_byte_order
2102
2103 _______EOF
2104
2105         if test -r glibconfig-sysdefs.h; then
2106           cat glibconfig-sysdefs.h >>$outfile
2107         fi
2108
2109         cat >>$outfile <<_______EOF
2110
2111 #define G_MODULE_SUFFIX "$g_module_suffix"
2112
2113 G_END_DECLS
2114
2115 #endif /* GLIBCONFIG_H */
2116 _______EOF
2117
2118
2119         if cmp -s $outfile glibconfig.h; then
2120           echo glibconfig.h is unchanged
2121           rm -f $outfile
2122         else
2123           mv $outfile glibconfig.h
2124         fi ;;
2125 esac
2126 ],[
2127
2128 # Note that if two cases are the same, case goes with the first one.
2129 # Note also that this is inside an AC_OUTPUT_COMMAND.  We do not depend
2130 # on variable expansion in case labels.  Look at the generated config.status
2131 # for a hint.
2132
2133 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
2134   glib_header_alloca_h="$ac_cv_working_alloca_h"
2135 else
2136   glib_header_alloca_h="$ac_cv_header_alloca_h"
2137 fi
2138
2139 case xyes in
2140 x$ac_cv_header_float_h)
2141   glib_float_h=yes
2142   glib_mf=FLT_MIN glib_Mf=FLT_MAX
2143   glib_md=DBL_MIN glib_Md=DBL_MAX
2144   ;;
2145 x$ac_cv_header_values_h)
2146   glib_values_h=yes
2147   glib_mf=MINFLOAT  glib_Mf=MAXFLOAT
2148   glib_md=MINDOUBLE glib_Md=MAXDOUBLE
2149   ;;
2150 esac
2151
2152 case xyes in
2153 x$ac_cv_header_limits_h)
2154   glib_limits_h=yes
2155   glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
2156   glib_mi=INT_MIN  glib_Mi=INT_MAX  glib_Mui=UINT_MAX
2157   glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
2158   ;;
2159 x$ac_cv_header_values_h)
2160   glib_values_h=yes
2161   glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
2162   glib_mi=MININT   glib_Mi=MAXINT   glib_Mui="(((guint)G_MAXINT)*2+1)"
2163   glib_ml=MINLONG  glib_Ml=MAXLONG  glib_Mul="(((gulong)G_MAXLONG)*2+1)"
2164   ;;
2165 esac
2166
2167 if test x$ac_cv_header_sys_poll_h = xyes ; then
2168   glib_sys_poll_h=yes
2169 fi
2170
2171 case 2 in
2172 $ac_cv_sizeof_short)            
2173   gint16=short
2174   gint16_format='"hi"'
2175   guint16_format='"hu"'
2176   ;;
2177 $ac_cv_sizeof_int)              
2178   gint16=int
2179   gint16_format='"i"'
2180   guint16_format='"u"'
2181   ;;
2182 esac
2183 case 4 in
2184 $ac_cv_sizeof_short)            
2185   gint32=short
2186   gint32_format='"hi"'
2187   guint32_format='"hu"'
2188   ;;
2189 $ac_cv_sizeof_int)              
2190   gint32=int
2191   gint32_format='"i"'
2192   guint32_format='"u"'
2193   ;;
2194 $ac_cv_sizeof_long)             
2195   gint32=long
2196   gint32_format='"li"'
2197   guint32_format='"lu"'
2198   ;;
2199 esac
2200 case 8 in
2201 $ac_cv_sizeof_int)
2202   gint64=int
2203   gint64_format='"i"'
2204   guint64_format='"u"'
2205   glib_extension=
2206   gint64_constant='(val)'
2207   ;;
2208 $ac_cv_sizeof_long)
2209   gint64=long
2210   gint64_format='"li"'
2211   guint64_format='"lu"'
2212   glib_extension=
2213   gint64_constant='(val##L)'
2214   ;;
2215 $ac_cv_sizeof_long_long)
2216   gint64='long long'
2217   if test -n "$glib_cv_long_long_format"; then
2218     gint64_format='"'$glib_cv_long_long_format'i"'
2219     guint64_format='"'$glib_cv_long_long_format'u"'
2220   fi
2221   glib_extension='G_GNUC_EXTENSION '
2222   gint64_constant='(G_GNUC_EXTENSION (val##LL))'
2223   ;;
2224 $ac_cv_sizeof___int64)
2225   gint64='__int64'
2226   if test -n "$glib_cv_long_long_format"; then
2227     gint64_format='"'$glib_cv_long_long_format'i"'
2228     guint64_format='"'$glib_cv_long_long_format'u"'
2229   fi
2230   glib_extension=
2231   gint64_constant='(val##i64)'
2232   ;;
2233 esac
2234 glib_size_t=$glib_cv_sizeof_size_t
2235 glib_size_type_define=$glib_size_type
2236 glib_void_p=$ac_cv_sizeof_long
2237 glib_long=$ac_cv_sizeof_void_p
2238
2239 gintbits=`expr $ac_cv_sizeof_int \* 8`
2240 glongbits=`expr $ac_cv_sizeof_long \* 8`
2241
2242
2243 case $ac_cv_sizeof_void_p in
2244 $ac_cv_sizeof_int)      glib_gpi_cast=''        glib_gpui_cast=''         ;;
2245 $ac_cv_sizeof_long)     glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
2246 *)                      glib_unknown_void_p=yes ;;
2247 esac
2248
2249
2250 case xyes in
2251 x$ac_cv_func_atexit)
2252   glib_atexit="
2253 #ifdef NeXT /* @#%@! NeXTStep */
2254 # define g_ATEXIT(proc) (!atexit (proc))
2255 #else
2256 # define g_ATEXIT(proc) (atexit (proc))
2257 #endif"
2258   ;;
2259 x$ac_cv_func_on_exit)
2260   glib_atexit="
2261 #define g_ATEXIT(proc)  (on_exit ((void (*)(int, void*))(proc), NULL))"
2262   ;;
2263 esac
2264
2265 case xyes in
2266 x$ac_cv_func_memmove)
2267   glib_memmove='
2268 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
2269   ;;
2270 x$glib_cv_working_bcopy)
2271   glib_memmove="
2272 /* memmove isn't available, but bcopy can copy overlapping memory regions */
2273 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
2274   ;;
2275 *)  
2276   glib_memmove="
2277 /* memmove isn't found and bcopy can't copy overlapping memory regions, 
2278  * so we have to roll our own copy routine. */
2279 void g_memmove (void* dest, const void * src, unsigned long len);"
2280   ;;
2281 esac
2282
2283 glib_defines="
2284 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
2285 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
2286 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
2287 "
2288
2289 case xyes in
2290 x$glib_cv_va_copy)      glib_vacopy='#define G_VA_COPY  va_copy' ;;
2291 x$glib_cv___va_copy)    glib_vacopy='#define G_VA_COPY  __va_copy' ;;
2292 *)                      glib_vacopy=''
2293 esac
2294
2295 if test x$glib_cv_va_val_copy = xno; then
2296   glib_vacopy="\$glib_vacopy
2297 #define G_VA_COPY_AS_ARRAY 1"
2298 fi
2299
2300 if test x$glib_cv_hasinline = xyes; then
2301     glib_inline='#define G_HAVE_INLINE 1'
2302 fi
2303 if test x$glib_cv_has__inline = xyes; then
2304     glib_inline="\$glib_inline
2305 #define G_HAVE___INLINE 1"
2306 fi
2307 if test x$glib_cv_has__inline__ = xyes; then
2308     glib_inline="\$glib_inline
2309 #define G_HAVE___INLINE__ 1"
2310 fi
2311
2312 g_have_gnuc_varargs=$g_have_gnuc_varargs
2313 g_have_iso_c_varargs=$g_have_iso_c_varargs
2314 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
2315
2316 case xyes in
2317 x$ac_cv_c_bigendian)
2318   g_byte_order=G_BIG_ENDIAN
2319   g_bs_native=BE
2320   g_bs_alien=LE
2321   ;;
2322 *)
2323   g_byte_order=G_LITTLE_ENDIAN
2324   g_bs_native=LE
2325   g_bs_alien=BE
2326   ;;
2327 esac
2328
2329 g_stack_grows=$glib_cv_stack_grows
2330
2331 g_have_eilseq=$have_eilseq
2332
2333 case x$have_threads in
2334 xno)    g_enable_threads_def="#undef";;
2335 *)      g_enable_threads_def="#define";;
2336 esac
2337
2338 g_threads_impl_def=$g_threads_impl
2339
2340 g_mutex_has_default="$mutex_has_default"
2341 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
2342 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
2343 g_mutex_contents="$glib_cv_byte_contents_gmutex"
2344
2345 g_module_suffix="$glib_gmodule_suffix"
2346
2347 case $host in
2348   *-*-beos*)
2349     glib_os="#define G_OS_BEOS"
2350     ;;
2351   *-*-cygwin*)
2352     glib_os="#define G_OS_UNIX
2353 #define G_PLATFORM_WIN32
2354 #define G_WITH_CYGWIN"
2355     ;;
2356   *-*-mingw*)
2357     glib_os="#define G_OS_WIN32
2358 #define G_PLATFORM_WIN32"
2359     ;;
2360   *)
2361     glib_os="#define G_OS_UNIX"
2362     ;;
2363 esac
2364 ])
2365
2366 AC_OUTPUT([
2367 glib-2.0.pc
2368 glib-2.0-uninstalled.pc
2369 gmodule-2.0.pc
2370 gmodule-2.0-uninstalled.pc
2371 gthread-2.0.pc
2372 gthread-2.0-uninstalled.pc
2373 gobject-2.0.pc
2374 gobject-2.0-uninstalled.pc
2375 glib.spec
2376 glib-zip
2377 glib-gettextize
2378 Makefile
2379 build/Makefile
2380 build/win32/Makefile
2381 build/win32/dirent/Makefile
2382 glib/Makefile
2383 glib/libcharset/Makefile
2384 glib/trio/Makefile
2385 gmodule/gmoduleconf.h
2386 gmodule/Makefile
2387 gobject/Makefile
2388 gobject/glib-mkenums
2389 gthread/Makefile
2390 po/Makefile.in
2391 docs/Makefile
2392 docs/reference/Makefile
2393 docs/reference/glib/Makefile
2394 docs/reference/gobject/Makefile
2395 tests/Makefile
2396 m4macros/Makefile
2397 ])