Add support for a number of special directories, as defined by the
[platform/upstream/glib.git] / configure.in
1 # Process this file with autoconf to produce a configure script.
2 # require autoconf 2.54
3 AC_PREREQ(2.54)
4
5 dnl ***********************************
6 dnl *** include special GLib macros ***
7 dnl ***********************************
8
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
14
15 #
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.
19 #
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.
27 #
28 m4_define([glib_major_version], [2])
29 m4_define([glib_minor_version], [13])
30 m4_define([glib_micro_version], [3])
31 m4_define([glib_interface_age], [3])
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])
36
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)])
45
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
50
51
52 AC_INIT(glib, [glib_version],
53         [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
54
55 AC_CONFIG_SRCDIR([glib/glib.h])
56
57 # Save this value here, since automake will set cflags later
58 cflags_set=${CFLAGS+set}
59
60 AM_INIT_AUTOMAKE([no-define])
61
62 # Specify a configuration file
63 AM_CONFIG_HEADER([config.h])
64
65
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
72
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)
79
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])
90
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)
102
103 dnl Initialize maintainer mode
104 AM_MAINTAINER_MODE
105
106 AC_CANONICAL_HOST
107
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])
118
119 dnl
120
121 AC_MSG_CHECKING([for Win32])
122 case "$host" in
123   *-*-mingw*)
124     glib_native_win32=yes
125     GLIB_DEF=glib.def
126     GMODULE_DEF=gmodule.def
127     GOBJECT_DEF=gobject.def
128     GTHREAD_DEF=gthread.def
129     TESTGMODULE_EXP=testgmodule.exp
130     glib_pid_type='void *'
131     ;;
132   *)
133     glib_native_win32=no
134     GLIB_DEF=
135     GMODULE_DEF=
136     GOBJECT_DEF=
137     GTHREAD_DEF=
138     TESTGMODULE_EXP=
139     glib_pid_type=int
140     ;;
141 esac
142 case $host in
143   *-*-linux*)
144     glib_os_linux=yes
145     ;;
146 esac
147
148 AC_MSG_RESULT([$glib_native_win32])
149
150 glib_have_carbon=no
151 AC_MSG_CHECKING([for Mac OS X Carbon support])
152 AC_TRY_CPP([
153 #include <Carbon/Carbon.h>
154 #include <CoreServices/CoreServices.h>
155 ], glib_have_carbon=yes)
156
157 AC_MSG_RESULT([$glib_have_carbon])
158
159 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
160 AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
161 AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
162 AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
163 AC_SUBST(GLIB_DEF)
164 AC_SUBST(GMODULE_DEF)
165 AC_SUBST(GOBJECT_DEF)
166 AC_SUBST(GTHREAD_DEF)
167 AC_SUBST(TESTGMODULE_EXP)
168
169 if test "$glib_native_win32" = "yes"; then
170   AC_CHECK_TOOL(WINDRES, windres, no)
171   if test "$WINDRES" = no; then
172     AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
173   fi
174   AC_CHECK_TOOL(NM, nm, no)
175   if test "$NM" = no; then
176     AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
177   fi
178   AC_CHECK_TOOL(RANLIB, ranlib, :)
179   AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
180 fi
181 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
182
183 if test "$glib_native_win32" != yes; then
184     # libtool option to control which symbols are exported
185     # right now, symbols starting with _ are not exported
186     LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
187 else
188     # We currently use .def files on Windows
189     LIBTOOL_EXPORT_OPTIONS=
190 fi
191 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
192
193 if test "x$glib_have_carbon" = "xyes"; then
194   AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
195   LDFLAGS="$LDFLAGS -framework Carbon"
196 fi
197
198
199 dnl declare --enable-* args and collect ac_help strings
200 AC_ARG_ENABLE(debug,
201               AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
202                              [turn on debugging @<:@default=glib_debug_default@:>@]),,
203               enable_debug=glib_debug_default)
204
205 AC_ARG_ENABLE(gc_friendly,
206               [AC_HELP_STRING([--enable-gc-friendly],
207                               [turn on garbage collector friendliness [default=no]])],,
208               [enable_gc_friendly=no])
209 AC_ARG_ENABLE(mem_pools,
210               [AC_HELP_STRING([--disable-mem-pools],
211                               [disable all glib memory pools])],,
212               [disable_mem_pools=no])
213 AC_ARG_ENABLE(threads,
214               [AC_HELP_STRING([--enable-threads],
215                               [turn on basic thread support [default=yes]
216 ([=no] will override --with-threads)])],,
217               [enable_threads=yes])
218 AC_ARG_ENABLE(rebuilds,
219               [AC_HELP_STRING([--disable-rebuilds],
220                               [disable all source autogeneration rules])],,
221               [enable_rebuilds=yes])
222 AC_ARG_ENABLE(visibility,
223               [AC_HELP_STRING([--disable-visibility],
224                               [don't use ELF visibility attributes])],,
225               [enable_visibility=yes])
226
227 if test "x$enable_threads" != "xyes"; then
228   enable_threads=no
229 fi
230
231 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, ["${enable_debug}"],
232         [Whether glib was compiled with debugging enabled])
233
234 AC_MSG_CHECKING([whether to enable garbage collector friendliness])
235 if test "x$enable_gc_friendly" = "xyes"; then
236   AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
237   AC_MSG_RESULT([yes])
238 else
239   AC_MSG_RESULT([no])
240 fi
241
242 AC_MSG_CHECKING([whether to disable memory pools])
243 if test "x$disable_mem_pools" = "xno"; then
244   AC_MSG_RESULT([no])
245 else
246   AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
247   AC_SUBST(DISABLE_MEM_POOLS)
248   AC_MSG_RESULT([yes])
249 fi
250
251 if test "$glib_native_win32" = "yes"; then
252   if test x$enable_static = xyes -o x$enable_static = x; then
253     AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
254     enable_static=no
255   fi
256   if test x$enable_shared = xno; then
257     AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
258   fi
259   enable_shared=yes
260 fi
261
262 dnl Checks for programs.
263 AC_PROG_CC
264
265 dnl Check for a working C++ compiler, but do not bail out, if none is found.
266 AC_CHECK_PROGS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
267 AC_LANG_SAVE
268 AC_LANG_CPLUSPLUS
269 AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
270 AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
271 AC_LANG_RESTORE
272
273 AM_PROG_CC_STDC
274 AC_PROG_INSTALL
275
276 AC_SYS_LARGEFILE
277
278 #
279 # Find pkg-config
280 #
281 AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no])
282 if test x$PKG_CONFIG = xno ; then
283   AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/])
284 fi
285
286 if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then
287   :
288 else
289   AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.])
290 fi
291
292 if test "x$enable_debug" = "xyes"; then
293   if test x$cflags_set != xset ; then
294       case " $CFLAGS " in
295       *[[\ \    ]]-g[[\ \       ]]*) ;;
296       *) CFLAGS="$CFLAGS -g" ;;
297       esac
298   fi
299         
300   GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
301 else
302   GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
303
304   if test "x$enable_debug" = "xno"; then
305     GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
306   fi
307 fi
308
309 if test "x$enable_visibility" = "xno"; then
310   GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DDISABLE_VISIBILITY"
311 fi
312
313 # Ensure MSVC-compatible struct packing convention is used when
314 # compiling for Win32 with gcc.
315 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
316 # gcc2 uses "-fnative-struct".
317 if test x"$glib_native_win32" = xyes; then
318   if test x"$GCC" = xyes; then
319     msnative_struct=''
320     AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
321     if test -z "$ac_cv_prog_CC"; then
322       our_gcc="$CC"
323     else
324       our_gcc="$ac_cv_prog_CC"
325     fi
326     case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
327       2.)
328         if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
329           msnative_struct='-fnative-struct'
330         fi
331         ;;
332       *)
333         if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
334           msnative_struct='-mms-bitfields'
335         fi
336         ;;
337     esac
338     if test x"$msnative_struct" = x ; then
339       AC_MSG_RESULT([no way])
340       AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
341     else
342       CFLAGS="$CFLAGS $msnative_struct"
343       AC_MSG_RESULT([${msnative_struct}])
344     fi
345   fi
346 fi
347
348 AC_EXEEXT
349
350 # define a MAINT-like variable REBUILD which is set if Perl
351 # and awk are found, so autogenerated sources can be rebuilt
352 AC_PROG_AWK
353 AC_CHECK_PROGS(PERL, [perl5 perl])
354 # We would like indent, but don't require it.
355 AC_CHECK_PROG(INDENT, indent, indent)
356 REBUILD=\#
357 if test "x$enable_rebuilds" = "xyes" && \
358      test -n "$PERL" && \
359      $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
360      test -n "$AWK" ; then
361   REBUILD=
362 fi
363 AC_SUBST(REBUILD)
364
365 # Need full path to Perl for glib-mkenums
366 #
367 if test "x$PERL" != x ; then
368   AC_PATH_PROG(PERL_PATH, [$PERL])
369 fi
370 if test "x$PERL_PATH" = x ; then
371   PERL_PATH="/usr/bin/env perl"
372 fi
373 AC_SUBST(PERL_PATH)
374
375 dnl ***********************
376 dnl *** Tests for iconv ***
377 dnl ***********************
378 dnl
379 dnl We do this before the gettext checks, to avoid distortion
380
381 AC_ARG_WITH(libiconv,
382             [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
383                             [use the libiconv library])],,
384             [with_libiconv=maybe])
385
386 found_iconv=no
387 case $with_libiconv in
388   maybe)
389     # Check in the C library first
390     AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
391     # Check if we have GNU libiconv
392     if test $found_iconv = "no"; then
393       AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
394     fi
395     # Check if we have a iconv in -liconv, possibly from vendor
396     if test $found_iconv = "no"; then
397       AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
398     fi
399     ;;
400   no)
401     AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
402     ;;
403   gnu|yes)
404     AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
405     ;;
406   native)
407     AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
408     ;;
409 esac
410
411 if test "x$found_iconv" = "xno" ; then
412    AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
413 fi
414
415 jm_GLIBC21
416 AC_ARG_ENABLE(iconv-cache, 
417               [AC_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
418                               [cache iconv descriptors [default=auto]])],,
419               [enable_iconv_cache=auto])
420
421 AC_MSG_CHECKING([Whether to cache iconv descriptors])
422 case $enable_iconv_cache in
423   auto)
424     if test $ac_cv_gnu_library_2_1 = yes; then
425       enable_iconv_cache=no
426     else 
427       enable_iconv_cache=yes
428     fi
429   ;;
430   yes|no) 
431   ;;
432   *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
433   ;;
434 esac
435
436 if test $enable_iconv_cache = yes; then
437    AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
438 fi
439
440 AC_MSG_RESULT($enable_iconv_cache)
441
442
443 dnl
444 dnl gettext support
445 dnl
446
447 ALL_LINGUAS="am ar az be be@latin bg bn bn_IN bs ca cs cy da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hr hu hy id is it ja ka ko ku lt lv mg mk ml mn ms nb ne nl nn or pa pl pt pt_BR ro ru rw sk sl sq sr sr@Latn sr@ije sv ta te th tl tr tt uk vi wa xh yi zh_CN zh_HK zh_TW"
448 GLIB_GNU_GETTEXT
449
450 if test "$gt_cv_have_gettext" != "yes" ; then
451   AC_MSG_ERROR([
452 *** You must have either have gettext support in your C library, or use the 
453 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
454 ])
455 fi
456
457 LIBS="$INTLLIBS $LIBS"
458
459 GETTEXT_PACKAGE=glib20
460 AC_SUBST(GETTEXT_PACKAGE)
461 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"], 
462   [Define the gettext package to be used])
463
464 GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
465
466 dnl
467 dnl Now we are done with gettext checks, figure out ICONV_LIBS
468 dnl
469
470 if test x$with_libiconv != xno ; then
471   case " $INTLLIBS " in
472   *[[\ \        ]]-liconv[[\ \  ]]*) ;;
473   *) ICONV_LIBS="-liconv" ;;
474   esac
475 fi
476 AC_SUBST(ICONV_LIBS)
477
478 case $with_libiconv in
479   gnu)
480     AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
481     ;;
482   native)
483     AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
484     ;;
485 esac
486
487 dnl Initialize libtool
488 AM_DISABLE_STATIC
489 AC_LIBTOOL_WIN32_DLL
490 AM_PROG_LIBTOOL
491
492 if test "x$GCC" = "xyes"; then
493   case " $CFLAGS " in
494   *[[\ \        ]]-Wall[[\ \    ]]*) ;;
495   *) CFLAGS="$CFLAGS -Wall" ;;
496   esac
497 fi
498
499 dnl
500 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
501 dnl
502 if test $cross_compiling != yes ; then
503     AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
504     glib_save_LIBS=$LIBS
505     LIBS="$LIBS -lm"
506     AC_TRY_RUN([#include <math.h>
507                  int main (void) { return (log(1) != log(1.)); }],
508          AC_MSG_RESULT(none needed),
509          glib_save_CFLAGS=$CFLAGS
510          CFLAGS="$CFLAGS -std1"
511          AC_TRY_RUN([#include <math.h>
512                      int main (void) { return (log(1) != log(1.)); }],
513              AC_MSG_RESULT(-std1),
514              AC_MSG_RESULT()
515              CFLAGS=$glib_save_CFLAGS
516              AC_MSG_WARN(
517                     [No ANSI prototypes found in library. (-std1 didn't work.)])
518          )
519     )
520     LIBS=$glib_save_LIBS
521 fi
522
523 dnl NeXTStep cc seems to need this
524 AC_MSG_CHECKING([for extra flags for POSIX compliance])
525 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
526   AC_MSG_RESULT(none needed),
527   glib_save_CFLAGS=$CFLAGS
528   CFLAGS="$CFLAGS -posix"
529   AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
530     AC_MSG_RESULT(-posix),
531     AC_MSG_RESULT()
532     CFLAGS=$glib_save_CFLAGS
533     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
534
535 # Checks for header files.
536 AC_HEADER_STDC
537
538 # Checks for library functions.
539 AC_FUNC_VPRINTF
540 AC_FUNC_MMAP
541 AC_FUNC_ALLOCA
542 AC_CHECK_FUNCS(posix_memalign)
543 AC_CHECK_FUNCS(memalign)
544 AC_CHECK_FUNCS(valloc)
545
546 AC_CHECK_FUNCS(atexit on_exit)
547
548 AC_CHECK_FUNCS(timegm)
549
550 AC_CHECK_SIZEOF(char)
551 AC_CHECK_SIZEOF(short)
552 AC_CHECK_SIZEOF(long)
553 AC_CHECK_SIZEOF(int)
554 AC_CHECK_SIZEOF(void *)
555 AC_CHECK_SIZEOF(long long)
556 AC_CHECK_SIZEOF(__int64)
557
558 if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
559   :
560 else
561   AC_MSG_ERROR([
562 *** GLib requires a 64 bit type. You might want to consider
563 *** using the GNU C compiler.
564 ])
565 fi
566
567 if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
568         # long long is a 64 bit integer.
569         AC_MSG_CHECKING(for format to printf and scanf a guint64)
570         AC_CACHE_VAL(glib_cv_long_long_format,[
571                 for format in ll q I64; do
572                   AC_TRY_RUN([#include <stdio.h>  
573                         int main()
574                         {
575                           long long b, a = -0x3AFAFAFAFAFAFAFALL;
576                           char buffer[1000];
577                           sprintf (buffer, "%${format}u", a);
578                           sscanf (buffer, "%${format}u", &b);
579                           exit (b!=a);
580                         }
581                         ],
582                         [glib_cv_long_long_format=${format}
583                         break],
584                         [],[:])
585                 done])
586         if test -n "$glib_cv_long_long_format"; then
587           AC_MSG_RESULT(%${glib_cv_long_long_format}u)
588           AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
589           if test x"$glib_cv_long_long_format" = xI64; then
590             AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
591           fi
592         else
593           AC_MSG_RESULT(none)
594         fi
595 elif test x$ac_cv_sizeof___int64 = x8; then
596         # __int64 is a 64 bit integer.
597         AC_MSG_CHECKING(for format to printf and scanf a guint64)
598         # We know this is MSVCRT.DLL, and what the formats are
599         glib_cv_long_long_format=I64
600         AC_MSG_RESULT(%${glib_cv_long_long_format}u)
601         AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
602         AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
603 fi
604
605 dnl long doubles were not used, and a portability problem
606 dnl AC_C_LONG_DOUBLE
607 AC_C_CONST
608
609 dnl ok, here we try to check whether the systems prototypes for
610 dnl malloc and friends actually match the prototypes provided
611 dnl by gmem.h (keep in sync). i currently only know how to check
612 dnl this reliably with gcc (-Werror), improvements for other
613 dnl compilers are apprechiated.
614 SANE_MALLOC_PROTOS=no
615 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
616 glib_save_CFLAGS=$CFLAGS
617 if test "x$GCC" = "xyes"; then
618   CFLAGS="$CFLAGS -Werror"
619   AC_TRY_COMPILE([#include <stdlib.h>], [
620     void* (*my_calloc_p)  (size_t, size_t) = calloc;
621     void* (*my_malloc_p)  (size_t)         = malloc;
622     void  (*my_free_p)    (void*)          = free;
623     void* (*my_realloc_p) (void*, size_t)  = realloc;
624     my_calloc_p = 0;
625     my_malloc_p = 0;
626     my_free_p = 0;
627     my_realloc_p = 0;
628   ],
629     AC_DEFINE(SANE_MALLOC_PROTOS, 1, 
630       [Define if you have correct malloc prototypes])
631     SANE_MALLOC_PROTOS=yes)
632 fi
633 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
634 CFLAGS=$glib_save_CFLAGS
635
636 dnl
637 dnl check in which direction the stack grows
638 dnl
639 AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
640         AC_TRY_RUN([
641         volatile int *a = 0, *b = 0;
642         void foo (void);
643         int main () { volatile int y = 7; a = &y; foo (); return b > a; }
644         void foo (void) { volatile int x = 5; b = &x; }
645         ],
646         glib_cv_stack_grows=no
647         ,
648         glib_cv_stack_grows=yes
649         ,)
650 ])
651
652 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
653 dnl truely know which ones of `inline', `__inline' and `__inline__' are
654 dnl actually supported.
655 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
656         AC_COMPILE_IFELSE([
657         __inline int foo () { return 0; }
658         int main () { return foo (); }
659         ],
660         glib_cv_has__inline=yes
661         ,
662         glib_cv_has__inline=no
663         ,)
664 ])
665 case x$glib_cv_has__inline in
666 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
667 esac
668 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
669         AC_COMPILE_IFELSE([
670         __inline__ int foo () { return 0; }
671         int main () { return foo (); }
672         ],
673         glib_cv_has__inline__=yes
674         ,
675         glib_cv_has__inline__=no
676         ,)
677 ])
678 case x$glib_cv_has__inline__ in
679 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
680 esac
681 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
682         AC_COMPILE_IFELSE([
683         #undef inline
684         inline int foo () { return 0; }
685         int main () { return foo (); }
686         ],
687         glib_cv_hasinline=yes
688         ,
689         glib_cv_hasinline=no
690         ,)
691 ])
692 case x$glib_cv_hasinline in
693 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
694 esac
695
696 # if we can use inline functions in headers
697 AC_MSG_CHECKING(if inline functions in headers work)
698 AC_LINK_IFELSE([
699 #if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
700 #  undef inline
701 #  define inline __inline__
702 #elif !defined (G_HAVE_INLINE)
703 #  undef inline
704 #  if defined (G_HAVE___INLINE__)
705 #    define inline __inline__
706 #  elif defined (G_HAVE___INLINE)
707 #    define inline __inline
708 #  endif
709 #endif
710
711 int glib_test_func2 (int);
712
713 static inline int
714 glib_test_func1 (void) {
715   return glib_test_func2 (1);
716 }
717
718 int
719 main (void) {
720   int i = 1;
721 }],[g_can_inline=yes],[g_can_inline=no])
722 AC_MSG_RESULT($g_can_inline)
723
724 dnl *** check for working do while(0) macros ***
725 AC_CACHE_CHECK([for working do while(0) macros], g_support_dowhile_macros, [
726         AC_TRY_COMPILE([],[
727         #define STMT_START do
728         #define STMT_END while(0)
729         #define STMT_TEST STMT_START { i = 0; } STMT_END
730         int main(void) { int i = 1; STMT_TEST; return i; }],
731         [g_support_dowhile_macros=yes],
732         [g_support_dowhile_macros=no],
733         [g_support_dowhile_macros=yes])
734 ])
735 if test x$g_support_dowhile_macros = xyes; then
736   AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
737 fi
738
739 # check for flavours of varargs macros
740 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
741 AC_TRY_COMPILE([],[
742 int a(int p1, int p2, int p3);
743 #define call_a(...) a(1,__VA_ARGS__)
744 call_a(2,3);
745 ],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
746 AC_MSG_RESULT($g_have_iso_c_varargs)
747
748 AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
749 if test "$CXX" = ""; then
750 dnl No C++ compiler
751   g_have_iso_cxx_varargs=no
752 else
753   AC_LANG_CPLUSPLUS
754   AC_TRY_COMPILE([],[
755 int a(int p1, int p2, int p3);
756 #define call_a(...) a(1,__VA_ARGS__)
757 call_a(2,3);
758 ],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
759   AC_LANG_C
760 fi
761 AC_MSG_RESULT($g_have_iso_cxx_varargs)
762
763 AC_MSG_CHECKING(for GNUC varargs macros)
764 AC_TRY_COMPILE([],[
765 int a(int p1, int p2, int p3);
766 #define call_a(params...) a(1,params)
767 call_a(2,3);
768 ],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
769 AC_MSG_RESULT($g_have_gnuc_varargs)
770
771 # check for GNUC visibility support
772 AC_MSG_CHECKING(for GNUC visibility attribute)
773 GLIB_CHECK_COMPILE_WARNINGS([
774 void
775 __attribute__ ((visibility ("hidden")))
776      f_hidden (void)
777 {
778 }
779 void
780 __attribute__ ((visibility ("internal")))
781      f_internal (void)
782 {
783 }
784 void
785 __attribute__ ((visibility ("protected")))
786      f_protected (void)
787 {
788 }
789 void
790 __attribute__ ((visibility ("default")))
791      f_default (void)
792 {
793 }
794 int main (int argc, char **argv)
795 {
796         f_hidden();
797         f_internal();
798         f_protected();
799         f_default();
800         return 0;
801 }
802 ],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
803 AC_MSG_RESULT($g_have_gnuc_visibility)
804 AM_CONDITIONAL(HAVE_GNUC_VISIBILITY, [test x$g_have_gnuc_visibility = xyes])
805
806 AC_MSG_CHECKING([whether using Sun Studio C compiler])
807 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550)
808 #else
809 # include "error: this is not Sun Studio."
810 #endif
811 ]], [[]])], [ g_have_sunstudio_visibility=yes ], [ g_have_sunstudio_visibility=no ])
812 AC_MSG_RESULT($g_have_sunstudio_visibility)
813 AM_CONDITIONAL(HAVE_SUNSTUDIO_VISIBILITY, [test x$g_have_sunstudio_visibility = xyes])
814
815 # check for bytesex stuff
816 AC_C_BIGENDIAN
817
818 # check for header files
819 AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h sys/param.h sys/poll.h])
820 AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
821 AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h sched.h malloc.h])
822
823 # Checks for libcharset
824 jm_LANGINFO_CODESET
825 jm_GLIBC21
826 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
827 AC_CHECK_FUNCS(setlocale)
828
829 # check additional type sizes
830 AC_CHECK_SIZEOF(size_t)
831
832 dnl Try to figure out whether gsize, gssize should be long or int
833 AC_MSG_CHECKING([for the appropriate definition for size_t])
834
835 case $ac_cv_sizeof_size_t in
836   $ac_cv_sizeof_short) 
837       glib_size_type=short
838       ;;
839   $ac_cv_sizeof_int) 
840       glib_size_type=int
841       ;;
842   $ac_cv_sizeof_long) 
843       glib_size_type=long
844       ;;
845   *)  AC_MSG_ERROR([No type matching size_t in size])
846       ;;
847 esac
848
849 dnl If int/long are the same size, we see which one produces
850 dnl warnings when used in the location as size_t. (This matters
851 dnl on AIX with xlc)
852 dnl
853 if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
854    test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
855   GLIB_CHECK_COMPILE_WARNINGS([
856 #if defined(_AIX) && !defined(__GNUC__)
857 #pragma options langlvl=stdc89
858 #endif
859 #include <stddef.h> 
860 int main ()
861 {
862   size_t s = 1;
863   unsigned int *size_int = &s;
864   return (int)*size_int;
865 }
866     ],glib_size_type=int,
867       [GLIB_CHECK_COMPILE_WARNINGS([
868 #if defined(_AIX) && !defined(__GNUC__)
869 #pragma options langlvl=stdc89
870 #endif
871 #include <stddef.h> 
872 int main ()
873 {
874    size_t s = 1;
875    unsigned long *size_long = &s;
876    return (int)*size_long;
877 }
878         ],glib_size_type=long)])
879 fi
880
881 AC_MSG_RESULT(unsigned $glib_size_type)
882
883 # Check for some functions
884 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk)
885 # Check for high-resolution sleep functions
886 AC_CHECK_FUNCS(nanosleep nsleep)
887
888 AC_CHECK_HEADERS(crt_externs.h)
889 AC_CHECK_FUNCS(_NSGetEnviron)
890
891 AC_FUNC_VSNPRINTF_C99
892 AC_FUNC_PRINTF_UNIX98
893
894 #
895 # Check whether to use an included printf
896 #
897
898 AC_ARG_ENABLE(included-printf,
899               [AC_HELP_STRING([--enable-included-printf],
900                               [use included printf [default=auto]])],
901               enable_included_printf="$enableval")
902
903 need_included_printf=no
904 if test "x$enable_included_printf" = "xyes" ; then
905   need_included_printf=yes
906 fi
907 if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
908   need_included_printf=yes
909 fi
910 if test "$ac_cv_func_printf_unix98" != "yes" ; then
911   need_included_printf=yes
912 fi
913 if test "x$ac_cv_sizeof_long_long" = "x8" &&
914    test -z "$glib_cv_long_long_format" ; then
915   need_included_printf=yes
916 fi
917
918 if test "x$enable_included_printf" = "xno" && 
919    test "x$need_included_printf" = "xyes" ; then
920   AC_MSG_ERROR([
921 *** Your C library's printf doesn't appear to have the features that
922 *** GLib needs, but you specified --enable-included-printf=no.])
923 fi
924
925 enable_included_printf=$need_included_printf
926
927 AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
928 if test "$enable_included_printf" != "yes" ; then 
929   AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
930 else
931   if test -z "$glib_cv_long_long_format" ; then
932     glib_cv_long_long_format="ll"
933   fi
934   AC_DEFINE(HAVE_VASPRINTF,1)
935 fi
936
937 # Checks needed for gnulib vasnprintf
938 bh_C_SIGNED
939 jm_AC_TYPE_LONG_LONG
940 gt_TYPE_LONGDOUBLE
941 gt_TYPE_WCHAR_T
942 gt_TYPE_WINT_T
943 AC_TYPE_SIZE_T
944 AC_CHECK_TYPES(ptrdiff_t)
945 jm_AC_TYPE_INTMAX_T
946 AC_CHECK_FUNCS([snprintf wcslen])
947 AC_FUNC_SNPRINTF_C99
948
949 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
950 # The check is borrowed from the PERL Configure script.
951 if test "$ac_cv_func_memmove" != "yes"; then
952   AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
953     glib_cv_working_bcopy,[AC_TRY_RUN([
954       int main() {
955         char buf[128], abc[128], *b;
956         int len, off, align;
957         bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
958         for (align = 7; align >= 0; align--) {
959           for (len = 36; len; len--) {
960             b = buf+align; bcopy(abc, b, len);
961             for (off = 1; off <= len; off++) {
962               bcopy(b, b+off, len); bcopy(b+off, b, len);
963                 if (bcmp(b, abc, len)) return(1);
964             }
965           }
966         }
967         return(0);
968       }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
969
970   GLIB_ASSERT_SET(glib_cv_working_bcopy)
971   if test "$glib_cv_working_bcopy" = "yes"; then
972     AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
973   fi
974 fi
975
976 # Check for sys_errlist
977 AC_MSG_CHECKING(for sys_errlist)
978 AC_TRY_LINK(, [
979 extern char *sys_errlist[];
980 extern int sys_nerr;
981 sys_errlist[sys_nerr-1][0] = 0;
982 ], glib_ok=yes, glib_ok=no)
983 AC_MSG_RESULT($glib_ok)
984 if test "$glib_ok" = "no"; then
985     AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
986 fi
987
988 # Check for sys_siglist
989 AC_MSG_CHECKING(for sys_siglist)
990 AC_TRY_LINK(, [
991 extern char *sys_siglist[];
992 exit (sys_siglist[0]);
993 ], glib_ok=yes, glib_ok=no)
994 AC_MSG_RESULT($glib_ok)
995 if test "$glib_ok" = "no"; then
996     AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
997 fi
998
999 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
1000 AC_MSG_CHECKING(for sys_siglist declaration)
1001 AC_TRY_COMPILE([#include <signal.h>], [
1002 strlen (sys_siglist[0]);
1003 ], glib_ok=yes, glib_ok=no)
1004 AC_MSG_RESULT($glib_ok)
1005 if test "$glib_ok" = "no"; then
1006     AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
1007 fi
1008
1009 # Check if <sys/select.h> needs to be included for fd_set
1010 AC_MSG_CHECKING([for fd_set])
1011 AC_TRY_COMPILE([#include <sys/types.h>],
1012         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
1013 if test "$gtk_ok" = "yes"; then
1014     AC_MSG_RESULT([yes, found in sys/types.h])
1015 else
1016     AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
1017     if test "$gtk_ok" = "yes"; then
1018         # *** FIXME: give it a different name
1019         AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
1020         AC_MSG_RESULT([yes, found in sys/select.h])
1021     else
1022         AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
1023         AC_MSG_RESULT(no)
1024     fi
1025 fi
1026
1027 dnl *** check for sane realloc() ***
1028 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
1029         AC_TRY_RUN([#include <stdlib.h>
1030         int main() {
1031           return realloc (0, sizeof (int)) == 0;
1032         }],
1033         [glib_cv_sane_realloc=yes],
1034         [glib_cv_sane_realloc=no],
1035         [glib_cv_sane_realloc=yes])
1036 ])
1037 if test x$glib_cv_sane_realloc = xyes; then
1038   AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
1039 fi
1040
1041 dnl Check for nl_langinfo and CODESET
1042 AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
1043         AC_TRY_COMPILE([#include <langinfo.h>],
1044                 [char *codeset = nl_langinfo (CODESET);],
1045                 [glib_cv_langinfo_codeset=yes],
1046                 [glib_cv_langinfo_codeset=no])])
1047 if test x$glib_cv_langinfo_codeset = xyes; then
1048   AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
1049 fi
1050
1051 dnl ****************************************
1052 dnl *** posix_memalign                   ***
1053 dnl ****************************************
1054 AC_MSG_CHECKING(for a compliant posix_memalign() implementation)
1055 AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
1056     glib_cv_compliant_posix_memalign=0
1057     if test "$ac_cv_func_posix_memalign" = "yes" ; then
1058         AC_TRY_RUN([
1059                 #define _XOPEN_SOURCE 600
1060                 #include <stdlib.h> /* posix_memalign() should be defined here */
1061                 /* some systems break if #include <malloc.h> used */
1062                 static void test_memalign (size_t boundary, size_t size) {
1063                     void *mem = 0;
1064                     if (posix_memalign (&mem, boundary, size) != 0 || !mem)
1065                         exit (1);
1066                     else
1067                       free (mem);
1068                 }
1069                 int main() {
1070                     test_memalign (  128,   128 - 2 * sizeof (void*));
1071                     test_memalign (  256,   256 - 2 * sizeof (void*));
1072                     test_memalign (  512,   512 - 2 * sizeof (void*));
1073                     test_memalign ( 1024,  1024 - 2 * sizeof (void*));
1074                     test_memalign ( 2048,  2048 - 2 * sizeof (void*));
1075                     test_memalign ( 4096,  4096 - 2 * sizeof (void*));
1076                     test_memalign ( 8192,  8192 - 2 * sizeof (void*));
1077                     test_memalign (16384, 16384 - 2 * sizeof (void*));
1078                     test_memalign (32768, 32768 - 2 * sizeof (void*));
1079                     exit (0); /* success */
1080                 }
1081                 ],
1082             [glib_cv_compliant_posix_memalign=1], [], [:])
1083       :
1084     fi
1085     ])
1086 if test "$glib_cv_compliant_posix_memalign" = "1"; then
1087     AC_MSG_RESULT(yes)
1088     AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
1089 else
1090     AC_MSG_RESULT(no)
1091 fi
1092
1093
1094 dnl ****************************************
1095 dnl *** strlcpy/strlcat                  ***
1096 dnl ****************************************
1097 # Check for strlcpy
1098 AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
1099 AC_TRY_RUN([#include <stdlib.h>
1100 #include <string.h>
1101 int main() {
1102   char p[10];
1103   (void) strlcpy (p, "hi", 10);
1104   if (strlcat (p, "bye", 0) != 3) 
1105     return 1;
1106   return 0;
1107 }], glib_cv_have_strlcpy=yes, 
1108     glib_cv_have_strlcpy=no,
1109     glib_cv_have_strlcpy=no)])
1110 if test "$glib_cv_have_strlcpy" = "yes"; then
1111     AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
1112 fi
1113   
1114
1115 dnl **********************
1116 dnl *** va_copy checks ***
1117 dnl **********************
1118 dnl we currently check for all three va_copy possibilities, so we get
1119 dnl all results in config.log for bug reports.
1120 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
1121         AC_LINK_IFELSE([#include <stdarg.h>
1122 #include <stdlib.h>
1123         void f (int i, ...) {
1124         va_list args1, args2;
1125         va_start (args1, i);
1126         va_copy (args2, args1);
1127         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1128           exit (1);
1129         va_end (args1); va_end (args2);
1130         }
1131         int main() {
1132           f (0, 42);
1133           return 0;
1134         }],
1135         [glib_cv_va_copy=yes],
1136         [glib_cv_va_copy=no])
1137 ])
1138 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
1139         AC_LINK_IFELSE([#include <stdarg.h>
1140 #include <stdlib.h>
1141         void f (int i, ...) {
1142         va_list args1, args2;
1143         va_start (args1, i);
1144         __va_copy (args2, args1);
1145         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1146           exit (1);
1147         va_end (args1); va_end (args2);
1148         }
1149         int main() {
1150           f (0, 42);
1151           return 0;
1152         }],
1153         [glib_cv___va_copy=yes],
1154         [glib_cv___va_copy=no])
1155 ])
1156
1157 if test "x$glib_cv_va_copy" = "xyes"; then
1158   g_va_copy_func=va_copy
1159 else if test "x$glib_cv___va_copy" = "xyes"; then
1160   g_va_copy_func=__va_copy
1161 fi
1162 fi
1163
1164 if test -n "$g_va_copy_func"; then
1165   AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
1166 fi
1167
1168 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
1169         AC_TRY_RUN([#include <stdarg.h>
1170 #include <stdlib.h> 
1171         void f (int i, ...) {
1172         va_list args1, args2;
1173         va_start (args1, i);
1174         args2 = args1;
1175         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1176           exit (1);
1177         va_end (args1); va_end (args2);
1178         }
1179         int main() {
1180           f (0, 42);
1181           return 0;
1182         }],
1183         [glib_cv_va_val_copy=yes],
1184         [glib_cv_va_val_copy=no],
1185         [glib_cv_va_val_copy=yes])
1186 ])
1187
1188 if test "x$glib_cv_va_val_copy" = "xno"; then
1189   AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
1190 fi
1191
1192 dnl ***********************
1193 dnl *** g_module checks ***
1194 dnl ***********************
1195 G_MODULE_LIBS=
1196 G_MODULE_LIBS_EXTRA=
1197 G_MODULE_PLUGIN_LIBS=
1198 if test x"$glib_native_win32" = xyes; then
1199   dnl No use for this on Win32
1200   G_MODULE_LDFLAGS=
1201 else
1202   export SED
1203   G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1204 fi
1205 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
1206 G_MODULE_NEED_USCORE=0
1207 G_MODULE_BROKEN_RTLD_GLOBAL=0
1208 G_MODULE_HAVE_DLERROR=0
1209 dnl *** force native WIN32 shared lib loader 
1210 if test -z "$G_MODULE_IMPL"; then
1211   case "$host" in
1212   *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
1213   esac
1214 fi
1215 dnl *** force native AIX library loader
1216 dnl *** dlopen() filepath must be of the form /path/libname.a(libname.so)
1217 if test -z "$G_MODULE_IMPL"; then
1218   case "$host" in
1219   *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
1220   esac
1221 fi
1222 dnl *** dlopen() and dlsym() in system libraries
1223 if test -z "$G_MODULE_IMPL"; then
1224         AC_CHECK_FUNC(dlopen,
1225                       [AC_CHECK_FUNC(dlsym,
1226                                      [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1227                       [])
1228 fi
1229 dnl *** load_image (BeOS)
1230 if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
1231   AC_CHECK_LIB(root, load_image,
1232       [G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
1233       G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1234       G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
1235       G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
1236       [])
1237 fi   
1238 dnl *** NSLinkModule (dyld) in system libraries (Darwin)
1239 if test -z "$G_MODULE_IMPL"; then
1240         AC_CHECK_FUNC(NSLinkModule,
1241                       [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
1242                        G_MODULE_NEED_USCORE=1],
1243                       [])
1244 fi
1245 dnl *** dlopen() and dlsym() in libdl
1246 if test -z "$G_MODULE_IMPL"; then
1247         AC_CHECK_LIB(dl, dlopen,
1248                      [AC_CHECK_LIB(dl, dlsym,
1249                                    [G_MODULE_LIBS=-ldl
1250                                    G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
1251                      [])
1252 fi
1253 dnl *** shl_load() in libdld (HP-UX)
1254 if test -z "$G_MODULE_IMPL"; then
1255         AC_CHECK_LIB(dld, shl_load,
1256                 [G_MODULE_LIBS=-ldld
1257                 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
1258                 [])
1259 fi
1260 dnl *** additional checks for G_MODULE_IMPL_DL
1261 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
1262         LIBS_orig="$LIBS"
1263         LDFLAGS_orig="$LDFLAGS"
1264         LIBS="$G_MODULE_LIBS $LIBS"
1265         LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
1266 dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
1267         echo "void glib_plugin_test(void) { }" > plugin.c
1268         ${SHELL} ./libtool --mode=compile ${CC} -shared \
1269                 -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
1270         AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
1271                 glib_cv_rtldglobal_broken,[
1272                 AC_TRY_RUN([
1273 #include <dlfcn.h>
1274 #ifndef RTLD_GLOBAL
1275 #  define RTLD_GLOBAL 0
1276 #endif
1277 #ifndef RTLD_LAZY
1278 #  define RTLD_LAZY 0
1279 #endif
1280 int glib_plugin_test;
1281 int main () {
1282     void *handle, *global, *local;
1283     global = &glib_plugin_test;
1284     handle = dlopen ("./.libs/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
1285     if (!handle) return 0;
1286     local = dlsym (handle, "glib_plugin_test");
1287     return global == local;
1288 }                       ],
1289                         [glib_cv_rtldglobal_broken=no],
1290                         [glib_cv_rtldglobal_broken=yes],
1291                         [glib_cv_rtldglobal_broken=no])
1292                 rm -f plugin.c plugin.o plugin.lo .libs/plugin.o
1293                 rmdir .libs 2>/dev/null
1294         ])
1295         if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
1296                 G_MODULE_BROKEN_RTLD_GLOBAL=1
1297         else
1298                 G_MODULE_BROKEN_RTLD_GLOBAL=0
1299         fi
1300 dnl *** check whether we need preceeding underscores
1301         AC_CACHE_CHECK([for preceeding underscore in symbols],
1302                 glib_cv_uscore,[
1303                 AC_TRY_RUN([#include <dlfcn.h>
1304                 int glib_underscore_test (void) { return 42; }
1305                 int main() {
1306                   void *f1 = (void*)0, *f2 = (void*)0, *handle;
1307                   handle = dlopen ((void*)0, 0);
1308                   if (handle) {
1309                     f1 = dlsym (handle, "glib_underscore_test");
1310                     f2 = dlsym (handle, "_glib_underscore_test");
1311                   } return (!f2 || f1);
1312                 }],
1313                         [glib_cv_uscore=yes],
1314                         [glib_cv_uscore=no],
1315                         [])
1316                 rm -f plugin.c plugin.$ac_objext plugin.lo
1317         ])
1318         GLIB_ASSERT_SET(glib_cv_uscore)
1319         if test "x$glib_cv_uscore" = "xyes"; then
1320                 G_MODULE_NEED_USCORE=1
1321         else
1322                 G_MODULE_NEED_USCORE=0
1323         fi
1324
1325         LDFLAGS="$LDFLAGS_orig"
1326 dnl *** check for having dlerror()
1327         AC_CHECK_FUNC(dlerror,
1328                 [G_MODULE_HAVE_DLERROR=1],
1329                 [G_MODULE_HAVE_DLERROR=0])
1330         LIBS="$LIBS_orig"
1331 fi
1332 dnl *** done, have we got an implementation?
1333 if test -z "$G_MODULE_IMPL"; then
1334         G_MODULE_IMPL=0
1335         G_MODULE_SUPPORTED=false
1336 else
1337         G_MODULE_SUPPORTED=true
1338 fi
1339
1340 AC_MSG_CHECKING(for the suffix of shared libraries)
1341 export SED
1342 shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
1343 eval $shrext_cmds
1344 module=yes eval std_shrext=$shrext_cmds
1345 # chop the initial dot
1346 glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'`
1347 AC_MSG_RESULT(.$glib_gmodule_suffix)
1348 # any reason it may fail?
1349 if test "x$glib_gmodule_suffix" = x; then
1350         AC_MSG_ERROR(Cannot determine shared library suffix from libtool)
1351 fi
1352  
1353 AC_SUBST(G_MODULE_SUPPORTED)
1354 AC_SUBST(G_MODULE_IMPL)
1355 AC_SUBST(G_MODULE_LIBS)
1356 AC_SUBST(G_MODULE_LIBS_EXTRA)
1357 AC_SUBST(G_MODULE_PLUGIN_LIBS)
1358 AC_SUBST(G_MODULE_LDFLAGS)
1359 AC_SUBST(G_MODULE_HAVE_DLERROR)
1360 AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
1361 AC_SUBST(G_MODULE_NEED_USCORE)
1362 AC_SUBST(GLIB_DEBUG_FLAGS)
1363
1364 dnl **********************
1365 dnl *** g_spawn checks ***
1366 dnl **********************
1367
1368 AC_MSG_CHECKING(for gspawn implementation)
1369 case "$host" in
1370   *-*-mingw*)
1371     GSPAWN=gspawn-win32.lo
1372     ;;
1373   *)
1374     GSPAWN=gspawn.lo
1375     ;;    
1376 esac
1377 AC_MSG_RESULT($GSPAWN)
1378 AC_SUBST(GSPAWN)
1379
1380 dnl *************************
1381 dnl *** GIOChannel checks ***
1382 dnl *************************
1383
1384 AC_MSG_CHECKING(for GIOChannel implementation)
1385 case "$host" in
1386   *-*-mingw*)
1387     GIO=giowin32.lo
1388     ;;
1389   *)
1390     GIO=giounix.lo
1391     ;;    
1392 esac
1393 AC_MSG_RESULT($GIO)
1394 AC_SUBST(GIO)
1395
1396 dnl ****************************************
1397 dnl *** platform dependent source checks ***
1398 dnl ****************************************
1399
1400 AC_MSG_CHECKING(for platform-dependent source)
1401 case "$host" in
1402   *-*-cygwin*|*-*-mingw*)
1403     PLATFORMDEP=gwin32.lo
1404     ;;
1405   *)
1406     PLATFORMDEP=
1407     ;;    
1408 esac
1409 AC_MSG_RESULT($PLATFORMDEP)
1410 AC_SUBST(PLATFORMDEP)
1411
1412 AC_MSG_CHECKING([whether to compile timeloop])
1413 case "$host" in
1414   *-*-cygwin*|*-*-mingw*|*-*-minix)
1415     enable_timeloop=no
1416     ;;
1417   *)
1418     enable_timeloop=yes
1419     ;;    
1420 esac
1421 AC_MSG_RESULT($enable_timeloop)
1422 AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
1423
1424 AC_MSG_CHECKING([if building for some Win32 platform])
1425 case "$host" in
1426   *-*-mingw*|*-*-cygwin*)
1427     platform_win32=yes
1428     ;;
1429   *)
1430     platform_win32=no
1431     ;;
1432 esac
1433 AC_MSG_RESULT($platform_win32)
1434 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
1435
1436 dnl ***********************
1437 dnl *** g_thread checks ***
1438 dnl ***********************
1439
1440 AC_ARG_WITH(threads,
1441            [AC_HELP_STRING([--with-threads=@<:@none/posix/dce/win32@:>@],
1442                            [specify a thread implementation to use])],
1443            [if test "x$with_threads" = x; then
1444                 want_threads=yes
1445             else
1446                 want_threads=$with_threads
1447             fi],
1448            [want_threads=yes])
1449 if test "x$enable_threads" = "xno"; then
1450         want_threads=no
1451 fi
1452
1453 dnl error and warning message
1454 dnl *************************
1455
1456 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
1457                 computer. GLib will not have a default thread implementation."
1458
1459 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
1460                 platform (normally it's "_REENTRANT"). I'll not use any flag on
1461                 compilation now, but then your programs might not work.
1462                 Please provide information on how it is done on your system."
1463
1464 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
1465                 "
1466
1467 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
1468                 provide information on your thread implementation.
1469                 You can also run 'configure --disable-threads' 
1470                 to compile without thread support."
1471
1472 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
1473                 functions will not be MT-safe during their first call because
1474                 there is no working 'getpwuid_r' on your system."
1475
1476 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
1477                 because there is no 'localtime_r' on your system."
1478
1479 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
1480                 crude surrogate will be used. If you happen to know a 
1481                 yield function for your system, please inform the GLib 
1482                 developers."
1483
1484 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for 
1485                 threads on your system. Thus threads can only have the default 
1486                 priority. If you happen to know these main/max
1487                 priorities, please inform the GLib developers."
1488
1489 AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
1490                 linking threaded applications. As GLib cannot do that 
1491                 automatically, you will get an linkg error everytime you are 
1492                 not using the right compiler. In that case you have to relink 
1493                 with the right compiler. Ususally just '_r' is appended 
1494                 to the compiler name."
1495
1496 dnl determination of thread implementation
1497 dnl ***************************************
1498
1499 # have_threads=no   means no thread support
1500 # have_threads=none means no default thread implementation
1501
1502 have_threads=no
1503 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
1504                                 || test "x$want_threads" = xdce; then
1505         # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
1506         # -U_OSF_SOURCE is for Digital UNIX 4.0d
1507         GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
1508         glib_save_CPPFLAGS="$CPPFLAGS"
1509         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1510         if test "x$have_threads" = xno; then
1511                 AC_TRY_COMPILE([#include <pthread.h>],
1512                         [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1513                         have_threads=posix)
1514         fi
1515         if test "x$have_threads" = xno; then
1516                 AC_TRY_COMPILE([#include <pthread.h>],
1517                         [pthread_mutex_t m; 
1518                          pthread_mutex_init (&m, pthread_mutexattr_default);],
1519                         have_threads=dce)
1520         fi
1521         # Tru64Unix requires -pthread to find pthread.h. See #103020
1522         CPPFLAGS="$CPPFLAGS -pthread"
1523         if test "x$have_threads" = xno; then
1524         AC_TRY_COMPILE([#include <pthread.h>],
1525                        [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
1526                        have_threads=posix)
1527         fi
1528         CPPFLAGS="$glib_save_CPPFLAGS"
1529 fi
1530 if test "x$want_threads" = xyes || test "x$want_threads" = xwin32; then
1531         case $host in
1532                 *-*-mingw*)
1533                 have_threads=win32
1534                 ;;
1535         esac
1536 fi
1537 if test "x$want_threads" = xnone; then
1538         have_threads=none
1539 fi
1540
1541 AC_MSG_CHECKING(for thread implementation)
1542
1543 if test "x$have_threads" = xno && test "x$want_threads" != xno; then
1544         AC_MSG_RESULT(none available)
1545         AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
1546 else
1547         AC_MSG_RESULT($have_threads)
1548 fi
1549
1550
1551 dnl determination of G_THREAD_CFLAGS
1552 dnl ********************************
1553
1554 G_THREAD_LIBS=
1555 G_THREAD_LIBS_EXTRA=
1556 G_THREAD_CFLAGS=
1557
1558 dnl
1559 dnl Test program for basic POSIX threads functionality
1560 dnl
1561 m4_define([glib_thread_test],[
1562 #include <pthread.h> 
1563 int check_me = 0;
1564 void* func(void* data) {check_me = 42; return &check_me;}
1565 int main()
1566  { pthread_t t; 
1567    void *ret;
1568    pthread_create (&t, $1, func, 0);
1569    pthread_join (t, &ret);
1570    return (check_me != 42 || ret != &check_me);
1571 }])
1572
1573 dnl
1574 dnl Test program for sched_get_priority_min()
1575 dnl
1576 m4_define([glib_sched_priority_test],[
1577 #include <sched.h>
1578 #include <errno.h>
1579 int main() {
1580     errno = 0;
1581     return sched_get_priority_min(SCHED_OTHER)==-1
1582            && errno != 0;
1583 }])
1584
1585 if test x"$have_threads" != xno; then
1586
1587   if test x"$have_threads" = xposix; then
1588     # First we test for posix, whether -pthread or -pthreads do the trick as 
1589     # both CPPFLAG and LIBS. 
1590     # One of them does for most gcc versions and some other platforms/compilers
1591     # too and could be considered as the canonical way to go. 
1592     case $host in
1593       *-*-cygwin*|*-*-darwin*)
1594          # skip cygwin and darwin -pthread or -pthreads test
1595          ;;
1596       *-solaris*)
1597         # These compiler/linker flags work with both Sun Studio and gcc
1598         # Sun Studio expands -mt to -D_REENTRANT and -lthread
1599         # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
1600         G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
1601         G_THREAD_LIBS="-lpthread -lthread"
1602         ;;
1603       *)
1604         for flag in pthread pthreads mt; do
1605           glib_save_CFLAGS="$CFLAGS"
1606           CFLAGS="$CFLAGS -$flag"
1607           AC_TRY_RUN(glib_thread_test(0),
1608                      glib_flag_works=yes,
1609                      glib_flag_works=no,
1610                      [AC_LINK_IFELSE(glib_thread_test(0),
1611                                      glib_flag_works=yes,
1612                                      glib_flag_works=no)])
1613           CFLAGS="$glib_save_CFLAGS"
1614           if test $glib_flag_works = yes ; then
1615              G_THREAD_CFLAGS=-$flag
1616              G_THREAD_LIBS=-$flag
1617              break;
1618           fi
1619         done
1620          ;;
1621     esac 
1622   fi
1623
1624   if test x"$G_THREAD_CFLAGS" = x; then
1625
1626     # The canonical -pthread[s] does not work. Try something different.
1627
1628     case $host in
1629         *-aix*)
1630                 if test x"$GCC" = xyes; then
1631                         # GCC 3.0 and above needs -pthread. 
1632                         # Should be coverd by the case above.
1633                         # GCC 2.x and below needs -mthreads
1634                         G_THREAD_CFLAGS="-mthreads"             
1635                         G_THREAD_LIBS=$G_THREAD_CFLAGS
1636                 else 
1637                         # We are probably using the aix compiler. Normaly a 
1638                         # program would have to be compiled with the _r variant
1639                         # of the corresponding compiler, but we as GLib cannot 
1640                         # do that: but the good news is that for compiling the
1641                         # only difference is the added -D_THREAD_SAFE compile 
1642                         # option. This is according to the "C for AIX User's 
1643                         # Guide".
1644                         G_THREAD_CFLAGS="-D_THREAD_SAFE"
1645                 fi
1646                 ;;
1647         *-dg-dgux*)  # DG/UX
1648                 G_THREAD_CFLAGS="-D_REENTRANT -D_POSIX4A_DRAFT10_SOURCE"
1649                 ;;
1650         *-osf*)
1651                 # So we are using dce threads. posix threads are already 
1652                 # catched above.
1653                 G_THREAD_CFLAGS="-threads"
1654                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1655                 ;;
1656         *-sysv5uw7*) # UnixWare 7 
1657                 # We are not using gcc with -pthread. Catched above.
1658                 G_THREAD_CFLAGS="-Kthread"
1659                 G_THREAD_LIBS=$G_THREAD_CFLAGS
1660                 ;;
1661         *-mingw*)
1662                 # No flag needed when using MSVCRT.DLL
1663                 G_THREAD_CFLAGS=""
1664                 ;;
1665         *)
1666                 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
1667                 ;;
1668     esac
1669  
1670   fi
1671
1672     # if we are not finding the localtime_r function, then we probably are
1673     # not using the proper multithread flag
1674
1675     glib_save_CPPFLAGS="$CPPFLAGS"
1676     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1677
1678     # First we test, whether localtime_r is declared in time.h
1679     # directly. Then we test whether a macro localtime_r exists, in
1680     # which case localtime_r in the test program is replaced and thus
1681     # if we still find localtime_r in the output, it is not defined as 
1682     # a macro.
1683
1684     AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
1685       [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h> 
1686                                                            localtime_r(a,b)],
1687                    AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
1688
1689     CPPFLAGS="$glib_save_CPPFLAGS"
1690
1691     AC_MSG_CHECKING(thread related cflags)
1692     AC_MSG_RESULT($G_THREAD_CFLAGS)
1693     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
1694 fi
1695
1696 dnl determination of G_THREAD_LIBS
1697 dnl ******************************
1698
1699 mutex_has_default=no
1700 case $have_threads in
1701         posix|dce)
1702           glib_save_CPPFLAGS="$CPPFLAGS"
1703           CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1704           if test x"$G_THREAD_LIBS" = x; then
1705             case $host in
1706               *-aix*)
1707                 # We are not using gcc (would have set G_THREAD_LIBS) and thus 
1708                 # probably using the aix compiler.
1709                 AC_MSG_WARN($AIX_COMPILE_INFO)
1710                 ;;
1711               *)
1712                 G_THREAD_LIBS=error
1713                 glib_save_LIBS="$LIBS"
1714                 for thread_lib in "" pthread pthread32 pthreads thread dce; do
1715                         if test x"$thread_lib" = x; then
1716                                 add_thread_lib=""
1717                                 IN=""
1718                         else
1719                                 add_thread_lib="-l$thread_lib"
1720                                 IN=" in -l$thread_lib"
1721                         fi
1722                         if test x"$have_threads" = xposix; then
1723                                 defattr=0
1724                         else
1725                                 defattr=pthread_attr_default
1726                         fi
1727                         
1728                         LIBS="$add_thread_lib $glib_save_LIBS"
1729                         
1730                         AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
1731                         AC_TRY_RUN(glib_thread_test($defattr),
1732                                    glib_result=yes,
1733                                    glib_result=no,
1734                                    [AC_LINK_IFELSE(glib_thread_test($defattr),
1735                                                    glib_result=yes,
1736                                                    glib_result=no)])
1737                         AC_MSG_RESULT($glib_result)
1738                         
1739                         if test "$glib_result" = "yes" ; then
1740                           G_THREAD_LIBS="$add_thread_lib"
1741                           break
1742                         fi
1743                 done
1744                 if test "x$G_THREAD_LIBS" = xerror; then
1745                   AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1746                 fi 
1747                 LIBS="$glib_save_LIBS"
1748                 ;;
1749             esac
1750           fi
1751
1752           glib_save_LIBS="$LIBS"
1753           for thread_lib in "" rt rte; do
1754             if test x"$thread_lib" = x; then
1755               add_thread_lib=""
1756               IN=""
1757             else
1758               add_thread_lib="-l$thread_lib"
1759               IN=" in -l$thread_lib"
1760             fi
1761             LIBS="$add_thread_lib $glib_save_LIBS"
1762             
1763             AC_MSG_CHECKING(for sched_get_priority_min$IN)
1764             AC_TRY_RUN(glib_sched_priority_test,
1765                        glib_result=yes,
1766                        glib_result=no,
1767                        [AC_LINK_IFELSE(glib_sched_priority_test,
1768                                        glib_result=yes,
1769                                        glib_result=no)])
1770             AC_MSG_RESULT($glib_result)
1771
1772             if test "$glib_result" = "yes" ; then           
1773                G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
1774                posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
1775                posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
1776                break
1777             fi
1778           done
1779           LIBS="$glib_save_LIBS"
1780           mutex_has_default=yes
1781           mutex_default_type='pthread_mutex_t'
1782           mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
1783           mutex_header_file='pthread.h'
1784           if test "x$have_threads" = "xposix"; then
1785             g_threads_impl="POSIX"
1786           else
1787             g_threads_impl="DCE"
1788             have_threads="posix"
1789           fi
1790           AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
1791           CPPFLAGS="$glib_save_CPPFLAGS"
1792           ;;
1793         win32)
1794            g_threads_impl="WIN32"
1795            ;;
1796         none|no)
1797            g_threads_impl="NONE"
1798            ;;
1799         *)
1800            g_threads_impl="NONE"
1801            G_THREAD_LIBS=error
1802            ;;
1803 esac
1804
1805 if test "x$G_THREAD_LIBS" = xerror; then
1806         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
1807 fi
1808
1809 case $host in
1810   *-*-beos*)
1811     G_THREAD_LIBS="-lbe -lroot -lglib-2.0 "
1812     G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
1813     ;;
1814   *)
1815     ;;
1816 esac
1817
1818 AC_MSG_CHECKING(thread related libraries)
1819 AC_MSG_RESULT($G_THREAD_LIBS)
1820
1821 dnl check for mt safe function variants and some posix functions
1822 dnl ************************************************************
1823
1824 if test x"$have_threads" != xno; then
1825         glib_save_LIBS="$LIBS"
1826         # we are not doing the following for now, as this might require glib 
1827         # to always be linked with the thread libs on some platforms. 
1828         # LIBS="$LIBS $G_THREAD_LIBS"
1829         AC_CHECK_FUNCS(localtime_r)
1830         if test "$ac_cv_header_pwd_h" = "yes"; then
1831                 AC_CACHE_CHECK([for posix getpwuid_r],
1832                         ac_cv_func_posix_getpwuid_r,
1833                         [AC_TRY_RUN([
1834 #include <errno.h>
1835 #include <pwd.h>
1836 int main () { 
1837     char buffer[10000];
1838     struct passwd pwd, *pwptr = &pwd;
1839     int error;
1840     errno = 0;
1841     error = getpwuid_r (0, &pwd, buffer, 
1842                         sizeof (buffer), &pwptr);
1843    return (error < 0 && errno == ENOSYS) 
1844            || error == ENOSYS; 
1845 }                               ],
1846                                 [ac_cv_func_posix_getpwuid_r=yes],
1847                                 [ac_cv_func_posix_getpwuid_r=no])])
1848                 GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
1849                 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
1850                         AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
1851                                 [Have POSIX function getpwuid_r])
1852                 else
1853                         AC_CACHE_CHECK([for nonposix getpwuid_r],
1854                                 ac_cv_func_nonposix_getpwuid_r,
1855                                 [AC_TRY_LINK([#include <pwd.h>],
1856                                         [char buffer[10000];
1857                                         struct passwd pwd;
1858                                         getpwuid_r (0, &pwd, buffer, 
1859                                                         sizeof (buffer));],
1860                                         [ac_cv_func_nonposix_getpwuid_r=yes],
1861                                         [ac_cv_func_nonposix_getpwuid_r=no])])
1862                         GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
1863                         if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
1864                                 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
1865                                         [Have non-POSIX function getpwuid_r])
1866                         fi
1867                 fi
1868         fi
1869         LIBS="$G_THREAD_LIBS $LIBS"
1870         if test x"$have_threads" = xposix; then
1871                 glib_save_CPPFLAGS="$CPPFLAGS"
1872                 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1873                 dnl we might grow sizeof(pthread_t) later on, so use a dummy name here
1874                 GLIB_SIZEOF([#include <pthread.h>], pthread_t, system_thread)
1875                 # This is not AC_CHECK_FUNC to also work with function
1876                 # name mangling in header files.
1877                 AC_MSG_CHECKING(for pthread_attr_setstacksize)
1878                 AC_TRY_LINK([#include <pthread.h>],
1879                         [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
1880                         [AC_MSG_RESULT(yes)
1881                         AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
1882                                   [Have function pthread_attr_setstacksize])],
1883                         [AC_MSG_RESULT(no)])
1884                 AC_MSG_CHECKING(for minimal/maximal thread priority)
1885                 if test x"$posix_priority_min" = x; then
1886                         AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
1887                                 PX_PRIO_MIN],,[
1888                                 posix_priority_min=PX_PRIO_MIN
1889                                 posix_priority_max=PX_PRIO_MAX])
1890                 fi
1891                 if test x"$posix_priority_min" = x; then
1892                         # AIX
1893                         AC_EGREP_CPP(PTHREAD_PRIO_MIN,[#include <pthread.h>
1894                                 PTHREAD_PRIO_MIN],,[
1895                                 posix_priority_min=PTHREAD_PRIO_MIN
1896                                 posix_priority_max=PTHREAD_PRIO_MAX])
1897                 fi
1898                 if test x"$posix_priority_min" = x; then
1899                         AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
1900                                 PRI_OTHER_MIN],,[
1901                                 posix_priority_min=PRI_OTHER_MIN        
1902                                 posix_priority_max=PRI_OTHER_MAX])
1903                 fi
1904                 if test x"$posix_priority_min" = x; then
1905                         AC_MSG_RESULT(none found)
1906                         AC_MSG_WARN($POSIX_NO_PRIORITIES)
1907                         posix_priority_min=-1
1908                         posix_priority_max=-1
1909                 else
1910                         AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
1911                         AC_MSG_CHECKING(for pthread_setschedparam)
1912                         AC_TRY_LINK([#include <pthread.h>],
1913                           [pthread_t t; pthread_setschedparam(t, 0, NULL)],
1914                           [AC_MSG_RESULT(yes)
1915                         AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
1916                            AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])],
1917                           [AC_MSG_RESULT(no)
1918                            AC_MSG_WARN($POSIX_NO_PRIORITIES)])
1919                 fi
1920                 posix_yield_func=none
1921                 AC_MSG_CHECKING(for posix yield function)
1922                 for yield_func in sched_yield pthread_yield_np pthread_yield \
1923                                                         thr_yield; do
1924                         AC_TRY_LINK([#include <pthread.h>],
1925                                 [$yield_func()],
1926                                 [posix_yield_func="$yield_func"
1927                                 break])
1928                 done            
1929                 if test x"$posix_yield_func" = xnone; then
1930                         AC_MSG_RESULT(none found)
1931                         AC_MSG_WARN($POSIX_NO_YIELD)
1932                         posix_yield_func="g_usleep(1000)"
1933                 else
1934                         AC_MSG_RESULT($posix_yield_func)
1935                         posix_yield_func="$posix_yield_func()"
1936                 fi
1937                 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
1938                 CPPFLAGS="$glib_save_CPPFLAGS"
1939            
1940         elif test x"$have_threads" = xwin32; then
1941                 # It's a pointer to a private struct
1942                 GLIB_SIZEOF(,struct _GThreadData *, system_thread)
1943         fi
1944
1945         LIBS="$glib_save_LIBS"
1946
1947         # now spit out all the warnings.
1948         if test "$ac_cv_func_posix_getpwuid_r" != "yes" && 
1949            test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
1950                 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
1951         fi
1952         if test "$ac_cv_func_localtime_r" != "yes"; then
1953                 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
1954         fi
1955 fi      
1956
1957 if test x"$glib_cv_sizeof_system_thread" = x; then
1958    # use a pointer as a fallback.
1959    GLIB_SIZEOF(,void *, system_thread)
1960 fi
1961
1962 #
1963 # Hack to deal with:
1964
1965 #  a) GCC < 3.3 for Linux doesn't include -lpthread when
1966 #     building shared libraries with linux.
1967 #
1968 case $host in
1969   *-*-linux*)
1970     G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
1971     ;;
1972   *)     
1973     G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"   
1974     ;;
1975 esac
1976
1977 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
1978                    [Source file containing theread implementation])
1979 AC_SUBST(G_THREAD_CFLAGS)
1980 AC_SUBST(G_THREAD_LIBS)
1981 AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
1982 AC_SUBST(G_THREAD_LIBS_EXTRA)
1983
1984 dnl **********************************************
1985 dnl *** GDefaultMutex setup and initialization ***
1986 dnl **********************************************
1987 dnl
1988 dnl if mutex_has_default = yes, we also got
1989 dnl mutex_default_type, mutex_default_init and mutex_header_file
1990 if test $mutex_has_default = yes ; then
1991         glib_save_CPPFLAGS="$CPPFLAGS"
1992         glib_save_LIBS="$LIBS"
1993         LIBS="$G_THREAD_LIBS $LIBS"
1994         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1995         GLIB_SIZEOF([#include <$mutex_header_file>],
1996                     $mutex_default_type,
1997                     gmutex)
1998         GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
1999                            $mutex_default_type,
2000                            gmutex,
2001                            $glib_cv_sizeof_gmutex,
2002                            $mutex_default_init)
2003         if test x"$glib_cv_byte_contents_gmutex" = xno; then
2004                 mutex_has_default=no
2005         fi
2006         CPPFLAGS="$glib_save_CPPFLAGS"
2007         LIBS="$glib_save_LIBS"
2008 fi
2009
2010 AC_CHECK_FUNCS(clock_gettime, [], [
2011   AC_CHECK_LIB(rt, clock_gettime, [
2012     AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
2013     G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
2014     G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
2015   ])
2016 ])
2017
2018 AC_CACHE_CHECK(for monotonic clocks,
2019     glib_cv_monotonic_clock,AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2020 #include <time.h>
2021 #include <unistd.h>
2022 int main() {
2023 #if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
2024         #error No monotonic clock
2025 #endif
2026         return 0;
2027 }
2028 ]])],glib_cv_monotonic_clock=yes,glib_cv_monotonic_clock=no))
2029 if test "$glib_cv_monotonic_clock" = "yes"; then
2030   AC_DEFINE(HAVE_MONOTONIC_CLOCK,1,[Have a monotonic clock])
2031 fi
2032
2033
2034 dnl ********************************
2035 dnl *** g_atomic_* tests for gcc ***
2036 dnl ********************************
2037
2038 AC_MSG_CHECKING([whether to use assembler code for atomic operations])
2039
2040 if test x"$GCC" = xyes; then
2041   case $host_cpu in
2042     i386)
2043       AC_MSG_RESULT([none])
2044       glib_memory_barrier_needed=no
2045       ;;
2046     i?86)
2047       AC_MSG_RESULT([i486])
2048       AC_DEFINE_UNQUOTED(G_ATOMIC_I486, 1,
2049                          [i486 atomic implementation])
2050       glib_memory_barrier_needed=no
2051       ;;
2052     sparc*)
2053       SPARCV9_WARNING="Try to rerun configure with CFLAGS='-mcpu=v9',
2054                 when you are using a sparc with v9 instruction set (most
2055                 sparcs nowadays). This will make the code for atomic
2056                 operations much faster. The resulting code will not run
2057                 on very old sparcs though."
2058
2059       AC_LINK_IFELSE([[
2060         main () 
2061         {
2062           int tmp1, tmp2, tmp3;
2063           __asm__ __volatile__("casx [%2], %0, %1" 
2064                                : "=&r" (tmp1), "=&r" (tmp2) : "r" (&tmp3));
2065         }]],
2066         AC_MSG_RESULT([sparcv9])
2067         AC_DEFINE_UNQUOTED(G_ATOMIC_SPARCV9, 1,
2068                            [sparcv9 atomic implementation]),
2069         AC_MSG_RESULT([no])
2070         AC_MSG_WARN([[$SPARCV9_WARNING]]))
2071       glib_memory_barrier_needed=yes
2072       ;;
2073     alpha*)
2074       AC_MSG_RESULT([alpha])
2075       AC_DEFINE_UNQUOTED(G_ATOMIC_ALPHA, 1,
2076                          [alpha atomic implementation])
2077       glib_memory_barrier_needed=yes
2078       ;;
2079     x86_64)
2080       AC_MSG_RESULT([x86_64])
2081       AC_DEFINE_UNQUOTED(G_ATOMIC_X86_64, 1,
2082                          [x86_64 atomic implementation])
2083       glib_memory_barrier_needed=no
2084      ;;
2085     powerpc*)
2086       AC_MSG_RESULT([powerpc])
2087       AC_DEFINE_UNQUOTED(G_ATOMIC_POWERPC, 1,
2088                          [powerpc atomic implementation])
2089       glib_memory_barrier_needed=yes
2090       ;;        
2091     ia64)
2092       AC_MSG_RESULT([ia64])
2093       AC_DEFINE_UNQUOTED(G_ATOMIC_IA64, 1,
2094                          [ia64 atomic implementation])
2095       glib_memory_barrier_needed=yes
2096       ;;        
2097     s390|s390x)
2098       AC_MSG_RESULT([s390])
2099       AC_DEFINE_UNQUOTED(G_ATOMIC_S390, 1,
2100                          [s390 atomic implementation])
2101       glib_memory_barrier_needed=no
2102       ;;        
2103     *)
2104       AC_MSG_RESULT([none])
2105       glib_memory_barrier_needed=yes
2106       ;;
2107   esac
2108 fi
2109
2110 dnl ****************************************
2111 dnl *** GLib POLL* compatibility defines ***
2112 dnl ****************************************
2113
2114 glib_poll_includes=["
2115 #include <sys/types.h>
2116 #include <sys/poll.h>
2117 "]
2118
2119 if test $ac_cv_header_sys_types_h = yes &&
2120    test $ac_cv_header_sys_poll_h = yes ; then
2121   glib_failed=false
2122   GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
2123   GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
2124   GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
2125   GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
2126   GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
2127   GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
2128   if $glib_failed ; then
2129     AC_MSG_ERROR([Could not determine values for POLL* constants])
2130   fi
2131 else
2132   glib_cv_value_POLLIN=1
2133   glib_cv_value_POLLOUT=4
2134   glib_cv_value_POLLPRI=2
2135   glib_cv_value_POLLERR=8
2136   glib_cv_value_POLLHUP=16
2137   glib_cv_value_POLLNVAL=32
2138 fi
2139
2140 AC_MSG_CHECKING([for broken poll])
2141 AC_RUN_IFELSE([AC_LANG_SOURCE([[
2142         #include <stdlib.h>
2143         #include <fcntl.h>
2144         #include <poll.h>
2145         #ifdef HAVE_SYS_POLL_H
2146         #include <sys/poll.h>
2147         #endif
2148         int main(void) {
2149           struct pollfd fds[1];
2150           int fd;
2151           fd = open("/dev/null", 1);
2152           fds[0].fd = fd;
2153           fds[0].events = POLLIN;
2154           fds[0].revents = 0;
2155           if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
2156                 exit(1);  /* Does not work for devices -- fail */
2157           }
2158           exit(0);
2159         }]])],
2160   [broken_poll=no],
2161   [broken_poll=yes
2162    AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
2163   [broken_poll="no (cross compiling)"])
2164 AC_MSG_RESULT($broken_poll)
2165
2166 dnl *********************
2167 dnl *** GRegex checks ***
2168 dnl *********************
2169 PCRE_REQUIRED_VERSION=7.0
2170
2171 # Check if we should compile GRegex
2172 AC_ARG_ENABLE(regex, AC_HELP_STRING([--disable-regex],
2173               [disable the compilation of GRegex]),
2174 [case "${enableval}" in
2175   yes) enable_regex=true ;;
2176   no)  enable_regex=false ;;
2177   *) AC_MSG_ERROR(bad value ${enableval} for --enable-regex) ;;
2178 esac],
2179 [enable_regex=true])
2180
2181 AM_CONDITIONAL(ENABLE_REGEX, $enable_regex)
2182
2183 if test x$enable_regex = xtrue; then
2184   # Check if we should use the internal or the system-supplied pcre
2185   AC_ARG_WITH(pcre,
2186              [AC_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
2187                              [specify whether to use the internal or the
2188                               system-supplied PCRE library])])
2189
2190   AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
2191
2192   if test "x$with_pcre" = xsystem; then
2193     PKG_CHECK_MODULES(PCRE,
2194                       libpcre >= $PCRE_REQUIRED_VERSION)
2195     AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
2196                    CFLAGS="$CFLAGS $PCRE_CFLAGS" LDFLAGS="$LDFLAGS $PCRE_LIBS"
2197                    AC_TRY_RUN([#include <pcre.h>
2198                                int main () {
2199                                  int support;
2200                                  pcre_config (PCRE_CONFIG_UTF8, &support);
2201                                  if (!support)
2202                                    return 1;
2203                                  pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
2204                                  if (!support)
2205                                    return 1;
2206                                  return 0;
2207                                }],
2208                    glib_cv_pcre_has_unicode=yes,
2209                    glib_cv_pcre_has_unicode=no,
2210                    glib_cv_pcre_has_unicode=yes)])
2211     if test "$glib_cv_pcre_has_unicode" = "no"; then
2212       AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
2213     fi
2214     AC_SUBST(PCRE_CFLAGS)
2215     AC_SUBST(PCRE_LIBS)
2216     AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
2217   else
2218     # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
2219     if test x"$GCC" = xyes; then
2220       AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
2221       save_CFLAGS="$CFLAGS"
2222       CFLAGS="$CFLAGS -Wno-pointer-sign"
2223       AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
2224                             AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
2225       CFLAGS="$save_CFLAGS"
2226     fi
2227   fi
2228   AC_SUBST(PCRE_WARN_CFLAGS)
2229 else
2230   AM_CONDITIONAL(USE_SYSTEM_PCRE, false])
2231 fi
2232
2233 dnl **********************
2234 dnl *** Win32 API libs ***
2235 dnl **********************
2236
2237 case $host in
2238   *-*-cygwin*)
2239         G_LIBS_EXTRA="-luser32 -lkernel32"
2240     ;;
2241   *-*-mingw*)
2242         G_LIBS_EXTRA="-lws2_32 -lole32"
2243     ;;
2244   *)
2245         G_LIBS_EXTRA=""
2246     ;;
2247 esac
2248 AC_SUBST(G_LIBS_EXTRA)
2249
2250 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
2251 dnl since we need it for g_iconv()
2252
2253 AC_MSG_CHECKING([for EILSEQ])
2254 AC_TRY_COMPILE([
2255 #include <errno.h>
2256 ],
2257 [
2258 int error = EILSEQ;
2259 ], have_eilseq=yes, have_eilseq=no);
2260 AC_MSG_RESULT($have_eilseq)
2261
2262 dnl ******************************************************************
2263 dnl *** Look for glib-genmarshal in PATH if we are cross-compiling ***
2264 dnl ******************************************************************
2265
2266 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
2267
2268 if test $cross_compiling = yes; then
2269   AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
2270   if test x$GLIB_GENMARSHAL = xno; then
2271     AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
2272   fi
2273 fi
2274
2275 dnl **************************
2276 dnl *** Checks for gtk-doc ***
2277 dnl **************************
2278
2279 GTK_DOC_CHECK([1.4])
2280
2281 AC_ARG_ENABLE(man,
2282               [AC_HELP_STRING([--enable-man],
2283                               [regenerate man pages from Docbook [default=no]])],enable_man=yes,
2284               enable_man=no)
2285
2286 if test "${enable_man}" != no; then
2287 dnl
2288 dnl Check for xsltproc
2289 dnl
2290 AC_PATH_PROG([XSLTPROC], [xsltproc])
2291   if test -z "$XSLTPROC"; then
2292     enable_man=no
2293   fi
2294
2295   dnl check for DocBook DTD and stylesheets in the local catalog.
2296   JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
2297      [DocBook XML DTD V4.1.2],,enable_man=no)
2298   JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
2299      [DocBook XSL Stylesheets],,enable_man=no)
2300 fi
2301
2302 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
2303
2304 dnl ******************************
2305 dnl *** output the whole stuff ***
2306 dnl ******************************
2307
2308 dnl this section will only be run if config.status is invoked with no
2309 dnl arguments, or with "glibconfig.h" as an argument.
2310 AC_CONFIG_COMMANDS([glibconfig.h],
2311 [
2312         outfile=glibconfig.h-tmp
2313         cat > $outfile <<\_______EOF
2314 /* glibconfig.h
2315  *
2316  * This is a generated file.  Please modify 'configure.in'
2317  */
2318
2319 #ifndef __G_LIBCONFIG_H__
2320 #define __G_LIBCONFIG_H__
2321
2322 #include <glib/gmacros.h>
2323
2324 _______EOF
2325
2326         if test x$glib_limits_h = xyes; then
2327           echo '#include <limits.h>' >> $outfile
2328         fi
2329         if test x$glib_float_h = xyes; then
2330           echo '#include <float.h>' >> $outfile
2331         fi
2332         if test x$glib_values_h = xyes; then
2333           echo '#include <values.h>' >> $outfile
2334         fi
2335         if test "$glib_header_alloca_h" = "yes"; then
2336           echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
2337         fi
2338         if test x$glib_sys_poll_h = xyes; then
2339           echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
2340         fi
2341
2342         cat >> $outfile <<_______EOF
2343
2344 G_BEGIN_DECLS
2345
2346 #define G_MINFLOAT      $glib_mf
2347 #define G_MAXFLOAT      $glib_Mf
2348 #define G_MINDOUBLE     $glib_md
2349 #define G_MAXDOUBLE     $glib_Md
2350 #define G_MINSHORT      $glib_ms
2351 #define G_MAXSHORT      $glib_Ms
2352 #define G_MAXUSHORT     $glib_Mus
2353 #define G_MININT        $glib_mi
2354 #define G_MAXINT        $glib_Mi
2355 #define G_MAXUINT       $glib_Mui
2356 #define G_MINLONG       $glib_ml
2357 #define G_MAXLONG       $glib_Ml
2358 #define G_MAXULONG      $glib_Mul
2359
2360 _______EOF
2361
2362
2363         ### this should always be true in a modern C/C++ compiler
2364         cat >>$outfile <<_______EOF
2365 typedef signed char gint8;
2366 typedef unsigned char guint8;
2367 _______EOF
2368
2369
2370         if test -n "$gint16"; then
2371           cat >>$outfile <<_______EOF
2372 typedef signed $gint16 gint16;
2373 typedef unsigned $gint16 guint16;
2374 #define G_GINT16_MODIFIER $gint16_modifier
2375 #define G_GINT16_FORMAT $gint16_format
2376 #define G_GUINT16_FORMAT $guint16_format
2377 _______EOF
2378         fi
2379
2380
2381         if test -n "$gint32"; then
2382           cat >>$outfile <<_______EOF
2383 typedef signed $gint32 gint32;
2384 typedef unsigned $gint32 guint32;
2385 #define G_GINT32_MODIFIER $gint32_modifier
2386 #define G_GINT32_FORMAT $gint32_format
2387 #define G_GUINT32_FORMAT $guint32_format
2388 _______EOF
2389         fi
2390
2391         cat >>$outfile <<_______EOF
2392 #define G_HAVE_GINT64 1          /* deprecated, always true */
2393
2394 ${glib_extension}typedef signed $gint64 gint64;
2395 ${glib_extension}typedef unsigned $gint64 guint64;
2396
2397 #define G_GINT64_CONSTANT(val)  $gint64_constant
2398 #define G_GUINT64_CONSTANT(val) $guint64_constant
2399 _______EOF
2400
2401         if test x$gint64_format != x ; then
2402           cat >>$outfile <<_______EOF
2403 #define G_GINT64_MODIFIER $gint64_modifier
2404 #define G_GINT64_FORMAT $gint64_format
2405 #define G_GUINT64_FORMAT $guint64_format
2406 _______EOF
2407         else
2408           cat >>$outfile <<_______EOF
2409 #undef G_GINT64_MODIFIER
2410 #undef G_GINT64_FORMAT
2411 #undef G_GUINT64_FORMAT
2412 _______EOF
2413         fi           
2414
2415         cat >>$outfile <<_______EOF
2416
2417 #define GLIB_SIZEOF_VOID_P $glib_void_p
2418 #define GLIB_SIZEOF_LONG   $glib_long
2419 #define GLIB_SIZEOF_SIZE_T $glib_size_t
2420
2421 _______EOF
2422
2423         cat >>$outfile <<_______EOF
2424 typedef signed $glib_size_type_define gssize;
2425 typedef unsigned $glib_size_type_define gsize;
2426 #define G_GSIZE_MODIFIER $gsize_modifier
2427 #define G_GSSIZE_FORMAT $gssize_format
2428 #define G_GSIZE_FORMAT $gsize_format
2429
2430 #define G_MAXSIZE       G_MAXU$glib_msize_type
2431 _______EOF
2432
2433         if test -z "$glib_unknown_void_p"; then
2434           cat >>$outfile <<_______EOF
2435
2436 #define GPOINTER_TO_INT(p)      ((gint)  ${glib_gpi_cast} (p))
2437 #define GPOINTER_TO_UINT(p)     ((guint) ${glib_gpui_cast} (p))
2438
2439 #define GINT_TO_POINTER(i)      ((gpointer) ${glib_gpi_cast} (i))
2440 #define GUINT_TO_POINTER(u)     ((gpointer) ${glib_gpui_cast} (u))
2441 _______EOF
2442         else
2443           echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
2444         fi
2445
2446
2447
2448         cat >>$outfile <<_______EOF
2449 $glib_atexit
2450 $glib_memmove
2451 $glib_defines
2452 $glib_os
2453
2454 $glib_vacopy
2455
2456 #ifdef  __cplusplus
2457 #define G_HAVE_INLINE   1
2458 #else   /* !__cplusplus */
2459 $glib_inline
2460 #endif  /* !__cplusplus */
2461
2462 #ifdef  __cplusplus
2463 #define G_CAN_INLINE    1
2464 _______EOF
2465
2466         if test x$g_can_inline = xyes ; then
2467                 cat >>$outfile <<_______EOF
2468 #else   /* !__cplusplus */
2469 #define G_CAN_INLINE    1
2470 _______EOF
2471         fi
2472
2473         cat >>$outfile <<_______EOF
2474 #endif
2475
2476 _______EOF
2477
2478         if test x$g_have_iso_c_varargs = xyes ; then
2479                 cat >>$outfile <<_______EOF
2480 #ifndef __cplusplus
2481 # define G_HAVE_ISO_VARARGS 1
2482 #endif
2483 _______EOF
2484         fi
2485         if test x$g_have_iso_cxx_varargs = xyes ; then
2486                 cat >>$outfile <<_______EOF
2487 #ifdef __cplusplus
2488 # define G_HAVE_ISO_VARARGS 1
2489 #endif
2490 _______EOF
2491         fi
2492         if test x$g_have_gnuc_varargs = xyes ; then
2493                 cat >>$outfile <<_______EOF
2494
2495 /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
2496  * is passed ISO vararg support is turned off, and there is no work
2497  * around to turn it on, so we unconditionally turn it off.
2498  */
2499 #if __GNUC__ == 2 && __GNUC_MINOR__ == 95
2500 #  undef G_HAVE_ISO_VARARGS
2501 #endif
2502
2503 #define G_HAVE_GNUC_VARARGS 1
2504 _______EOF
2505         fi
2506
2507         case x$g_stack_grows in
2508         xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
2509         *)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
2510         esac
2511
2512
2513         echo >>$outfile
2514         if test x$g_have_eilseq = xno; then
2515                 cat >>$outfile <<_______EOF
2516 #ifndef EILSEQ
2517 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
2518  * The correspondence between this and the corresponding definition
2519  * in libiconv is essential.
2520  */
2521 #  define EILSEQ ENOENT
2522 #endif
2523 _______EOF
2524
2525         fi
2526
2527         if test x$g_have_gnuc_visibility = xyes; then
2528                 cat >>$outfile <<_______EOF
2529 #define G_HAVE_GNUC_VISIBILITY 1
2530 _______EOF
2531         fi
2532                 cat >>$outfile <<_______EOF
2533 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
2534 #define G_GNUC_INTERNAL __hidden
2535 #elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
2536 #define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
2537 #else
2538 #define G_GNUC_INTERNAL
2539 #endif
2540 _______EOF
2541
2542
2543         echo >>$outfile
2544         if test x$g_mutex_has_default = xyes; then
2545                 cat >>$outfile <<_______EOF
2546 $g_enable_threads_def G_THREADS_ENABLED
2547 #define G_THREADS_IMPL_$g_threads_impl_def
2548 typedef struct _GStaticMutex GStaticMutex;
2549 struct _GStaticMutex
2550 {
2551   struct _GMutex *runtime_mutex;
2552   union {
2553     char   pad[[$g_mutex_sizeof]];
2554     double dummy_double;
2555     void  *dummy_pointer;
2556     long   dummy_long;
2557   } static_mutex;
2558 };
2559 #define G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
2560 #define g_static_mutex_get_mutex(mutex) \\
2561   (g_thread_use_default_impl ? ((GMutex*) ((mutex)->static_mutex.pad)) : \\
2562    g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
2563 _______EOF
2564         else
2565                 cat >>$outfile <<_______EOF
2566 $g_enable_threads_def G_THREADS_ENABLED
2567 #define G_THREADS_IMPL_$g_threads_impl_def
2568 typedef struct _GMutex* GStaticMutex;
2569 #define G_STATIC_MUTEX_INIT NULL
2570 #define g_static_mutex_get_mutex(mutex) \\
2571   (g_static_mutex_get_mutex_impl_shortcut (mutex))
2572 _______EOF
2573         fi
2574
2575         cat >>$outfile <<_______EOF
2576 /* This represents a system thread as used by the implementation. An
2577  * alien implementaion, as loaded by g_thread_init can only count on
2578  * "sizeof (gpointer)" bytes to store their info. We however need more
2579  * for some of our native implementations. */
2580 typedef union _GSystemThread GSystemThread;
2581 union _GSystemThread
2582 {
2583   char   data[[$g_system_thread_sizeof]];
2584   double dummy_double;
2585   void  *dummy_pointer;
2586   long   dummy_long;
2587 };
2588 _______EOF
2589         if test x"$g_memory_barrier_needed" != xno; then
2590           echo >>$outfile
2591           echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
2592         fi
2593
2594         echo >>$outfile
2595         g_bit_sizes="16 32 64"
2596         for bits in $g_bit_sizes; do
2597           cat >>$outfile <<_______EOF
2598 #define GINT${bits}_TO_${g_bs_native}(val)      ((gint${bits}) (val))
2599 #define GUINT${bits}_TO_${g_bs_native}(val)     ((guint${bits}) (val))
2600 #define GINT${bits}_TO_${g_bs_alien}(val)       ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
2601 #define GUINT${bits}_TO_${g_bs_alien}(val)      (GUINT${bits}_SWAP_LE_BE (val))
2602 _______EOF
2603         done
2604
2605         cat >>$outfile <<_______EOF
2606 #define GLONG_TO_LE(val)        ((glong) GINT${glongbits}_TO_LE (val))
2607 #define GULONG_TO_LE(val)       ((gulong) GUINT${glongbits}_TO_LE (val))
2608 #define GLONG_TO_BE(val)        ((glong) GINT${glongbits}_TO_BE (val))
2609 #define GULONG_TO_BE(val)       ((gulong) GUINT${glongbits}_TO_BE (val))
2610 #define GINT_TO_LE(val)         ((gint) GINT${gintbits}_TO_LE (val))
2611 #define GUINT_TO_LE(val)        ((guint) GUINT${gintbits}_TO_LE (val))
2612 #define GINT_TO_BE(val)         ((gint) GINT${gintbits}_TO_BE (val))
2613 #define GUINT_TO_BE(val)        ((guint) GUINT${gintbits}_TO_BE (val))
2614 #define G_BYTE_ORDER $g_byte_order
2615
2616 #define GLIB_SYSDEF_POLLIN =$g_pollin
2617 #define GLIB_SYSDEF_POLLOUT =$g_pollout
2618 #define GLIB_SYSDEF_POLLPRI =$g_pollpri
2619 #define GLIB_SYSDEF_POLLHUP =$g_pollhup
2620 #define GLIB_SYSDEF_POLLERR =$g_pollerr
2621 #define GLIB_SYSDEF_POLLNVAL =$g_pollnval
2622
2623 #define G_MODULE_SUFFIX "$g_module_suffix"
2624
2625 typedef $g_pid_type GPid;
2626
2627 G_END_DECLS
2628
2629 #endif /* GLIBCONFIG_H */
2630 _______EOF
2631
2632
2633         if cmp -s $outfile glibconfig.h; then
2634           AC_MSG_NOTICE([glibconfig.h is unchanged])
2635           rm -f $outfile
2636         else
2637           mv $outfile glibconfig.h
2638         fi
2639 ],[
2640
2641 # Note that if two cases are the same, case goes with the first one.
2642 # Note also that this is inside an AC_OUTPUT_COMMAND.  We do not depend
2643 # on variable expansion in case labels.  Look at the generated config.status
2644 # for a hint.
2645
2646 if test "x${ac_cv_working_alloca_h+set}" = xset ; then
2647   glib_header_alloca_h="$ac_cv_working_alloca_h"
2648 else
2649   glib_header_alloca_h="$ac_cv_header_alloca_h"
2650 fi
2651
2652 case xyes in
2653 x$ac_cv_header_float_h)
2654   glib_float_h=yes
2655   glib_mf=FLT_MIN glib_Mf=FLT_MAX
2656   glib_md=DBL_MIN glib_Md=DBL_MAX
2657   ;;
2658 x$ac_cv_header_values_h)
2659   glib_values_h=yes
2660   glib_mf=MINFLOAT  glib_Mf=MAXFLOAT
2661   glib_md=MINDOUBLE glib_Md=MAXDOUBLE
2662   ;;
2663 esac
2664
2665 case xyes in
2666 x$ac_cv_header_limits_h)
2667   glib_limits_h=yes
2668   glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
2669   glib_mi=INT_MIN  glib_Mi=INT_MAX  glib_Mui=UINT_MAX
2670   glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
2671   ;;
2672 x$ac_cv_header_values_h)
2673   glib_values_h=yes
2674   glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
2675   glib_mi=MININT   glib_Mi=MAXINT   glib_Mui="(((guint)G_MAXINT)*2+1)"
2676   glib_ml=MINLONG  glib_Ml=MAXLONG  glib_Mul="(((gulong)G_MAXLONG)*2+1)"
2677   ;;
2678 esac
2679
2680 if test x$ac_cv_header_sys_poll_h = xyes ; then
2681   glib_sys_poll_h=yes
2682 fi
2683
2684 case 2 in
2685 $ac_cv_sizeof_short)            
2686   gint16=short
2687   gint16_modifier='"h"'
2688   gint16_format='"hi"'
2689   guint16_format='"hu"'
2690   ;;
2691 $ac_cv_sizeof_int)              
2692   gint16=int
2693   gint16_modifier='""'
2694   gint16_format='"i"'
2695   guint16_format='"u"'
2696   ;;
2697 esac
2698 case 4 in
2699 $ac_cv_sizeof_short)            
2700   gint32=short
2701   gint32_modifier='"h"'
2702   gint32_format='"hi"'
2703   guint32_format='"hu"'
2704   ;;
2705 $ac_cv_sizeof_int)              
2706   gint32=int
2707   gint32_modifier='""'
2708   gint32_format='"i"'
2709   guint32_format='"u"'
2710   ;;
2711 $ac_cv_sizeof_long)             
2712   gint32=long
2713   gint32_modifier='"l"'
2714   gint32_format='"li"'
2715   guint32_format='"lu"'
2716   ;;
2717 esac
2718 case 8 in
2719 $ac_cv_sizeof_int)
2720   gint64=int
2721   gint64_modifier='""'
2722   gint64_format='"i"'
2723   guint64_format='"u"'
2724   glib_extension=
2725   gint64_constant='(val)'
2726   guint64_constant='(val)'
2727   ;;
2728 $ac_cv_sizeof_long)
2729   gint64=long
2730   gint64_modifier='"l"'
2731   gint64_format='"li"'
2732   guint64_format='"lu"'
2733   glib_extension=
2734   gint64_constant='(val##L)'
2735   guint64_constant='(val##UL)'
2736   ;;
2737 $ac_cv_sizeof_long_long)
2738   gint64='long long'
2739   if test -n "$glib_cv_long_long_format"; then
2740     gint64_modifier='"'$glib_cv_long_long_format'"'
2741     gint64_format='"'$glib_cv_long_long_format'i"'
2742     guint64_format='"'$glib_cv_long_long_format'u"'
2743   fi
2744   glib_extension='G_GNUC_EXTENSION '
2745   gint64_constant='(G_GNUC_EXTENSION (val##LL))'
2746   guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
2747   ;;
2748 $ac_cv_sizeof___int64)
2749   gint64='__int64'
2750   if test -n "$glib_cv_long_long_format"; then
2751     gint64_modifier='"'$glib_cv_long_long_format'"'
2752     gint64_format='"'$glib_cv_long_long_format'i"'
2753     guint64_format='"'$glib_cv_long_long_format'u"'
2754   fi
2755   glib_extension=
2756   gint64_constant='(val##i64)'
2757   guint64_constant='(val##ui64)'
2758   ;;
2759 esac
2760 glib_size_t=$ac_cv_sizeof_size_t
2761 glib_size_type_define=$glib_size_type
2762 glib_void_p=$ac_cv_sizeof_long
2763 glib_long=$ac_cv_sizeof_void_p
2764
2765 case $glib_size_type in
2766 short)
2767   gsize_modifier='"h"'
2768   gsize_format='"hu"'
2769   gssize_format='"hi"'
2770   glib_msize_type='SHRT'
2771   ;;
2772 int)
2773   gsize_modifier='""'
2774   gsize_format='"u"'
2775   gssize_format='"i"'
2776   glib_msize_type='INT'
2777   ;;
2778 long)
2779   gsize_modifier='"l"'
2780   gsize_format='"lu"'
2781   gssize_format='"li"'
2782   glib_msize_type='LONG'
2783   ;;
2784 esac
2785
2786 gintbits=`expr $ac_cv_sizeof_int \* 8`
2787 glongbits=`expr $ac_cv_sizeof_long \* 8`
2788
2789
2790 case $ac_cv_sizeof_void_p in
2791 $ac_cv_sizeof_int)      glib_gpi_cast=''        glib_gpui_cast=''         ;;
2792 $ac_cv_sizeof_long)     glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
2793 *)                      glib_unknown_void_p=yes ;;
2794 esac
2795
2796
2797 case xyes in
2798 x$ac_cv_func_atexit)
2799   glib_atexit="
2800 #ifdef NeXT /* @#%@! NeXTStep */
2801 # define g_ATEXIT(proc) (!atexit (proc))
2802 #else
2803 # define g_ATEXIT(proc) (atexit (proc))
2804 #endif"
2805   ;;
2806 x$ac_cv_func_on_exit)
2807   glib_atexit="
2808 #define g_ATEXIT(proc)  (on_exit ((void (*)(int, void*))(proc), NULL))"
2809   ;;
2810 esac
2811
2812 case xyes in
2813 x$ac_cv_func_memmove)
2814   glib_memmove='
2815 #define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END'
2816   ;;
2817 x$glib_cv_working_bcopy)
2818   glib_memmove="
2819 /* memmove isn't available, but bcopy can copy overlapping memory regions */
2820 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
2821   ;;
2822 *)  
2823   glib_memmove="
2824 /* memmove isn't found and bcopy can't copy overlapping memory regions, 
2825  * so we have to roll our own copy routine. */
2826 void g_memmove (void* dest, const void * src, unsigned long len);"
2827   ;;
2828 esac
2829
2830 glib_defines="
2831 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
2832 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
2833 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
2834 "
2835
2836 case xyes in
2837 x$glib_cv_va_copy)      glib_vacopy='#define G_VA_COPY  va_copy' ;;
2838 x$glib_cv___va_copy)    glib_vacopy='#define G_VA_COPY  __va_copy' ;;
2839 *)                      glib_vacopy=''
2840 esac
2841
2842 if test x$glib_cv_va_val_copy = xno; then
2843   glib_vacopy="\$glib_vacopy
2844 #define G_VA_COPY_AS_ARRAY 1"
2845 fi
2846
2847 if test x$glib_cv_hasinline = xyes; then
2848     glib_inline='#define G_HAVE_INLINE 1'
2849 fi
2850 if test x$glib_cv_has__inline = xyes; then
2851     glib_inline="\$glib_inline
2852 #define G_HAVE___INLINE 1"
2853 fi
2854 if test x$glib_cv_has__inline__ = xyes; then
2855     glib_inline="\$glib_inline
2856 #define G_HAVE___INLINE__ 1"
2857 fi
2858
2859 g_have_gnuc_varargs=$g_have_gnuc_varargs
2860 g_have_iso_c_varargs=$g_have_iso_c_varargs
2861 g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
2862
2863 g_can_inline=$g_can_inline
2864 g_have_gnuc_visibility=$g_have_gnuc_visibility
2865 g_have_sunstudio_visibility=$g_have_sunstudio_visibility
2866
2867 case xyes in
2868 x$ac_cv_c_bigendian)
2869   g_byte_order=G_BIG_ENDIAN
2870   g_bs_native=BE
2871   g_bs_alien=LE
2872   ;;
2873 *)
2874   g_byte_order=G_LITTLE_ENDIAN
2875   g_bs_native=LE
2876   g_bs_alien=BE
2877   ;;
2878 esac
2879
2880 g_pollin=$glib_cv_value_POLLIN
2881 g_pollout=$glib_cv_value_POLLOUT
2882 g_pollpri=$glib_cv_value_POLLPRI
2883 g_pollhup=$glib_cv_value_POLLHUP
2884 g_pollerr=$glib_cv_value_POLLERR
2885 g_pollnval=$glib_cv_value_POLLNVAL
2886
2887 g_stack_grows=$glib_cv_stack_grows
2888
2889 g_have_eilseq=$have_eilseq
2890
2891 case x$have_threads in
2892 xno)    g_enable_threads_def="#undef";;
2893 *)      g_enable_threads_def="#define";;
2894 esac
2895
2896 g_threads_impl_def=$g_threads_impl
2897
2898 g_mutex_has_default="$mutex_has_default"
2899 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
2900 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
2901 g_mutex_contents="$glib_cv_byte_contents_gmutex"
2902
2903 g_memory_barrier_needed="$glib_memory_barrier_needed"
2904
2905 g_module_suffix="$glib_gmodule_suffix"
2906
2907 g_pid_type="$glib_pid_type"
2908 case $host in
2909   *-*-beos*)
2910     glib_os="#define G_OS_BEOS"
2911     ;;
2912   *-*-cygwin*)
2913     glib_os="#define G_OS_UNIX
2914 #define G_PLATFORM_WIN32
2915 #define G_WITH_CYGWIN"
2916     ;;
2917   *-*-mingw*)
2918     glib_os="#define G_OS_WIN32
2919 #define G_PLATFORM_WIN32"
2920     ;;
2921   *)
2922     glib_os="#define G_OS_UNIX"
2923     ;;
2924 esac
2925 ])
2926
2927 AC_CONFIG_FILES([
2928 glib-2.0.pc
2929 glib-2.0-uninstalled.pc
2930 gmodule-2.0.pc
2931 gmodule-export-2.0.pc
2932 gmodule-no-export-2.0.pc
2933 gmodule-2.0-uninstalled.pc
2934 gmodule-no-export-2.0-uninstalled.pc
2935 gthread-2.0.pc
2936 gthread-2.0-uninstalled.pc
2937 gobject-2.0.pc
2938 gobject-2.0-uninstalled.pc
2939 glib-zip
2940 glib-gettextize
2941 Makefile
2942 build/Makefile
2943 build/win32/Makefile
2944 build/win32/dirent/Makefile
2945 build/win32/vs8/Makefile
2946 glib/Makefile
2947 glib/libcharset/Makefile
2948 glib/gnulib/Makefile
2949 glib/pcre/Makefile
2950 glib/update-pcre/Makefile
2951 gmodule/Makefile
2952 gmodule/gmoduleconf.h
2953 gobject/Makefile
2954 gobject/glib-mkenums
2955 gthread/Makefile
2956 po/Makefile.in
2957 docs/Makefile
2958 docs/reference/Makefile
2959 docs/reference/glib/Makefile
2960 docs/reference/glib/version.xml
2961 docs/reference/gobject/Makefile
2962 docs/reference/gobject/version.xml
2963 tests/Makefile
2964 tests/gobject/Makefile
2965 tests/refcount/Makefile
2966 m4macros/Makefile
2967 ])
2968
2969 AC_CONFIG_COMMANDS([chmod-scripts],
2970 [chmod 0755 glib-zip
2971 chmod 0755 glib-gettextize
2972 chmod 0755 gobject/glib-mkenums])
2973
2974 # we want to invoke this macro solely so that the config.status script
2975 # and automake generated makefiles know about these generated files.
2976 # They are only needed to distcheck the package
2977 if false; then
2978   AC_CONFIG_FILES([
2979     INSTALL
2980     README
2981     config.h.win32
2982     glibconfig.h.win32
2983     glib/makefile.msc
2984     glib/glib.rc
2985     gmodule/makefile.msc
2986     gmodule/gmodule.rc
2987     gobject/makefile.msc
2988     gobject/gobject.rc
2989     gthread/makefile.msc
2990     gthread/gthread.rc
2991     tests/makefile.msc
2992   ])
2993 fi
2994
2995 AC_OUTPUT