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