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