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