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