Port to BeOS by myself and Richard Offer.
[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_PLUGIN_LIBS=
463 G_MODULE_LDFLAGS=
464 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
465 G_MODULE_NEED_USCORE=0
466 G_MODULE_HAVE_DLERROR=0
467 dnl *** dlopen() and dlsym() in system libraries
468 if test -z "$G_MODULE_IMPL"; then
469         AC_CHECK_FUNC(dlopen,
470                 AC_CHECK_FUNC(dlsym,
471                         G_MODULE_IMPL=G_MODULE_IMPL_DL
472                 ,)
473         ,)
474 fi
475 dnl *** load_image (BeOS)
476 if test -z "$G_MODULE_IMPL" -a "x$glib_native_beos" = "xyes"; then
477   AC_CHECK_LIB(root, load_image,
478       G_MODULE_LIBS="-lbe -lroot -L\$(top_builddir_full)/.libs -lglib"
479       G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
480       G_MODULE_IMPL=G_MODULE_IMPL_BEOS 
481 ,)
482 fi   
483 dnl *** dlopen() and dlsym() in libdl
484 if test -z "$G_MODULE_IMPL"; then
485         AC_CHECK_LIB(dl, dlopen,
486                 AC_CHECK_LIB(dl, dlsym,
487                         G_MODULE_LIBS=-ldl
488                         G_MODULE_IMPL=G_MODULE_IMPL_DL
489                 ,)
490         ,)
491 fi
492 dnl *** shl_load() in libdld (HP-UX)
493 if test -z "$G_MODULE_IMPL"; then
494         AC_MSG_CHECKING(how to export all symbols)
495         SAVED_LDFLAGS=$LDFLAGS
496         LDFLAGS="$LDFLAGS -Wl,-E"
497         AC_TRY_LINK(,[ return 0; ],
498                 [ G_MODULE_LDFLAGS="-Wl,-E" ],[
499                 LDFLAGS="$SAVED_LDFLAGS -bexpall"
500                 AC_TRY_LINK(,[ return 0; ],
501                         G_MODULE_LDFLAGS="-bexpall",
502                         G_MODULE_LDFLAGS="none"
503                 )
504         ])
505         LDFLAGS=$SAVED_LDFLAGS
506         AC_MSG_RESULT($G_MODULE_LDFLAGS)
507         if test "x$G_MODULE_LDFLAGS" = "xnone"; then
508                 G_MODULE_LDFLAGS=
509         fi
510         AC_CHECK_LIB(dld, shl_load,
511                 G_MODULE_LIBS=-ldld
512                 G_MODULE_IMPL=G_MODULE_IMPL_DLD
513         ,)
514 fi
515 dnl *** additional checks for G_MODULE_IMPL_DL
516 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
517         case "$host_os" in
518           linux*)
519             G_MODULE_LDFLAGS='-rdynamic'
520             ;;
521         esac
522         LIBS_orig="$LIBS"
523         LDFLAGS_orig="$LDFLAGS"
524         LIBS="$LIBS $G_MODULE_LIBS"
525         LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
526 dnl *** check whether we need preceeding underscores
527         AC_MSG_CHECKING(for preceeding underscore in symbols)
528         AC_CACHE_VAL(glib_cv_uscore,[
529                 AC_TRY_RUN([
530                 #include <dlfcn.h>
531                 int glib_underscore_test (void) { return 42; }
532                 int main() {
533                   void *f1 = (void*)0, *f2 = (void*)0, *handle;
534                   handle = dlopen ((void*)0, 0);
535                   if (handle) {
536                     f1 = dlsym (handle, "glib_underscore_test");
537                     f2 = dlsym (handle, "_glib_underscore_test");
538                   } return (!f2 || f1);
539                 }],
540                         glib_cv_uscore=yes,
541                         glib_cv_uscore=no,
542                 )
543                 rm -f plugin.c plugin.o plugin.lo
544         ])
545         AC_MSG_RESULT($glib_cv_uscore)
546         if test "x$glib_cv_uscore" = "xyes"; then
547                 G_MODULE_NEED_USCORE=1
548         else
549                 G_MODULE_NEED_USCORE=0
550         fi
551
552         LDFLAGS="$LDFLAGS_orig"
553 dnl *** check for having dlerror()
554         AC_CHECK_FUNC(dlerror,
555                 G_MODULE_HAVE_DLERROR=1,
556                 G_MODULE_HAVE_DLERROR=0)
557         LIBS="$LIBS_orig"
558 fi
559 dnl *** done, have e got an implementation?
560 if test -z "$G_MODULE_IMPL"; then
561         G_MODULE_IMPL=0
562 fi
563 AC_SUBST(G_MODULE_IMPL)
564 AC_SUBST(G_MODULE_LIBS)
565 AC_SUBST(G_MODULE_PLUGIN_LIBS)
566 AC_SUBST(G_MODULE_LDFLAGS)
567 AC_SUBST(G_MODULE_HAVE_DLERROR)
568 AC_SUBST(G_MODULE_NEED_USCORE)
569 AC_SUBST(GLIB_DEBUG_FLAGS)
570
571
572 dnl ***********************
573 dnl *** g_thread checks ***
574 dnl ***********************
575
576 AC_ARG_WITH(threads, [  --with-threads=[none/posix/dce/solaris/nspr] specify a thread implementation to use],
577         if test "x$with_threads" = x; then
578                 want_threads=yes
579         else
580                 want_threads=$with_threads
581         fi,
582         want_threads=yes)
583 if test "x$enable_threads" = "xno"; then
584         want_threads=no
585 fi
586 if test "x$want_threads" = "xnone"; then
587         want_threads=no
588 fi
589
590 dnl error and warning message
591 dnl *************************
592
593 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
594                 computer. GLib will not have a default thread implementation."
595
596 FLAG_DOES_NOT_WORK="I can't find the MACRO, that enables thread safety on your
597                 platform (normaly it's "_REENTRANT"). I'll not use any flag on
598                 compilation now, but then your programs might not work.
599                 Please provide information on how it is done on your system."
600
601 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
602                 "
603
604 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
605                 provide information on your thread implementation.
606                 You can also run 'configure --disable-threads' 
607                 to compile without thread support."
608
609 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
610                 functions will not be MT-safe during their first call because
611                 there is no working 'getpwuid_r' on your system."
612
613 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
614                 because there is no 'localtime_r' on your system."
615
616 dnl determination of thread implementation
617 dnl ***************************************
618
619 have_threads=none
620 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
621         case $host in
622                 *-*-solaris*)
623                 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
624                 ;;
625         esac
626 fi
627 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
628                                 || test "x$want_threads" = xdce; then
629         # -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
630         # -U_OSF_SOURCE if for Digital UNIX 4.0d
631         GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
632         glib_save_CPPFLAGS="$CPPFLAGS"
633         CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
634         if test "x$have_threads" = xnone; then
635                 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_init[^a-zA-Z_]],
636                         pthread.h,
637                         have_threads=posix)
638         fi
639         if test "x$have_threads" = xnone; then
640                 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_create[^a-zA-Z_]],
641                         pthread.h,
642                         have_threads=dce)
643         fi
644         CPPFLAGS="$glib_save_CPPFLAGS"
645 fi
646 if test "x$want_threads" = xyes || test "x$want_threads" = xnspr; then
647         if test "x$have_threads" = xnone; then
648                 AC_CHECK_LIB(nspr21, PRP_NewNakedCondVar, have_threads=nspr)
649         fi
650 fi
651
652 AC_MSG_CHECKING(for thread implementation)
653
654 if test "x$have_threads" = xnone && test "x$want_threads" != xno; then
655         AC_MSG_RESULT(none available)
656         AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
657 else
658         AC_MSG_RESULT($have_threads)
659 fi
660
661
662 dnl determination of G_THREAD_LIBS
663 dnl ******************************
664
665 G_THREAD_LIBS=
666 G_THREAD_CFLAGS=
667
668 mutex_has_default=no
669 case $have_threads in
670         posix|dce)
671                 G_THREAD_LIBS=error
672                 glib_save_LIBS="$LIBS"
673                 for thread_lib in "" pthread pthreads c_r thread dce; do
674                         # This is not AC_CHECK_LIB to also work with function
675                         # name mangling in header files.
676                         if test x"$thread_lib" = x; then
677                                 add_thread_lib=""
678                                 IN=""
679                         else
680                                 add_thread_lib="-l$thread_lib"
681                                 IN=" in -l$thread_lib"
682                         fi
683                         
684                         LIBS="$glib_save_LIBS $add_thread_lib"
685                         
686                         AC_MSG_CHECKING(for pthread_create$IN)
687                         AC_TRY_LINK([#include <pthread.h>],
688                                 [pthread_create(NULL,NULL,NULL,NULL)],
689                                 [AC_MSG_RESULT(yes)
690                                 G_THREAD_LIBS="$add_thread_lib"
691                                 break],
692                                 [AC_MSG_RESULT(no)])
693                 done
694                 LIBS="$glib_save_LIBS"
695                 mutex_has_default=yes
696                 mutex_default_type='pthread_mutex_t'
697                 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
698                 mutex_header_file='pthread.h'
699                 if test "x$have_threads" = "xposix"; then
700                         g_threads_impl="POSIX"
701                 else
702                         g_threads_impl="DCE"
703                         have_threads="posix"
704                 fi
705                 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
706                 ;;
707         solaris)
708                 G_THREAD_LIBS=error
709                 AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
710                 mutex_has_default=yes
711                 mutex_default_type='mutex_t'
712                 mutex_default_init="DEFAULTMUTEX"
713                 mutex_header_file='thread.h'
714                 g_threads_impl="SOLARIS"
715                 ;;
716         nspr)
717                 AC_CHECK_LIB(nspr21, PRP_NewNakedCondVar,
718                              G_THREAD_LIBS="-lnspr21")
719                 g_threads_impl="NSPR"
720                 ;;
721         none)
722                 g_threads_impl="NONE"
723                 ;;
724         *)
725                 g_threads_impl="NONE"
726                 G_THREAD_LIBS=error
727                 ;;
728 esac
729
730 if test "x$G_THREAD_LIBS" = xerror; then
731         AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
732 fi
733
734 case $host in
735   *-*-beos*)
736     G_THREAD_LIBS="-lbe -lroot -L\$(top_builddir_full)/.libs -lglib "
737     ;;
738   *)
739     ;;
740 esac
741
742
743 AC_MSG_CHECKING(thread related libraries)
744 AC_MSG_RESULT($G_THREAD_LIBS)
745
746 dnl determination of G_THREAD_CFLAGS
747 dnl ********************************
748
749 if test x"$enable_threads" = xyes; then
750
751     G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_REENTRANT" # good default guess
752
753     case $host in
754         *-aix*)
755                 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
756                 if test x"$GCC" = xyes; then
757                         G_THREAD_CFLAGS="$G_THREAD_CFLAGS -mthreads"
758                 fi
759                 ;;
760         *-freebsd2.2*)
761                 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
762
763                 # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
764                 # -mthreads flag.
765                 ;;
766     esac
767
768     # if we are not finding the ctime_r function, then we probably are
769     # not using the proper multithread flag
770     old_CPPFLAGS=$CPPFLAGS
771     CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
772     # Note: Digital UNIX 4.0d #defines ctime_r to _Pctime_r for gcc.
773     AC_EGREP_HEADER([[^a-zA-Z_](_P)?ctime_r[^a-zA-Z_]], time.h, ,
774     G_THREAD_CFLAGS=
775     AC_MSG_WARN($FLAG_DOES_NOT_WORK))
776     CPPFLAGS=$old_CPPFLAGS
777
778     AC_MSG_CHECKING(thread related cflags)
779
780     AC_MSG_RESULT($G_THREAD_CFLAGS)
781 else
782     G_THREAD_CFLAGS=
783 fi
784
785 dnl check for mt safe function variants and some posix functions
786 dnl ************************************************************
787
788 if test x"$enable_threads" = xyes; then
789         glib_save_LIBS="$LIBS"
790         glib_save_CFLAGS="$CFLAGS"
791         # we are not doing the following for now, as this might require glib 
792         # to always be linked with the thread libs on some platforms. 
793         # LIBS="$LIBS $G_THREAD_LIBS"
794         CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
795         AC_CHECK_FUNCS(localtime_r rand_r)
796         if test "$ac_cv_header_pwd_h" = "yes"; then
797                 AC_MSG_CHECKING([for getpwuid_r])
798                 AC_CACHE_VAL(ac_cv_func_getpwuid_r,
799                         [AC_TRY_RUN([#include <errno.h>
800                                 int main () { char buffer[10000], *pointer; 
801                                 char getpwuid_r (long, void*, void*,
802                                         int, void*);
803                                 errno = 0;
804                                 getpwuid_r (0, &buffer, &buffer, 
805                                         sizeof (buffer), &pointer);
806                                 return errno == ENOSYS;}],
807                                 [ac_cv_func_getpwuid_r=yes],
808                                 [ac_cv_func_getpwuid_r=no])])
809                 if test "$ac_cv_func_getpwuid_r" = yes; then
810                         AC_MSG_RESULT(yes)
811                         AC_DEFINE(HAVE_GETPWUID_R)
812                 else
813                         AC_MSG_RESULT(no)
814                 fi
815                 if test "$ac_cv_func_getpwuid_r" = "yes"; then
816                         AC_MSG_CHECKING(whether getpwuid_r is posix like)
817                         # getpwuid_r(0, NULL, NULL, 0) is the signature on
818                         # solaris, if that is not found, the prog below won't 
819                         # compile, then the posix signature is assumed as 
820                         # the default.
821                         AC_TRY_COMPILE([#include <pwd.h>],
822                                 [getpwuid_r(0, NULL, NULL, 0);],
823                                 [AC_MSG_RESULT(no)],
824                                 [AC_MSG_RESULT(yes)
825                                 AC_DEFINE(HAVE_GETPWUID_R_POSIX)])
826                 fi
827         fi
828         LIBS="$glib_save_LIBS"
829         CFLAGS="$glib_save_CFLAGS"
830
831         # now spit out all the warnings.
832         if test "$ac_cv_func_getpwuid_r" != "yes"; then
833                 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
834         fi
835         if test "$ac_cv_func_localtime_r" != "yes"; then
836                 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
837         fi
838 fi
839
840 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c")
841 AC_SUBST(G_THREAD_CFLAGS)
842 AC_SUBST(G_THREAD_LIBS)
843
844 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
845
846 dnl **********************************************
847 dnl *** GDefaultMutex setup and initialization ***
848 dnl **********************************************
849 dnl
850 dnl if mutex_has_default = yes, we also got
851 dnl mutex_default_type, mutex_default_init and mutex_header_file
852 GLIB_IF_VAR_EQ(mutex_has_default, yes,
853         GLIB_SIZEOF([#include <$mutex_header_file>],
854                     $mutex_default_type,
855                     gmutex,
856                     )
857         GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
858                            $mutex_default_type,
859                            gmutex,
860                            $glib_cv_sizeof_gmutex,
861                            $mutex_default_init)
862         ,
863 )
864
865
866 dnl ****************************************
867 dnl *** GLib POLL* compatibility defines ***
868 dnl ****************************************
869 GLIB_SYSDEFS(
870 [#include <sys/types.h>
871 #include <sys/poll.h>],
872         POLLIN:1 POLLOUT:4 POLLPRI:2 POLLERR:8 POLLHUP:16 POLLNVAL:32,
873         glibconfig-sysdefs.h,
874         =)
875
876
877 dnl ******************************
878 dnl *** output the whole stuff ***
879 dnl ******************************
880
881 AC_OUTPUT_COMMANDS([
882
883 ## Generate `glibconfig.h' in two cases
884 ## 1. `config.status' is run either explicitly, or via configure.
885 ##     Esp. not when it is run in `Makefile' to generate makefiles and
886 ##     config.h
887 ## 2. CONFIG_OTHER is set explicitly
888 ##
889 ## Case 1 is difficult.  We know that `automake' sets one of
890 ## CONFIG_FILES or CONFIG_HEADERS to empty.  This heuristic works
891 ## only when AM_CONFIG_HEADER is set, however.
892
893 if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
894   # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
895   CONFIG_OTHER=${CONFIG_OTHER:-glibconfig.h}
896 fi
897 case "$CONFIG_OTHER" in
898 *glibconfig.h*)
899         echo creating glibconfig.h
900         outfile=glibconfig.h-tmp
901         cat > $outfile <<\_______EOF
902 /* glibconfig.h
903  *
904  * This is a generated file.  Please modify `configure.in'
905  */
906
907 #ifndef GLIBCONFIG_H
908 #define GLIBCONFIG_H
909
910 #ifdef __cplusplus
911 extern "C" {
912 #endif /* __cplusplus */
913
914 _______EOF
915
916         if test x$glib_limits_h = xyes; then
917           echo '#include <limits.h>' >> $outfile
918         fi
919         if test x$glib_float_h = xyes; then
920           echo '#include <float.h>' >> $outfile
921         fi
922         if test x$glib_values_h = xyes; then
923           echo '#include <values.h>' >> $outfile
924         fi
925         if test x$g_mutex_header_file != x; then
926           echo '#include <'"$g_mutex_header_file"'>' >> $outfile
927         fi
928         if test x$glib_sys_poll_h = xyes; then
929           echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
930         fi
931
932         cat >> $outfile <<_______EOF
933
934 #define G_MINFLOAT      $glib_mf
935 #define G_MAXFLOAT      $glib_Mf
936 #define G_MINDOUBLE     $glib_md
937 #define G_MAXDOUBLE     $glib_Md
938 #define G_MINSHORT      $glib_ms
939 #define G_MAXSHORT      $glib_Ms
940 #define G_MAXUSHORT     $glib_Mus
941 #define G_MININT        $glib_mi
942 #define G_MAXINT        $glib_Mi
943 #define G_MAXUINT       $glib_Mui
944 #define G_MINLONG       $glib_ml
945 #define G_MAXLONG       $glib_Ml
946 #define G_MAXULONG      $glib_Mul
947
948 _______EOF
949
950
951         ### this should always be true in a modern C/C++ compiler
952         cat >>$outfile <<_______EOF
953 typedef signed char gint8;
954 typedef unsigned char guint8;
955 _______EOF
956
957
958         if test -n "$gint16"; then
959           cat >>$outfile <<_______EOF
960 typedef signed $gint16 gint16;
961 typedef unsigned $gint16 guint16;
962 #define G_GINT16_FORMAT $gint16_format
963 #define G_GUINT16_FORMAT $guint16_format
964 _______EOF
965         fi
966
967
968         if test -n "$gint32"; then
969           cat >>$outfile <<_______EOF
970 typedef signed $gint32 gint32;
971 typedef unsigned $gint32 guint32;
972 #define G_GINT32_FORMAT $gint32_format
973 #define G_GUINT32_FORMAT $guint32_format
974 _______EOF
975         fi
976
977
978         if test -n "$gint64"; then
979           cat >>$outfile <<_______EOF
980 ${glib_warning_guard}#define G_HAVE_GINT64 1
981
982 ${glib_extension}typedef signed $gint64 gint64;
983 ${glib_extension}typedef unsigned $gint64 guint64;
984
985 #define G_GINT64_FORMAT $gint64_format
986 #define G_GUINT64_FORMAT $guint64_format
987 #define G_GINT64_CONSTANT(val)  $gint64_constant
988 _______EOF
989         fi
990
991
992         if test -z "$glib_unknown_void_p"; then
993           cat >>$outfile <<_______EOF
994
995 #define GPOINTER_TO_INT(p)      ((gint)  ${glib_gpi_cast} (p))
996 #define GPOINTER_TO_UINT(p)     ((guint) ${glib_gpui_cast} (p))
997
998 #define GINT_TO_POINTER(i)      ((gpointer) ${glib_gpi_cast} (i))
999 #define GUINT_TO_POINTER(u)     ((gpointer) ${glib_gpui_cast} (u))
1000 _______EOF
1001         else
1002           echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
1003         fi
1004
1005
1006
1007         cat >>$outfile <<_______EOF
1008 $glib_atexit
1009 $glib_memmove
1010 $glib_defines
1011
1012 $glib_vacopy
1013
1014 #ifdef  __cplusplus
1015 #define G_HAVE_INLINE   1
1016 #else   /* !__cplusplus */
1017 $glib_inline
1018 #endif  /* !__cplusplus */
1019 _______EOF
1020
1021         echo >>$outfile
1022         if test x$g_mutex_has_default = xyes; then
1023                 cat >>$outfile <<_______EOF
1024 $g_enable_threads_def G_THREADS_ENABLED
1025 #define G_THREADS_IMPL_$g_threads_impl_def
1026 typedef struct _GStaticMutex GStaticMutex;
1027 struct _GStaticMutex
1028 {
1029   struct _GMutex *runtime_mutex;
1030   union {
1031     char   pad[$g_mutex_sizeof];
1032     double dummy_double;
1033     void  *dummy_pointer;
1034     long   dummy_long;
1035   } aligned_pad_u;
1036 };
1037 #define G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
1038 #define g_static_mutex_get_mutex(mutex) \
1039   (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \
1040    g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
1041 _______EOF
1042         else
1043                 cat >>$outfile <<_______EOF
1044 $g_enable_threads_def G_THREADS_ENABLED
1045 #define G_THREADS_IMPL_$g_threads_impl_def
1046 typedef struct _GMutex* GStaticMutex;
1047 #define G_STATIC_MUTEX_INIT NULL
1048 #define g_static_mutex_get_mutex(mutex) (g_static_mutex_get_mutex_impl (mutex))
1049 _______EOF
1050         fi
1051
1052         echo >>$outfile
1053         g_bit_sizes="16 32"
1054         if test -n "$gint64"; then
1055           g_bit_sizes="$g_bit_sizes 64"
1056         fi
1057         for bits in $g_bit_sizes; do
1058           cat >>$outfile <<_______EOF
1059 #define GINT${bits}_TO_${g_bs_native}(val)      ((gint${bits}) (val))
1060 #define GUINT${bits}_TO_${g_bs_native}(val)     ((guint${bits}) (val))
1061 #define GINT${bits}_TO_${g_bs_alien}(val)       ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
1062 #define GUINT${bits}_TO_${g_bs_alien}(val)      (GUINT${bits}_SWAP_LE_BE (val))
1063 _______EOF
1064         done
1065
1066         cat >>$outfile <<_______EOF
1067 #define GLONG_TO_LE(val)        ((glong) GINT${glongbits}_TO_LE (val))
1068 #define GULONG_TO_LE(val)       ((gulong) GUINT${glongbits}_TO_LE (val))
1069 #define GLONG_TO_BE(val)        ((glong) GINT${glongbits}_TO_BE (val))
1070 #define GULONG_TO_BE(val)       ((gulong) GUINT${glongbits}_TO_BE (val))
1071 #define GINT_TO_LE(val)         ((gint) GINT${gintbits}_TO_LE (val))
1072 #define GUINT_TO_LE(val)        ((guint) GUINT${gintbits}_TO_LE (val))
1073 #define GINT_TO_BE(val)         ((gint) GINT${gintbits}_TO_BE (val))
1074 #define GUINT_TO_BE(val)        ((guint) GUINT${gintbits}_TO_BE (val))
1075 #define G_BYTE_ORDER $g_byte_order
1076
1077 _______EOF
1078
1079         if test -r glibconfig-sysdefs.h; then
1080           cat glibconfig-sysdefs.h >>$outfile
1081         fi
1082
1083         cat >>$outfile <<_______EOF
1084 #ifdef __cplusplus
1085 }
1086 #endif /* __cplusplus */
1087
1088 #endif /* GLIBCONFIG_H */
1089 _______EOF
1090
1091
1092         if cmp -s $outfile glibconfig.h; then
1093           echo glibconfig.h is unchanged
1094           rm -f $outfile
1095         else
1096           mv $outfile glibconfig.h
1097         fi ;;
1098 esac
1099 ],[
1100
1101 # Note that if two cases are the same, case goes with the first one.
1102 # Note also that this is inside an AC_OUTPUT_COMMAND.  We do not depend
1103 # on variable expansion in case labels.  Look at the generated config.status
1104 # for a hint.
1105
1106 case xyes in
1107 x$ac_cv_header_float_h)
1108   glib_float_h=yes
1109   glib_mf=FLT_MIN glib_Mf=FLT_MAX
1110   glib_md=DBL_MIN glib_Md=DBL_MAX
1111   ;;
1112 x$ac_cv_header_values_h)
1113   glib_values_h=yes
1114   glib_mf=MINFLOAT  glib_Mf=MAXFLOAT
1115   glib_md=MINDOUBLE glib_Md=MAXDOUBLE
1116   ;;
1117 esac
1118
1119 case xyes in
1120 x$ac_cv_header_limits_h)
1121   glib_limits_h=yes
1122   glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
1123   glib_mi=INT_MIN  glib_Mi=INT_MAX  glib_Mui=UINT_MAX
1124   glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
1125   ;;
1126 x$ac_cv_header_values_h)
1127   glib_values_h=yes
1128   glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
1129   glib_mi=MININT   glib_Mi=MAXINT   glib_Mui="(((guint)G_MAXINT)*2+1)"
1130   glib_ml=MINLONG  glib_Ml=MAXLONG  glib_Mul="(((gulong)G_MAXLONG)*2+1)"
1131   ;;
1132 esac
1133
1134 if test x$ac_cv_header_sys_poll_h = xyes ; then
1135   glib_sys_poll_h=yes
1136 fi
1137
1138 case 2 in
1139 $ac_cv_sizeof_short)            
1140   gint16=short
1141   gint16_format='"hi"'
1142   guint16_format='"hu"'
1143   ;;
1144 $ac_cv_sizeof_int)              
1145   gint16=int
1146   gint16_format='"i"'
1147   guint16_format='"u"'
1148   ;;
1149 esac
1150 case 4 in
1151 $ac_cv_sizeof_short)            
1152   gint32=short
1153   gint32_format='"hi"'
1154   guint32_format='"hu"'
1155   ;;
1156 $ac_cv_sizeof_int)              
1157   gint32=int
1158   gint32_format='"i"'
1159   guint32_format='"u"'
1160   ;;
1161 $ac_cv_sizeof_long)             
1162   gint32=long
1163   gint32_format='"li"'
1164   guint32_format='"lu"'
1165   ;;
1166 esac
1167 case 8 in
1168 $ac_cv_sizeof_int)
1169   gint64=int
1170   gint64_format='"i"'
1171   guint64_format='"u"'
1172   glib_extension=
1173   glib_warning_guard=
1174   gint64_constant='(val)'
1175   ;;
1176 $ac_cv_sizeof_long)
1177   gint64=long
1178   gint64_format='"li"'
1179   guint64_format='"lu"'
1180   glib_extension=
1181   glib_warning_guard=
1182   gint64_constant='(val##L)'
1183   ;;
1184 $ac_cv_sizeof_long_long)
1185   gint64='long long'
1186   gint64_format='"'$glib_cv_long_long_format'i"'
1187   guint64_format='"'$glib_cv_long_long_format'u"'
1188   glib_extension='G_GNUC_EXTENSION '
1189   glib_warning_guard="
1190 #if defined (__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 8
1191 #  define G_GNUC_EXTENSION __extension__
1192 #else
1193 #  define G_GNUC_EXTENSION
1194 #endif
1195
1196 "
1197   gint64_constant='(G_GNUC_EXTENSION (val##LL))'
1198   ;;
1199 esac
1200
1201 gintbits=`expr $ac_cv_sizeof_int \* 8`
1202 glongbits=`expr $ac_cv_sizeof_long \* 8`
1203
1204
1205 case $ac_cv_sizeof_void_p in
1206 $ac_cv_sizeof_int)      glib_gpi_cast=''        glib_gpui_cast=''         ;;
1207 $ac_cv_sizeof_long)     glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
1208 *)                      glib_unknown_void_p=yes ;;
1209 esac
1210
1211
1212 case xyes in
1213 x$ac_cv_func_atexit)
1214   glib_atexit="
1215 #ifdef NeXT /* @#%@! NeXTStep */
1216 # define g_ATEXIT(proc) (!atexit (proc))
1217 #else
1218 # define g_ATEXIT(proc) (atexit (proc))
1219 #endif"
1220   ;;
1221 x$ac_cv_func_on_exit)
1222   glib_atexit="
1223 #define g_ATEXIT(proc)  (on_exit ((void (*)(int, void*))(proc), NULL))"
1224   ;;
1225 esac
1226
1227 case xyes in
1228 x$ac_cv_func_memmove)
1229   glib_memmove='
1230 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
1231   ;;
1232 *)
1233   glib_memmove="
1234 /* We make the assumption that if memmove isn't available, then
1235  * bcopy will do the job. This isn't safe everywhere. (bcopy can't
1236  * necessarily handle overlapping copies) */
1237 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
1238   ;;
1239 esac
1240
1241 glib_defines="
1242 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
1243 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
1244 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
1245 "
1246
1247 case xyes in
1248 x$glib_cv_va_copy)      glib_vacopy='#define G_VA_COPY  va_copy' ;;
1249 x$glib_cv___va_copy)    glib_vacopy='#define G_VA_COPY  __va_copy' ;;
1250 *)                      glib_vacopy=''
1251 esac
1252
1253 if test x$glib_cv_va_val_copy = xno; then
1254   glib_vacopy="\$glib_vacopy
1255 #define G_VA_COPY_AS_ARRAY 1"
1256 fi
1257
1258 if test x$glib_cv_hasinline = xyes; then
1259     glib_inline='#define G_HAVE_INLINE 1'
1260 fi
1261 if test x$glib_cv_has__inline = xyes; then
1262     glib_inline="\$glib_inline
1263 #define G_HAVE___INLINE 1"
1264 fi
1265 if test x$glib_cv_has__inline__ = xyes; then
1266     glib_inline="\$glib_inline
1267 #define G_HAVE___INLINE__ 1"
1268 fi
1269
1270 case xyes in
1271 x$ac_cv_c_bigendian)
1272   g_byte_order=G_BIG_ENDIAN
1273   g_bs_native=BE
1274   g_bs_alien=LE
1275   ;;
1276 *)
1277   g_byte_order=G_LITTLE_ENDIAN
1278   g_bs_native=LE
1279   g_bs_alien=BE
1280   ;;
1281 esac
1282
1283 case x$enable_threads in
1284 xyes)   g_enable_threads_def="#define";;
1285 *)      g_enable_threads_def="#undef ";;
1286 esac
1287
1288 g_threads_impl_def=$g_threads_impl
1289
1290 g_mutex_has_default="$mutex_has_default"
1291 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
1292 g_mutex_contents="$glib_cv_byte_contents_gmutex"
1293
1294 if test "x$glib_native_beos" = "xyes"; then
1295     glib_native_beos_def="\$glib_native_beos_def
1296 #define GLIB_NATIVE_BEOS 1"
1297 fi           
1298 ])
1299
1300 AC_OUTPUT([
1301 glib.spec
1302 Makefile
1303 glib-config
1304 gmodule/gmoduleconf.h
1305 gmodule/Makefile
1306 gthread/Makefile
1307 docs/Makefile
1308 tests/Makefile
1309 ],[case "$CONFIG_FILES" in
1310 *glib-config*)chmod +x glib-config;;
1311 esac
1312 echo ""
1313 echo " *** IMPORTANT *** "
1314 echo ""
1315 echo "This is a development version of GLib.  You should be using a stable"
1316 echo "version, which is available at ftp://ftp.gtk.org/pub/gtk/v1.2/.  The"
1317 echo "version you just configured is meant for developers of GLib only:"
1318 echo ""
1319 echo "  * You should not base stable software on this version of GLib."
1320 echo "  * GNOME developers should use a stable version of GLib."
1321 echo ""
1322 echo "Distributions should *NOT* ship a development package of this GLib."
1323 echo "Do not ship the headers and do not ship the glib-config script.  These"
1324 echo "things will conflict with the stable 1.2 series.  Package only enough"
1325 echo "to satisfy the requirements of some other package.  Package only the"
1326 echo "library itself.  Doing otherwise will do no favors to the community."
1327 echo ""
1328 echo "If you install this version of GLib, we strongly recommend that you"
1329 echo "install it in a different prefix than GLib 1.2.  Use --prefix as an"
1330 echo "argument to configure to do this.  Otherwise, you will not be able to"
1331 echo "do development with GLib 1.2 any longer."
1332 echo ""
1333 echo " *** You should be using GLib 1.2 instead. ***"
1334 ])
1335