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