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