Better testing reveals better methods. Fixes for BeOS.
[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 dnl we to AC_DIVERT_PUSH/AC_DIVERT_POP these variable definitions so they
19 dnl are available for $ac_help expansion (don't we all *love* autoconf?)
20 AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
21 #
22 # The following version number definitions apply to GLib and GModule
23 # as a whole, so if changes occoured in either of them, they are both
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=1
35 GLIB_MINOR_VERSION=3
36 GLIB_MICRO_VERSION=0
37 GLIB_INTERFACE_AGE=0
38 GLIB_BINARY_AGE=0
39 GLIB_VERSION=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION.$GLIB_MICRO_VERSION
40 dnl
41 AC_DIVERT_POP()dnl
42
43 AC_SUBST(GLIB_MAJOR_VERSION)
44 AC_SUBST(GLIB_MINOR_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 AC_SUBST(LT_RELEASE)
55 AC_SUBST(LT_CURRENT)
56 AC_SUBST(LT_REVISION)
57 AC_SUBST(LT_AGE)
58
59 VERSION=$GLIB_VERSION
60 PACKAGE=glib
61
62 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
63
64 # Specify a configuration file
65 AM_CONFIG_HEADER(config.h)
66
67 AC_DEFINE_UNQUOTED(GLIB_MAJOR_VERSION, $GLIB_MAJOR_VERSION)
68 AC_DEFINE_UNQUOTED(GLIB_MINOR_VERSION, $GLIB_MINOR_VERSION)
69 AC_DEFINE_UNQUOTED(GLIB_MICRO_VERSION, $GLIB_MICRO_VERSION)
70 AC_DEFINE_UNQUOTED(GLIB_INTERFACE_AGE, $GLIB_INTERFACE_AGE)
71 AC_DEFINE_UNQUOTED(GLIB_BINARY_AGE, $GLIB_BINARY_AGE)
72
73 dnl Initialize libtool
74 AM_PROG_LIBTOOL
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     AC_DEFINE(GLIB_NATIVE_BEOS, 1)
85     glib_native_beos="yes"
86     AC_MSG_RESULT([$glib_native_beos])
87     ;;
88   default)
89     glib_native_beos="no"
90     AC_MSG_RESULT($glib_native_beos)
91     ;;
92 esac
93
94 dnl figure debugging default, prior to $ac_help setup
95 dnl
96 AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
97 if test `expr $GLIB_MINOR_VERSION \% 2` = 1 ; then
98         debug_default=yes
99 else
100         debug_default=minimum
101 fi
102 AC_DIVERT_POP()dnl
103
104 dnl declare --enable-* args and collect ac_help strings
105 AC_ARG_ENABLE(debug, [  --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
106 AC_ARG_ENABLE(mem_check, [  --enable-mem-check      turn on malloc/free sanity checking [default=no]],,enable_mem_check=no)
107 AC_ARG_ENABLE(mem_profile, [  --enable-mem-profile    turn on malloc profiling atexit [default=no]],,enable_mem_profile=no)
108 AC_ARG_ENABLE(ansi, [  --enable-ansi           turn on strict ansi [default=no]],
109                     , enable_ansi=no)
110 AC_ARG_ENABLE(threads, [  --enable-threads        turn on basic thread support [default=yes]
111                           ([=no] will override --with-threads)],,enable_threads=yes)
112
113 if test "x$enable_threads" != "xyes"; then
114   enable_threads=no
115 fi
116
117 AC_MSG_CHECKING(whether to enable memory checking)
118 if test "x$enable_mem_check" = "xyes"; then
119   AC_DEFINE(ENABLE_MEM_CHECK, 1)
120   AC_SUBST(ENABLE_MEM_CHECK)
121   AC_MSG_RESULT(yes)
122 else
123   AC_MSG_RESULT(no)
124 fi
125
126 AC_MSG_CHECKING(whether to enable memory profiling)
127 if test "x$enable_mem_profile" = "xyes"; then
128   AC_DEFINE(ENABLE_MEM_PROFILE, 1)
129   AC_SUBST(ENABLE_MEM_PROFILE)
130   AC_MSG_RESULT(yes)
131 else
132   AC_MSG_RESULT(no)
133 fi
134
135 if test "x$enable_debug" = "xyes"; then
136   test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
137   GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
138 else
139   if test "x$enable_debug" = "xno"; then
140     GLIB_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
141   fi
142 fi
143
144 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}")
145
146 # Checks for programs.
147 AC_PROG_CC
148 AM_PROG_CC_STDC
149 AC_PROG_INSTALL
150
151 changequote(,)dnl
152 if test "x$GCC" = "xyes"; then
153   case " $CFLAGS " in
154   *[\ \ ]-Wall[\ \      ]*) ;;
155   *) CFLAGS="$CFLAGS -Wall" ;;
156   esac
157
158   if test "x$enable_ansi" = "xyes"; then
159     case " $CFLAGS " in
160     *[\ \       ]-ansi[\ \      ]*) ;;
161     *) CFLAGS="$CFLAGS -ansi" ;;
162     esac
163
164     case " $CFLAGS " in
165     *[\ \       ]-pedantic[\ \  ]*) ;;
166     *) CFLAGS="$CFLAGS -pedantic" ;;
167     esac
168   fi
169 fi
170 changequote([,])dnl
171
172 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
173 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
174 glib_save_LIBS=$LIBS
175 LIBS="$LIBS -lm"
176 AC_TRY_RUN([#include <math.h>
177              int main (void) { return (log(1) != log(1.)); }],
178      AC_MSG_RESULT(none needed),
179      glib_save_CFLAGS=$CFLAGS
180      CFLAGS="$CFLAGS -std1"
181      AC_TRY_RUN([#include <math.h>
182                  int main (void) { return (log(1) != log(1.)); }],
183          AC_MSG_RESULT(-std1),
184          AC_MSG_RESULT()
185          CFLAGS=$glib_save_CFLAGS
186          AC_MSG_WARN(
187                 [No ANSI prototypes found in library. (-std1 didn't work.)])
188      )
189 )
190 LIBS=$glib_save_LIBS
191
192 dnl NeXTStep cc seems to need this
193 AC_MSG_CHECKING([for extra flags for POSIX compliance])
194 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
195   AC_MSG_RESULT(none needed),
196   glib_save_CFLAGS=$CFLAGS
197   CFLAGS="$CFLAGS -posix"
198   AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
199     AC_MSG_RESULT(-posix),
200     AC_MSG_RESULT()
201     CFLAGS=$glib_save_CFLAGS
202     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
203
204 # Checks for header files.
205 AC_HEADER_STDC
206
207 # Checks for library functions.
208 AC_FUNC_VPRINTF
209
210 AC_CHECK_FUNCS(atexit on_exit)
211
212 AC_CHECK_SIZEOF(char)
213 AC_CHECK_SIZEOF(short)
214 AC_CHECK_SIZEOF(long)
215 AC_CHECK_SIZEOF(int)
216 AC_CHECK_SIZEOF(void *)
217 AC_CHECK_SIZEOF(long long)
218
219 if test x$ac_cv_sizeof_long_long = x8; then
220         # long long is a 64 bit integer.
221         AC_MSG_CHECKING(for format to printf and scanf a gint64)
222         AC_CACHE_VAL(glib_cv_long_long_format,[
223                 AC_TRY_RUN([#include <stdio.h>  
224                         int main()
225                         {
226                           long long b, a = -0x3AFAFAFAFAFAFAFALL;
227                           char buffer[1000];
228                           sprintf (buffer, "%llu", a);
229                           sscanf (buffer, "%llu", &b);
230                           exit (b!=a);
231                         }
232                         ],
233                         glib_cv_long_long_format=ll,
234                         glib_cv_long_long_format=q)])
235         AC_MSG_RESULT(%${glib_cv_long_long_format}i)
236 fi
237
238 dnl long doubles were not used, and a portability problem
239 dnl AC_C_LONG_DOUBLE
240 AC_C_CONST
241
242 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
243 dnl truely know which ones of `inline', `__inline' and `__inline__' are
244 dnl actually supported.
245 AC_MSG_CHECKING(for __inline)
246 AC_CACHE_VAL(glib_cv_has__inline,[
247         AC_TRY_RUN([
248         __inline int foo () { return 0; }
249         int main () { return foo (); }
250         ],
251         glib_cv_has__inline=yes
252         ,
253         glib_cv_has__inline=no
254         ,)
255 ])
256 AC_MSG_RESULT($glib_cv_has__inline)
257 case x$glib_cv_has__inline in
258 xyes) AC_DEFINE(G_HAVE___INLINE)
259 esac
260 AC_MSG_CHECKING(for __inline__)
261 AC_CACHE_VAL(glib_cv_has__inline__,[
262         AC_TRY_RUN([
263         __inline__ int foo () { return 0; }
264         int main () { return foo (); }
265         ],
266         glib_cv_has__inline__=yes
267         ,
268         glib_cv_has__inline__=no
269         ,)
270 ])
271 AC_MSG_RESULT($glib_cv_has__inline__)
272 case x$glib_cv_has__inline__ in
273 xyes) AC_DEFINE(G_HAVE___INLINE__)
274 esac
275 AC_MSG_CHECKING(for inline)
276 AC_CACHE_VAL(glib_cv_hasinline,[
277         AC_TRY_RUN([
278         inline int foo () { return 0; }
279         int main () { return foo (); }
280         ],
281         glib_cv_hasinline=yes
282         ,
283         glib_cv_hasinline=no
284         ,)
285 ])
286 AC_MSG_RESULT($glib_cv_hasinline)
287 case x$glib_cv_hasinline in
288 xyes) AC_DEFINE(G_HAVE_INLINE)
289 esac
290
291 dnl for bytesex stuff
292 AC_C_BIGENDIAN
293
294 dnl header file checks
295 AC_CHECK_HEADERS(float.h, AC_DEFINE(HAVE_FLOAT_H))
296 AC_CHECK_HEADERS(limits.h, AC_DEFINE(HAVE_LIMITS_H))
297 AC_CHECK_HEADERS(pwd.h, AC_DEFINE(HAVE_PWD_H))
298 AC_CHECK_HEADERS(sys/param.h, AC_DEFINE(HAVE_SYS_PARAM_H))
299 AC_CHECK_HEADERS(sys/poll.h, AC_DEFINE(HAVE_SYS_POLL_H))
300 AC_CHECK_HEADERS(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H))
301 AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
302 AC_CHECK_HEADERS(sys/times.h, AC_DEFINE(HAVE_SYS_TIMES_H))
303 AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H))
304 AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))
305
306 # Check for some functions
307 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf strcasecmp strncasecmp poll)
308
309 # Check for sys_errlist
310 AC_MSG_CHECKING(for sys_errlist)
311 AC_TRY_LINK(, [
312 extern char *sys_errlist[];
313 extern int sys_nerr;
314 sys_errlist[sys_nerr-1][0] = 0;
315 ], glib_ok=yes, glib_ok=no)
316 AC_MSG_RESULT($glib_ok)
317 if test $glib_ok = no; then
318     AC_DEFINE(NO_SYS_ERRLIST)
319 fi
320
321 # Check for sys_siglist
322 AC_MSG_CHECKING(for sys_siglist)
323 AC_TRY_LINK(, [
324 extern char *sys_siglist[];
325 strlen (sys_siglist[0]);
326 ], glib_ok=yes, glib_ok=no)
327 AC_MSG_RESULT($glib_ok)
328 if test $glib_ok = no; then
329     AC_DEFINE(NO_SYS_SIGLIST)
330 fi
331
332 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
333 AC_MSG_CHECKING(for sys_siglist declaration)
334 AC_TRY_COMPILE([#include <signal.h>], [
335 strlen (sys_siglist[0]);
336 ], glib_ok=yes, glib_ok=no)
337 AC_MSG_RESULT($glib_ok)
338 if test $glib_ok = no; then
339     AC_DEFINE(NO_SYS_SIGLIST_DECL)
340 fi
341
342 # Check if <sys/select.h> needs to be included for fd_set
343 AC_MSG_CHECKING([for fd_set])
344 AC_TRY_COMPILE([#include <sys/types.h>],
345         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
346 if test $gtk_ok = yes; then
347     AC_MSG_RESULT([yes, found in sys/types.h])
348 else
349     AC_HEADER_EGREP(fd_set, sys/select.h, gtk_ok=yes)
350     if test $gtk_ok = yes; then
351         AC_DEFINE(HAVE_SYS_SELECT_H)
352         AC_MSG_RESULT([yes, found in sys/select.h])
353     else
354         AC_DEFINE(NO_FD_SET)
355         AC_MSG_RESULT(no)
356     fi
357 fi
358
359 dnl *** check for sane realloc() ***
360 AC_MSG_CHECKING(whether realloc (NULL,) will work)
361 AC_CACHE_VAL(glib_cv_sane_realloc,[
362         AC_TRY_RUN([
363         #include <stdlib.h>
364         int main() {
365           return realloc (0, sizeof (int)) == 0;
366         }],
367         glib_cv_sane_realloc=yes
368         AC_DEFINE(REALLOC_0_WORKS)
369         ,
370         glib_cv_sane_realloc=no
371         ,)
372 ])
373 AC_MSG_RESULT($glib_cv_sane_realloc)
374
375
376 dnl **********************
377 dnl *** va_copy checks ***
378 dnl **********************
379 dnl we currently check for all three va_copy possibilities, so we get
380 dnl all results in config.log for bug reports.
381 AC_MSG_CHECKING(for an implementation of va_copy())
382 AC_CACHE_VAL(glib_cv_va_copy,[
383         AC_TRY_RUN([
384         #include <stdarg.h>
385         void f (int i, ...) {
386         va_list args1, args2;
387         va_start (args1, i);
388         va_copy (args2, args1);
389         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
390           exit (1);
391         va_end (args1); va_end (args2);
392         }
393         int main() {
394           f (0, 42);
395           return 0;
396         }],
397         glib_cv_va_copy=yes
398         ,
399         glib_cv_va_copy=no
400         ,)
401 ])
402 AC_MSG_RESULT($glib_cv_va_copy)
403 AC_MSG_CHECKING(for an implementation of __va_copy())
404 AC_CACHE_VAL(glib_cv___va_copy,[
405         AC_TRY_RUN([
406         #include <stdarg.h>
407         void f (int i, ...) {
408         va_list args1, args2;
409         va_start (args1, i);
410         __va_copy (args2, args1);
411         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
412           exit (1);
413         va_end (args1); va_end (args2);
414         }
415         int main() {
416           f (0, 42);
417           return 0;
418         }],
419         glib_cv___va_copy=yes
420         ,
421         glib_cv___va_copy=no
422         ,)
423 ])
424 AC_MSG_RESULT($glib_cv___va_copy)
425 AC_MSG_CHECKING(whether va_lists can be copied by value)
426 AC_CACHE_VAL(glib_cv_va_val_copy,[
427         AC_TRY_RUN([
428         #include <stdarg.h>
429         void f (int i, ...) {
430         va_list args1, args2;
431         va_start (args1, i);
432         args2 = args1;
433         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
434           exit (1);
435         va_end (args1); va_end (args2);
436         }
437         int main() {
438           f (0, 42);
439           return 0;
440         }],
441         glib_cv_va_val_copy=yes
442         ,
443         glib_cv_va_val_copy=no
444         ,)
445 ])
446 if test "x$glib_cv_va_copy" = "xyes"; then
447   AC_DEFINE(G_VA_COPY, va_copy)
448 else if test "x$glib_cv___va_copy" = "xyes"; then
449   AC_DEFINE(G_VA_COPY, __va_copy)
450 fi
451 fi
452 if test "x$glib_cv_va_val_copy" = "xno"; then
453   AC_DEFINE(G_VA_COPY_AS_ARRAY)
454 fi
455 AC_MSG_RESULT($glib_cv_va_val_copy)
456
457
458 dnl ***********************
459 dnl *** g_module checks ***
460 dnl ***********************
461 G_MODULE_LIBS=
462 G_MODULE_LIBS_EXTRA=
463 G_MODULE_PLUGIN_LIBS=
464 G_MODULE_LDFLAGS=
465 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
466 G_MODULE_NEED_USCORE=0
467 G_MODULE_HAVE_DLERROR=0
468 dnl *** dlopen() and dlsym() in system libraries
469 if test -z "$G_MODULE_IMPL"; then
470         AC_CHECK_FUNC(dlopen,
471                 AC_CHECK_FUNC(dlsym,
472                         G_MODULE_IMPL=G_MODULE_IMPL_DL
473                 ,)
474         ,)
475 fi
476 dnl *** load_image (BeOS)
477 if test -z "$G_MODULE_IMPL" -a "x$glib_native_beos" = "xyes"; then
478   AC_CHECK_LIB(root, load_image,
479       G_MODULE_LIBS="-lbe -lroot -lglib"
480       G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
481       G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
482       G_MODULE_IMPL=G_MODULE_IMPL_BEOS 
483 ,)
484 fi   
485 dnl *** dlopen() and dlsym() in libdl
486 if test -z "$G_MODULE_IMPL"; then
487         AC_CHECK_LIB(dl, dlopen,
488                 AC_CHECK_LIB(dl, dlsym,
489                         G_MODULE_LIBS=-ldl
490                         G_MODULE_IMPL=G_MODULE_IMPL_DL
491                 ,)
492         ,)
493 fi
494 dnl *** shl_load() in libdld (HP-UX)
495 if test -z "$G_MODULE_IMPL"; then
496         AC_MSG_CHECKING(how to export all symbols)
497         SAVED_LDFLAGS=$LDFLAGS
498         LDFLAGS="$LDFLAGS -Wl,-E"
499         AC_TRY_LINK(,[ return 0; ],
500                 [ G_MODULE_LDFLAGS="-Wl,-E" ],[
501                 LDFLAGS="$SAVED_LDFLAGS -bexpall"
502                 AC_TRY_LINK(,[ return 0; ],
503                         G_MODULE_LDFLAGS="-bexpall",
504                         G_MODULE_LDFLAGS="none"
505                 )
506         ])
507         LDFLAGS=$SAVED_LDFLAGS
508         AC_MSG_RESULT($G_MODULE_LDFLAGS)
509         if test "x$G_MODULE_LDFLAGS" = "xnone"; then
510                 G_MODULE_LDFLAGS=
511         fi
512         AC_CHECK_LIB(dld, shl_load,
513                 G_MODULE_LIBS=-ldld
514                 G_MODULE_IMPL=G_MODULE_IMPL_DLD
515         ,)
516 fi
517 dnl *** additional checks for G_MODULE_IMPL_DL
518 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
519         case "$host_os" in
520           linux*)
521             G_MODULE_LDFLAGS='-rdynamic'
522             ;;
523         esac
524         LIBS_orig="$LIBS"
525         LDFLAGS_orig="$LDFLAGS"
526         LIBS="$LIBS $G_MODULE_LIBS"
527         LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
528 dnl *** check whether we need preceeding underscores
529         AC_MSG_CHECKING(for preceeding underscore in symbols)
530         AC_CACHE_VAL(glib_cv_uscore,[
531                 AC_TRY_RUN([
532                 #include <dlfcn.h>
533                 int glib_underscore_test (void) { return 42; }
534                 int main() {
535                   void *f1 = (void*)0, *f2 = (void*)0, *handle;
536                   handle = dlopen ((void*)0, 0);
537                   if (handle) {
538                     f1 = dlsym (handle, "glib_underscore_test");
539                     f2 = dlsym (handle, "_glib_underscore_test");
540                   } return (!f2 || f1);
541                 }],
542                         glib_cv_uscore=yes,
543                         glib_cv_uscore=no,
544                 )
545                 rm -f plugin.c plugin.o plugin.lo
546         ])
547         AC_MSG_RESULT($glib_cv_uscore)
548         if test "x$glib_cv_uscore" = "xyes"; then
549                 G_MODULE_NEED_USCORE=1
550         else
551                 G_MODULE_NEED_USCORE=0
552         fi
553
554         LDFLAGS="$LDFLAGS_orig"
555 dnl *** check for having dlerror()
556         AC_CHECK_FUNC(dlerror,
557                 G_MODULE_HAVE_DLERROR=1,
558                 G_MODULE_HAVE_DLERROR=0)
559         LIBS="$LIBS_orig"
560 fi
561 dnl *** done, have e got an implementation?
562 if test -z "$G_MODULE_IMPL"; then
563         G_MODULE_IMPL=0
564 fi
565 AC_SUBST(G_MODULE_IMPL)
566 AC_SUBST(G_MODULE_LIBS)
567 AC_SUBST(G_MODULE_LIBS_EXTRA)
568 AC_SUBST(G_MODULE_PLUGIN_LIBS)
569 AC_SUBST(G_MODULE_LDFLAGS)
570 AC_SUBST(G_MODULE_HAVE_DLERROR)
571 AC_SUBST(G_MODULE_NEED_USCORE)
572 AC_SUBST(GLIB_DEBUG_FLAGS)
573
574
575 dnl ***********************
576 dnl *** g_thread checks ***
577 dnl ***********************
578
579 AC_ARG_WITH(threads, [  --with-threads=[none/posix/dce/solaris/nspr] specify a thread implementation to use],
580         if test "x$with_threads" = x; then
581                 want_threads=yes
582         else
583                 want_threads=$with_threads
584         fi,
585         want_threads=yes)
586 if test "x$enable_threads" = "xno"; then
587         want_threads=no
588 fi
589 if test "x$want_threads" = "xnone"; then
590         want_threads=no
591 fi
592
593 dnl error and warning message
594 dnl *************************
595
596 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
597                 computer. GLib will not have a default thread implementation."
598
599 FLAG_DOES_NOT_WORK="I can't find the MACRO, that enables thread safety on your
600                 platform (normaly it's "_REENTRANT"). I'll not use any flag on
601                 compilation now, but then your programs might not work.
602                 Please provide information on how it is done on your system."
603
604 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
605                 "
606
607 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
608                 provide information on your thread implementation.
609                 You can also run 'configure --disable-threads' 
610                 to compile without thread support."
611
612 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
613                 functions will not be MT-safe during their first call because
614                 there is no working 'getpwuid_r' on your system."
615
616 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
617                 because there is no 'localtime_r' on your system."
618
619 dnl determination of thread implementation
620 dnl ***************************************
621
622 have_threads=none
623 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
624         case $host in
625                 *-*-solaris*)
626                 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
627                 ;;
628         esac
629 fi
630 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
631                                 || test "x$want_threads" = xdce; then
632         # -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
633         # -U_OSF_SOURCE if for Digital UNIX 4.0d
634         GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
635         glib_save_CPPFLAGS="$CPPFLAGS"
636         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
637         if test "x$have_threads" = xnone; then
638                 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_init[^a-zA-Z_]],
639                         pthread.h,
640                         have_threads=posix)
641         fi
642         if test "x$have_threads" = xnone; then
643                 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_create[^a-zA-Z_]],
644                         pthread.h,
645                         have_threads=dce)
646         fi
647         CPPFLAGS="$glib_save_CPPFLAGS"
648 fi
649 if test "x$want_threads" = xyes || test "x$want_threads" = xnspr; then
650         if test "x$have_threads" = xnone; then
651                 AC_CHECK_LIB(nspr21, PRP_NewNakedCondVar, have_threads=nspr)
652         fi
653 fi
654
655 AC_MSG_CHECKING(for thread implementation)
656
657 if test "x$have_threads" = xnone && test "x$want_threads" != xno; then
658         AC_MSG_RESULT(none available)
659         AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
660 else
661         AC_MSG_RESULT($have_threads)
662 fi
663
664
665 dnl determination of G_THREAD_LIBS
666 dnl ******************************
667
668 G_THREAD_LIBS=
669 G_THREAD_LIBS_EXTRA=
670 G_THREAD_CFLAGS=
671
672 mutex_has_default=no
673 case $have_threads in
674         posix|dce)
675                 G_THREAD_LIBS=error
676                 glib_save_LIBS="$LIBS"
677                 for thread_lib in "" pthread pthreads c_r thread dce; do
678                         # This is not AC_CHECK_LIB to also work with function
679                         # name mangling in header files.
680                         if test x"$thread_lib" = x; then
681                                 add_thread_lib=""
682                                 IN=""
683                         else
684                                 add_thread_lib="-l$thread_lib"
685                                 IN=" in -l$thread_lib"
686                         fi
687                         
688                         LIBS="$glib_save_LIBS $add_thread_lib"
689                         
690                         AC_MSG_CHECKING(for pthread_create$IN)
691                         AC_TRY_LINK([#include <pthread.h>],
692                                 [pthread_create(NULL,NULL,NULL,NULL)],
693                                 [AC_MSG_RESULT(yes)
694                                 G_THREAD_LIBS="$add_thread_lib"
695                                 break],
696                                 [AC_MSG_RESULT(no)])
697                 done
698                 LIBS="$glib_save_LIBS"
699                 mutex_has_default=yes
700                 mutex_default_type='pthread_mutex_t'
701                 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
702                 mutex_header_file='pthread.h'
703                 if test "x$have_threads" = "xposix"; then
704                         g_threads_impl="POSIX"
705                 else
706                         g_threads_impl="DCE"
707                         have_threads="posix"
708                 fi
709                 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
710                 ;;
711         solaris)
712                 G_THREAD_LIBS=error
713                 AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
714                 mutex_has_default=yes
715                 mutex_default_type='mutex_t'
716                 mutex_default_init="DEFAULTMUTEX"
717                 mutex_header_file='thread.h'
718                 g_threads_impl="SOLARIS"
719                 ;;
720         nspr)
721                 AC_CHECK_LIB(nspr21, PRP_NewNakedCondVar,
722                              G_THREAD_LIBS="-lnspr21")
723                 g_threads_impl="NSPR"
724                 ;;
725         none)
726                 g_threads_impl="NONE"
727                 ;;
728         *)
729                 g_threads_impl="NONE"
730                 G_THREAD_LIBS=error
731                 ;;
732 esac
733
734 if test "x$G_THREAD_LIBS" = xerror; then
735         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
736 fi
737
738 case $host in
739   *-*-beos*)
740     G_THREAD_LIBS="-lbe -lroot -lglib "
741     G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
742     ;;
743   *)
744     ;;
745 esac
746
747
748 AC_MSG_CHECKING(thread related libraries)
749 AC_MSG_RESULT($G_THREAD_LIBS)
750
751 dnl determination of G_THREAD_CFLAGS
752 dnl ********************************
753
754 if test x"$enable_threads" = xyes; then
755
756     G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_REENTRANT" # good default guess
757
758     case $host in
759         *-aix*)
760                 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
761                 if test x"$GCC" = xyes; then
762                         G_THREAD_CFLAGS="$G_THREAD_CFLAGS -mthreads"
763                 fi
764                 ;;
765         *-freebsd2.2*)
766                 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
767
768                 # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
769                 # -mthreads flag.
770                 ;;
771     esac
772
773     # if we are not finding the ctime_r function, then we probably are
774     # not using the proper multithread flag
775     old_CPPFLAGS=$CPPFLAGS
776     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
777     # Note: Digital UNIX 4.0d #defines ctime_r to _Pctime_r for gcc.
778     AC_EGREP_HEADER([[^a-zA-Z_](_P)?ctime_r[^a-zA-Z_]], time.h, ,
779     G_THREAD_CFLAGS=
780     AC_MSG_WARN($FLAG_DOES_NOT_WORK))
781     CPPFLAGS=$old_CPPFLAGS
782
783     AC_MSG_CHECKING(thread related cflags)
784
785     AC_MSG_RESULT($G_THREAD_CFLAGS)
786 else
787     G_THREAD_CFLAGS=
788 fi
789
790 dnl check for mt safe function variants and some posix functions
791 dnl ************************************************************
792
793 if test x"$enable_threads" = xyes; then
794         glib_save_LIBS="$LIBS"
795         glib_save_CFLAGS="$CFLAGS"
796         # we are not doing the following for now, as this might require glib 
797         # to always be linked with the thread libs on some platforms. 
798         # LIBS="$LIBS $G_THREAD_LIBS"
799         CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
800         AC_CHECK_FUNCS(localtime_r rand_r)
801         if test "$ac_cv_header_pwd_h" = "yes"; then
802                 AC_MSG_CHECKING([for getpwuid_r])
803                 AC_CACHE_VAL(ac_cv_func_getpwuid_r,
804                         [AC_TRY_RUN([#include <errno.h>
805                                 int main () { char buffer[10000], *pointer; 
806                                 char getpwuid_r (long, void*, void*,
807                                         int, void*);
808                                 errno = 0;
809                                 getpwuid_r (0, &buffer, &buffer, 
810                                         sizeof (buffer), &pointer);
811                                 return errno == ENOSYS;}],
812                                 [ac_cv_func_getpwuid_r=yes],
813                                 [ac_cv_func_getpwuid_r=no])])
814                 if test "$ac_cv_func_getpwuid_r" = yes; then
815                         AC_MSG_RESULT(yes)
816                         AC_DEFINE(HAVE_GETPWUID_R)
817                 else
818                         AC_MSG_RESULT(no)
819                 fi
820                 if test "$ac_cv_func_getpwuid_r" = "yes"; then
821                         AC_MSG_CHECKING(whether getpwuid_r is posix like)
822                         # getpwuid_r(0, NULL, NULL, 0) is the signature on
823                         # solaris, if that is not found, the prog below won't 
824                         # compile, then the posix signature is assumed as 
825                         # the default.
826                         AC_TRY_COMPILE([#include <pwd.h>],
827                                 [getpwuid_r(0, NULL, NULL, 0);],
828                                 [AC_MSG_RESULT(no)],
829                                 [AC_MSG_RESULT(yes)
830                                 AC_DEFINE(HAVE_GETPWUID_R_POSIX)])
831                 fi
832         fi
833         LIBS="$glib_save_LIBS"
834         CFLAGS="$glib_save_CFLAGS"
835
836         # now spit out all the warnings.
837         if test "$ac_cv_func_getpwuid_r" != "yes"; then
838                 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
839         fi
840         if test "$ac_cv_func_localtime_r" != "yes"; then
841                 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
842         fi
843 fi
844
845 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c")
846 AC_SUBST(G_THREAD_CFLAGS)
847 AC_SUBST(G_THREAD_LIBS)
848 AC_SUBST(G_THREAD_LIBS_EXTRA)
849
850 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
851
852 dnl **********************************************
853 dnl *** GDefaultMutex setup and initialization ***
854 dnl **********************************************
855 dnl
856 dnl if mutex_has_default = yes, we also got
857 dnl mutex_default_type, mutex_default_init and mutex_header_file
858 GLIB_IF_VAR_EQ(mutex_has_default, yes,
859         GLIB_SIZEOF([#include <$mutex_header_file>],
860                     $mutex_default_type,
861                     gmutex,
862                     )
863         GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
864                            $mutex_default_type,
865                            gmutex,
866                            $glib_cv_sizeof_gmutex,
867                            $mutex_default_init)
868         ,
869 )
870
871
872 dnl ****************************************
873 dnl *** GLib POLL* compatibility defines ***
874 dnl ****************************************
875 GLIB_SYSDEFS(
876 [#include <sys/types.h>
877 #include <sys/poll.h>],
878         POLLIN:1 POLLOUT:4 POLLPRI:2 POLLERR:8 POLLHUP:16 POLLNVAL:32,
879         glibconfig-sysdefs.h,
880         =)
881
882
883 dnl ******************************
884 dnl *** output the whole stuff ***
885 dnl ******************************
886
887 AC_OUTPUT_COMMANDS([
888
889 ## Generate `glibconfig.h' in two cases
890 ## 1. `config.status' is run either explicitly, or via configure.
891 ##     Esp. not when it is run in `Makefile' to generate makefiles and
892 ##     config.h
893 ## 2. CONFIG_OTHER is set explicitly
894 ##
895 ## Case 1 is difficult.  We know that `automake' sets one of
896 ## CONFIG_FILES or CONFIG_HEADERS to empty.  This heuristic works
897 ## only when AM_CONFIG_HEADER is set, however.
898
899 if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
900   # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
901   CONFIG_OTHER=${CONFIG_OTHER:-glibconfig.h}
902 fi
903 case "$CONFIG_OTHER" in
904 *glibconfig.h*)
905         echo creating glibconfig.h
906         outfile=glibconfig.h-tmp
907         cat > $outfile <<\_______EOF
908 /* glibconfig.h
909  *
910  * This is a generated file.  Please modify `configure.in'
911  */
912
913 #ifndef GLIBCONFIG_H
914 #define GLIBCONFIG_H
915
916 #ifdef __cplusplus
917 extern "C" {
918 #endif /* __cplusplus */
919
920 _______EOF
921
922         if test x$glib_limits_h = xyes; then
923           echo '#include <limits.h>' >> $outfile
924         fi
925         if test x$glib_float_h = xyes; then
926           echo '#include <float.h>' >> $outfile
927         fi
928         if test x$glib_values_h = xyes; then
929           echo '#include <values.h>' >> $outfile
930         fi
931         if test x$g_mutex_header_file != x; then
932           echo '#include <'"$g_mutex_header_file"'>' >> $outfile
933         fi
934         if test x$glib_sys_poll_h = xyes; then
935           echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
936         fi
937
938         cat >> $outfile <<_______EOF
939
940 #define G_MINFLOAT      $glib_mf
941 #define G_MAXFLOAT      $glib_Mf
942 #define G_MINDOUBLE     $glib_md
943 #define G_MAXDOUBLE     $glib_Md
944 #define G_MINSHORT      $glib_ms
945 #define G_MAXSHORT      $glib_Ms
946 #define G_MAXUSHORT     $glib_Mus
947 #define G_MININT        $glib_mi
948 #define G_MAXINT        $glib_Mi
949 #define G_MAXUINT       $glib_Mui
950 #define G_MINLONG       $glib_ml
951 #define G_MAXLONG       $glib_Ml
952 #define G_MAXULONG      $glib_Mul
953
954 _______EOF
955
956
957         ### this should always be true in a modern C/C++ compiler
958         cat >>$outfile <<_______EOF
959 typedef signed char gint8;
960 typedef unsigned char guint8;
961 _______EOF
962
963
964         if test -n "$gint16"; then
965           cat >>$outfile <<_______EOF
966 typedef signed $gint16 gint16;
967 typedef unsigned $gint16 guint16;
968 #define G_GINT16_FORMAT $gint16_format
969 #define G_GUINT16_FORMAT $guint16_format
970 _______EOF
971         fi
972
973
974         if test -n "$gint32"; then
975           cat >>$outfile <<_______EOF
976 typedef signed $gint32 gint32;
977 typedef unsigned $gint32 guint32;
978 #define G_GINT32_FORMAT $gint32_format
979 #define G_GUINT32_FORMAT $guint32_format
980 _______EOF
981         fi
982
983
984         if test -n "$gint64"; then
985           cat >>$outfile <<_______EOF
986 ${glib_warning_guard}#define G_HAVE_GINT64 1
987
988 ${glib_extension}typedef signed $gint64 gint64;
989 ${glib_extension}typedef unsigned $gint64 guint64;
990
991 #define G_GINT64_FORMAT $gint64_format
992 #define G_GUINT64_FORMAT $guint64_format
993 #define G_GINT64_CONSTANT(val)  $gint64_constant
994 _______EOF
995         fi
996
997
998         if test -z "$glib_unknown_void_p"; then
999           cat >>$outfile <<_______EOF
1000
1001 #define GPOINTER_TO_INT(p)      ((gint)  ${glib_gpi_cast} (p))
1002 #define GPOINTER_TO_UINT(p)     ((guint) ${glib_gpui_cast} (p))
1003
1004 #define GINT_TO_POINTER(i)      ((gpointer) ${glib_gpi_cast} (i))
1005 #define GUINT_TO_POINTER(u)     ((gpointer) ${glib_gpui_cast} (u))
1006 _______EOF
1007         else
1008           echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
1009         fi
1010
1011
1012
1013         cat >>$outfile <<_______EOF
1014 $glib_atexit
1015 $glib_memmove
1016 $glib_defines
1017
1018 $glib_vacopy
1019
1020 #ifdef  __cplusplus
1021 #define G_HAVE_INLINE   1
1022 #else   /* !__cplusplus */
1023 $glib_inline
1024 #endif  /* !__cplusplus */
1025 _______EOF
1026
1027         echo >>$outfile
1028         if test x$g_mutex_has_default = xyes; then
1029                 cat >>$outfile <<_______EOF
1030 $g_enable_threads_def G_THREADS_ENABLED
1031 #define G_THREADS_IMPL_$g_threads_impl_def
1032 typedef struct _GStaticMutex GStaticMutex;
1033 struct _GStaticMutex
1034 {
1035   struct _GMutex *runtime_mutex;
1036   union {
1037     char   pad[$g_mutex_sizeof];
1038     double dummy_double;
1039     void  *dummy_pointer;
1040     long   dummy_long;
1041   } aligned_pad_u;
1042 };
1043 #define G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
1044 #define g_static_mutex_get_mutex(mutex) \
1045   (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \
1046    g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
1047 _______EOF
1048         else
1049                 cat >>$outfile <<_______EOF
1050 $g_enable_threads_def G_THREADS_ENABLED
1051 #define G_THREADS_IMPL_$g_threads_impl_def
1052 typedef struct _GMutex* GStaticMutex;
1053 #define G_STATIC_MUTEX_INIT NULL
1054 #define g_static_mutex_get_mutex(mutex) (g_static_mutex_get_mutex_impl (mutex))
1055 _______EOF
1056         fi
1057
1058         echo >>$outfile
1059         g_bit_sizes="16 32"
1060         if test -n "$gint64"; then
1061           g_bit_sizes="$g_bit_sizes 64"
1062         fi
1063         for bits in $g_bit_sizes; do
1064           cat >>$outfile <<_______EOF
1065 #define GINT${bits}_TO_${g_bs_native}(val)      ((gint${bits}) (val))
1066 #define GUINT${bits}_TO_${g_bs_native}(val)     ((guint${bits}) (val))
1067 #define GINT${bits}_TO_${g_bs_alien}(val)       ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
1068 #define GUINT${bits}_TO_${g_bs_alien}(val)      (GUINT${bits}_SWAP_LE_BE (val))
1069 _______EOF
1070         done
1071
1072         cat >>$outfile <<_______EOF
1073 #define GLONG_TO_LE(val)        ((glong) GINT${glongbits}_TO_LE (val))
1074 #define GULONG_TO_LE(val)       ((gulong) GUINT${glongbits}_TO_LE (val))
1075 #define GLONG_TO_BE(val)        ((glong) GINT${glongbits}_TO_BE (val))
1076 #define GULONG_TO_BE(val)       ((gulong) GUINT${glongbits}_TO_BE (val))
1077 #define GINT_TO_LE(val)         ((gint) GINT${gintbits}_TO_LE (val))
1078 #define GUINT_TO_LE(val)        ((guint) GUINT${gintbits}_TO_LE (val))
1079 #define GINT_TO_BE(val)         ((gint) GINT${gintbits}_TO_BE (val))
1080 #define GUINT_TO_BE(val)        ((guint) GUINT${gintbits}_TO_BE (val))
1081 #define G_BYTE_ORDER $g_byte_order
1082
1083 _______EOF
1084
1085         if test -r glibconfig-sysdefs.h; then
1086           cat glibconfig-sysdefs.h >>$outfile
1087         fi
1088
1089         cat >>$outfile <<_______EOF
1090 #ifdef __cplusplus
1091 }
1092 #endif /* __cplusplus */
1093
1094 #endif /* GLIBCONFIG_H */
1095 _______EOF
1096
1097
1098         if cmp -s $outfile glibconfig.h; then
1099           echo glibconfig.h is unchanged
1100           rm -f $outfile
1101         else
1102           mv $outfile glibconfig.h
1103         fi ;;
1104 esac
1105 ],[
1106
1107 # Note that if two cases are the same, case goes with the first one.
1108 # Note also that this is inside an AC_OUTPUT_COMMAND.  We do not depend
1109 # on variable expansion in case labels.  Look at the generated config.status
1110 # for a hint.
1111
1112 case xyes in
1113 x$ac_cv_header_float_h)
1114   glib_float_h=yes
1115   glib_mf=FLT_MIN glib_Mf=FLT_MAX
1116   glib_md=DBL_MIN glib_Md=DBL_MAX
1117   ;;
1118 x$ac_cv_header_values_h)
1119   glib_values_h=yes
1120   glib_mf=MINFLOAT  glib_Mf=MAXFLOAT
1121   glib_md=MINDOUBLE glib_Md=MAXDOUBLE
1122   ;;
1123 esac
1124
1125 case xyes in
1126 x$ac_cv_header_limits_h)
1127   glib_limits_h=yes
1128   glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
1129   glib_mi=INT_MIN  glib_Mi=INT_MAX  glib_Mui=UINT_MAX
1130   glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
1131   ;;
1132 x$ac_cv_header_values_h)
1133   glib_values_h=yes
1134   glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
1135   glib_mi=MININT   glib_Mi=MAXINT   glib_Mui="(((guint)G_MAXINT)*2+1)"
1136   glib_ml=MINLONG  glib_Ml=MAXLONG  glib_Mul="(((gulong)G_MAXLONG)*2+1)"
1137   ;;
1138 esac
1139
1140 if test x$ac_cv_header_sys_poll_h = xyes ; then
1141   glib_sys_poll_h=yes
1142 fi
1143
1144 case 2 in
1145 $ac_cv_sizeof_short)            
1146   gint16=short
1147   gint16_format='"hi"'
1148   guint16_format='"hu"'
1149   ;;
1150 $ac_cv_sizeof_int)              
1151   gint16=int
1152   gint16_format='"i"'
1153   guint16_format='"u"'
1154   ;;
1155 esac
1156 case 4 in
1157 $ac_cv_sizeof_short)            
1158   gint32=short
1159   gint32_format='"hi"'
1160   guint32_format='"hu"'
1161   ;;
1162 $ac_cv_sizeof_int)              
1163   gint32=int
1164   gint32_format='"i"'
1165   guint32_format='"u"'
1166   ;;
1167 $ac_cv_sizeof_long)             
1168   gint32=long
1169   gint32_format='"li"'
1170   guint32_format='"lu"'
1171   ;;
1172 esac
1173 case 8 in
1174 $ac_cv_sizeof_int)
1175   gint64=int
1176   gint64_format='"i"'
1177   guint64_format='"u"'
1178   glib_extension=
1179   glib_warning_guard=
1180   gint64_constant='(val)'
1181   ;;
1182 $ac_cv_sizeof_long)
1183   gint64=long
1184   gint64_format='"li"'
1185   guint64_format='"lu"'
1186   glib_extension=
1187   glib_warning_guard=
1188   gint64_constant='(val##L)'
1189   ;;
1190 $ac_cv_sizeof_long_long)
1191   gint64='long long'
1192   gint64_format='"'$glib_cv_long_long_format'i"'
1193   guint64_format='"'$glib_cv_long_long_format'u"'
1194   glib_extension='G_GNUC_EXTENSION '
1195   glib_warning_guard="
1196 #if defined (__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 8
1197 #  define G_GNUC_EXTENSION __extension__
1198 #else
1199 #  define G_GNUC_EXTENSION
1200 #endif
1201
1202 "
1203   gint64_constant='(G_GNUC_EXTENSION (val##LL))'
1204   ;;
1205 esac
1206
1207 gintbits=`expr $ac_cv_sizeof_int \* 8`
1208 glongbits=`expr $ac_cv_sizeof_long \* 8`
1209
1210
1211 case $ac_cv_sizeof_void_p in
1212 $ac_cv_sizeof_int)      glib_gpi_cast=''        glib_gpui_cast=''         ;;
1213 $ac_cv_sizeof_long)     glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
1214 *)                      glib_unknown_void_p=yes ;;
1215 esac
1216
1217
1218 case xyes in
1219 x$ac_cv_func_atexit)
1220   glib_atexit="
1221 #ifdef NeXT /* @#%@! NeXTStep */
1222 # define g_ATEXIT(proc) (!atexit (proc))
1223 #else
1224 # define g_ATEXIT(proc) (atexit (proc))
1225 #endif"
1226   ;;
1227 x$ac_cv_func_on_exit)
1228   glib_atexit="
1229 #define g_ATEXIT(proc)  (on_exit ((void (*)(int, void*))(proc), NULL))"
1230   ;;
1231 esac
1232
1233 case xyes in
1234 x$ac_cv_func_memmove)
1235   glib_memmove='
1236 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
1237   ;;
1238 *)
1239   glib_memmove="
1240 /* We make the assumption that if memmove isn't available, then
1241  * bcopy will do the job. This isn't safe everywhere. (bcopy can't
1242  * necessarily handle overlapping copies) */
1243 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
1244   ;;
1245 esac
1246
1247 glib_defines="
1248 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
1249 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
1250 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
1251 "
1252
1253 case xyes in
1254 x$glib_cv_va_copy)      glib_vacopy='#define G_VA_COPY  va_copy' ;;
1255 x$glib_cv___va_copy)    glib_vacopy='#define G_VA_COPY  __va_copy' ;;
1256 *)                      glib_vacopy=''
1257 esac
1258
1259 if test x$glib_cv_va_val_copy = xno; then
1260   glib_vacopy="\$glib_vacopy
1261 #define G_VA_COPY_AS_ARRAY 1"
1262 fi
1263
1264 if test x$glib_cv_hasinline = xyes; then
1265     glib_inline='#define G_HAVE_INLINE 1'
1266 fi
1267 if test x$glib_cv_has__inline = xyes; then
1268     glib_inline="\$glib_inline
1269 #define G_HAVE___INLINE 1"
1270 fi
1271 if test x$glib_cv_has__inline__ = xyes; then
1272     glib_inline="\$glib_inline
1273 #define G_HAVE___INLINE__ 1"
1274 fi
1275
1276 case xyes in
1277 x$ac_cv_c_bigendian)
1278   g_byte_order=G_BIG_ENDIAN
1279   g_bs_native=BE
1280   g_bs_alien=LE
1281   ;;
1282 *)
1283   g_byte_order=G_LITTLE_ENDIAN
1284   g_bs_native=LE
1285   g_bs_alien=BE
1286   ;;
1287 esac
1288
1289 case x$enable_threads in
1290 xyes)   g_enable_threads_def="#define";;
1291 *)      g_enable_threads_def="#undef ";;
1292 esac
1293
1294 g_threads_impl_def=$g_threads_impl
1295
1296 g_mutex_has_default="$mutex_has_default"
1297 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
1298 g_mutex_contents="$glib_cv_byte_contents_gmutex"
1299
1300 if test "x$glib_native_beos" = "xyes"; then
1301     glib_native_beos_def="\$glib_native_beos_def
1302 #define GLIB_NATIVE_BEOS 1"
1303 fi           
1304 ])
1305
1306 AC_OUTPUT([
1307 glib.spec
1308 Makefile
1309 glib-config
1310 gmodule/gmoduleconf.h
1311 gmodule/Makefile
1312 gthread/Makefile
1313 docs/Makefile
1314 tests/Makefile
1315 ],[case "$CONFIG_FILES" in
1316 *glib-config*)chmod +x glib-config;;
1317 esac
1318 echo ""
1319 echo " *** IMPORTANT *** "
1320 echo ""
1321 echo "This is a development version of GLib.  You should be using a stable"
1322 echo "version, which is available at ftp://ftp.gtk.org/pub/gtk/v1.2/.  The"
1323 echo "version you just configured is meant for developers of GLib only:"
1324 echo ""
1325 echo "  * You should not base stable software on this version of GLib."
1326 echo "  * GNOME developers should use a stable version of GLib."
1327 echo ""
1328 echo "Distributions should *NOT* ship a development package of this GLib."
1329 echo "Do not ship the headers and do not ship the glib-config script.  These"
1330 echo "things will conflict with the stable 1.2 series.  Package only enough"
1331 echo "to satisfy the requirements of some other package.  Package only the"
1332 echo "library itself.  Doing otherwise will do no favors to the community."
1333 echo ""
1334 echo "If you install this version of GLib, we strongly recommend that you"
1335 echo "install it in a different prefix than GLib 1.2.  Use --prefix as an"
1336 echo "argument to configure to do this.  Otherwise, you will not be able to"
1337 echo "do development with GLib 1.2 any longer."
1338 echo ""
1339 echo " *** You should be using GLib 1.2 instead. ***"
1340 ])
1341