1 dnl ***********************************
2 dnl *** include special GLib macros ***
3 dnl ***********************************
4 builtin(include, acglib.m4)dnl
6 # require autoconf 2.13
9 # Process this file with autoconf to produce a configure script.
12 # Save this value here, since automake will set cflags later
13 cflags_set=${CFLAGS+set}
15 # we rewrite this file
16 rm -f glibconfig-sysdefs.h
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
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.
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.
39 GLIB_VERSION=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION.$GLIB_MICRO_VERSION
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)
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`
62 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
64 # Specify a configuration file
65 AM_CONFIG_HEADER(config.h)
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)
73 dnl Initialize libtool
76 dnl Initialize maintainer mode
81 dnl figure debugging default, prior to $ac_help setup
83 AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
84 if test `expr $GLIB_MINOR_VERSION \% 2` = 1 ; then
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]],
97 AC_ARG_ENABLE(threads, [ --enable-threads turn on basic thread support [default=yes]
98 ([=no] will override --with-threads)],,enable_threads=yes)
100 if test "x$enable_threads" != "xyes"; then
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)
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)
122 if test "x$enable_debug" = "xyes"; then
123 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
124 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
126 if test "x$enable_debug" = "xno"; then
127 GLIB_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
131 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}")
133 # Checks for programs.
139 if test "x$GCC" = "xyes"; then
141 *[\ \ ]-Wall[\ \ ]*) ;;
142 *) CFLAGS="$CFLAGS -Wall" ;;
145 if test "x$enable_ansi" = "xyes"; then
147 *[\ \ ]-ansi[\ \ ]*) ;;
148 *) CFLAGS="$CFLAGS -ansi" ;;
152 *[\ \ ]-pedantic[\ \ ]*) ;;
153 *) CFLAGS="$CFLAGS -pedantic" ;;
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])
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),
172 CFLAGS=$glib_save_CFLAGS
174 [No ANSI prototypes found in library. (-std1 didn't work.)])
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),
188 CFLAGS=$glib_save_CFLAGS
189 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
191 # Checks for header files.
194 # Checks for library functions.
197 AC_CHECK_FUNCS(atexit on_exit)
199 AC_CHECK_SIZEOF(char)
200 AC_CHECK_SIZEOF(short)
201 AC_CHECK_SIZEOF(long)
203 AC_CHECK_SIZEOF(void *)
204 AC_CHECK_SIZEOF(long long)
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>
213 long long b, a = -0x3AFAFAFAFAFAFAFALL;
215 sprintf (buffer, "%llu", a);
216 sscanf (buffer, "%llu", &b);
220 glib_cv_long_long_format=ll,
221 glib_cv_long_long_format=q)])
222 AC_MSG_RESULT(%${glib_cv_long_long_format}i)
225 dnl long doubles were not used, and a portability problem
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,[
235 __inline int foo () { return 0; }
236 int main () { return foo (); }
238 glib_cv_has__inline=yes
240 glib_cv_has__inline=no
243 AC_MSG_RESULT($glib_cv_has__inline)
244 case x$glib_cv_has__inline in
245 xyes) AC_DEFINE(G_HAVE___INLINE)
247 AC_MSG_CHECKING(for __inline__)
248 AC_CACHE_VAL(glib_cv_has__inline__,[
250 __inline__ int foo () { return 0; }
251 int main () { return foo (); }
253 glib_cv_has__inline__=yes
255 glib_cv_has__inline__=no
258 AC_MSG_RESULT($glib_cv_has__inline__)
259 case x$glib_cv_has__inline__ in
260 xyes) AC_DEFINE(G_HAVE___INLINE__)
262 AC_MSG_CHECKING(for inline)
263 AC_CACHE_VAL(glib_cv_hasinline,[
265 inline int foo () { return 0; }
266 int main () { return foo (); }
268 glib_cv_hasinline=yes
273 AC_MSG_RESULT($glib_cv_hasinline)
274 case x$glib_cv_hasinline in
275 xyes) AC_DEFINE(G_HAVE_INLINE)
278 dnl for bytesex stuff
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))
293 # Check for some functions
294 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf strcasecmp strncasecmp poll)
296 # Check for sys_errlist
297 AC_MSG_CHECKING(for sys_errlist)
299 extern char *sys_errlist[];
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)
308 # Check for sys_siglist
309 AC_MSG_CHECKING(for sys_siglist)
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)
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)
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])
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])
346 dnl *** check for sane realloc() ***
347 AC_MSG_CHECKING(whether realloc (NULL,) will work)
348 AC_CACHE_VAL(glib_cv_sane_realloc,[
352 return realloc (0, sizeof (int)) == 0;
354 glib_cv_sane_realloc=yes
355 AC_DEFINE(REALLOC_0_WORKS)
357 glib_cv_sane_realloc=no
360 AC_MSG_RESULT($glib_cv_sane_realloc)
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,[
372 void f (int i, ...) {
373 va_list args1, args2;
375 va_copy (args2, args1);
376 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
378 va_end (args1); va_end (args2);
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,[
394 void f (int i, ...) {
395 va_list args1, args2;
397 __va_copy (args2, args1);
398 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
400 va_end (args1); va_end (args2);
406 glib_cv___va_copy=yes
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,[
416 void f (int i, ...) {
417 va_list args1, args2;
420 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
422 va_end (args1); va_end (args2);
428 glib_cv_va_val_copy=yes
430 glib_cv_va_val_copy=no
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)
439 if test "x$glib_cv_va_val_copy" = "xno"; then
440 AC_DEFINE(G_VA_COPY_AS_ARRAY)
442 AC_MSG_RESULT($glib_cv_va_val_copy)
445 dnl ***********************
446 dnl *** g_module checks ***
447 dnl ***********************
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,
457 G_MODULE_IMPL=G_MODULE_IMPL_DL
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,
466 G_MODULE_IMPL=G_MODULE_IMPL_DL
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"
483 LDFLAGS=$SAVED_LDFLAGS
484 AC_MSG_RESULT($G_MODULE_LDFLAGS)
485 if test "x$G_MODULE_LDFLAGS" = "xnone"; then
488 AC_CHECK_LIB(dld, shl_load,
490 G_MODULE_IMPL=G_MODULE_IMPL_DLD
493 dnl *** additional checks for G_MODULE_IMPL_DL
494 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
497 G_MODULE_LDFLAGS='-rdynamic'
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,[
509 int glib_underscore_test (void) { return 42; }
511 void *f1 = (void*)0, *f2 = (void*)0, *handle;
512 handle = dlopen ((void*)0, 0);
514 f1 = dlsym (handle, "glib_underscore_test");
515 f2 = dlsym (handle, "_glib_underscore_test");
516 } return (!f2 || f1);
521 rm -f plugin.c plugin.o plugin.lo
523 AC_MSG_RESULT($glib_cv_uscore)
524 if test "x$glib_cv_uscore" = "xyes"; then
525 G_MODULE_NEED_USCORE=1
527 G_MODULE_NEED_USCORE=0
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)
537 dnl *** done, have e got an implementation?
538 if test -z "$G_MODULE_IMPL"; then
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)
549 dnl ***********************
550 dnl *** g_thread checks ***
551 dnl ***********************
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
557 want_threads=$with_threads
560 if test "x$enable_threads" = "xno"; then
563 if test "x$want_threads" = "xnone"; then
567 dnl error and warning message
568 dnl *************************
570 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
571 computer. GLib will not have a default thread implementation."
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."
578 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
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."
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."
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."
593 dnl determination of thread implementation
594 dnl ***************************************
597 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
600 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
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_]],
616 if test "x$have_threads" = xnone; then
617 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_create[^a-zA-Z_]],
621 CPPFLAGS="$glib_save_CPPFLAGS"
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)
629 AC_MSG_CHECKING(for thread implementation)
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)
635 AC_MSG_RESULT($have_threads)
639 dnl determination of G_THREAD_LIBS
640 dnl ******************************
646 case $have_threads in
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
657 add_thread_lib="-l$thread_lib"
658 IN=" in -l$thread_lib"
661 LIBS="$glib_save_LIBS $add_thread_lib"
663 AC_MSG_CHECKING(for pthread_create$IN)
664 AC_TRY_LINK([#include <pthread.h>],
665 [pthread_create(NULL,NULL,NULL,NULL)],
667 G_THREAD_LIBS="$add_thread_lib"
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"
682 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
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"
694 AC_CHECK_LIB(nspr21, PRP_NewNakedCondVar,
695 G_THREAD_LIBS="-lnspr21")
696 g_threads_impl="NSPR"
699 g_threads_impl="NONE"
702 g_threads_impl="NONE"
707 if test "x$G_THREAD_LIBS" = xerror; then
708 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
711 AC_MSG_CHECKING(thread related libraries)
712 AC_MSG_RESULT($G_THREAD_LIBS)
714 dnl determination of G_THREAD_CFLAGS
715 dnl ********************************
717 if test x"$enable_threads" = xyes; then
719 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_REENTRANT" # good default guess
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"
729 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
731 # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
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, ,
743 AC_MSG_WARN($FLAG_DOES_NOT_WORK))
744 CPPFLAGS=$old_CPPFLAGS
746 AC_MSG_CHECKING(thread related cflags)
748 AC_MSG_RESULT($G_THREAD_CFLAGS)
753 dnl check for mt safe function variants and some posix functions
754 dnl ************************************************************
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*,
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
779 AC_DEFINE(HAVE_GETPWUID_R)
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
789 AC_TRY_COMPILE([#include <pwd.h>],
790 [getpwuid_r(0, NULL, NULL, 0);],
793 AC_DEFINE(HAVE_GETPWUID_R_POSIX)])
796 LIBS="$glib_save_LIBS"
797 CFLAGS="$glib_save_CFLAGS"
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)
803 if test "$ac_cv_func_localtime_r" != "yes"; then
804 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
808 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c")
809 AC_SUBST(G_THREAD_CFLAGS)
810 AC_SUBST(G_THREAD_LIBS)
812 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
814 dnl **********************************************
815 dnl *** GDefaultMutex setup and initialization ***
816 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>],
825 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
828 $glib_cv_sizeof_gmutex,
834 dnl ****************************************
835 dnl *** GLib POLL* compatibility defines ***
836 dnl ****************************************
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,
845 dnl ******************************
846 dnl *** output the whole stuff ***
847 dnl ******************************
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
855 ## 2. CONFIG_OTHER is set explicitly
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.
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}
865 case "$CONFIG_OTHER" in
867 echo creating glibconfig.h
868 outfile=glibconfig.h-tmp
869 cat > $outfile <<\_______EOF
872 * This is a generated file. Please modify `configure.in'
880 #endif /* __cplusplus */
884 if test x$glib_limits_h = xyes; then
885 echo '#include <limits.h>' >> $outfile
887 if test x$glib_float_h = xyes; then
888 echo '#include <float.h>' >> $outfile
890 if test x$glib_values_h = xyes; then
891 echo '#include <values.h>' >> $outfile
893 if test x$g_mutex_header_file != x; then
894 echo '#include <'"$g_mutex_header_file"'>' >> $outfile
896 if test x$glib_sys_poll_h = xyes; then
897 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
900 cat >> $outfile <<_______EOF
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
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;
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
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
946 if test -n "$gint64"; then
947 cat >>$outfile <<_______EOF
948 ${glib_warning_guard}#define G_HAVE_GINT64 1
950 ${glib_extension}typedef signed $gint64 gint64;
951 ${glib_extension}typedef unsigned $gint64 guint64;
953 #define G_GINT64_FORMAT $gint64_format
954 #define G_GUINT64_FORMAT $guint64_format
955 #define G_GINT64_CONSTANT(val) $gint64_constant
960 if test -z "$glib_unknown_void_p"; then
961 cat >>$outfile <<_______EOF
963 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
964 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
966 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
967 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
970 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
975 cat >>$outfile <<_______EOF
983 #define G_HAVE_INLINE 1
984 #else /* !__cplusplus */
986 #endif /* !__cplusplus */
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;
997 struct _GMutex *runtime_mutex;
999 char pad[$g_mutex_sizeof];
1000 double dummy_double;
1001 void *dummy_pointer;
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)))
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))
1022 if test -n "$gint64"; then
1023 g_bit_sizes="$g_bit_sizes 64"
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))
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
1047 if test -r glibconfig-sysdefs.h; then
1048 cat glibconfig-sysdefs.h >>$outfile
1051 cat >>$outfile <<_______EOF
1054 #endif /* __cplusplus */
1056 #endif /* GLIBCONFIG_H */
1060 if cmp -s $outfile glibconfig.h; then
1061 echo glibconfig.h is unchanged
1064 mv $outfile glibconfig.h
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
1075 x$ac_cv_header_float_h)
1077 glib_mf=FLT_MIN glib_Mf=FLT_MAX
1078 glib_md=DBL_MIN glib_Md=DBL_MAX
1080 x$ac_cv_header_values_h)
1082 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
1083 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
1088 x$ac_cv_header_limits_h)
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
1094 x$ac_cv_header_values_h)
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)"
1102 if test x$ac_cv_header_sys_poll_h = xyes ; then
1107 $ac_cv_sizeof_short)
1109 gint16_format='"hi"'
1110 guint16_format='"hu"'
1115 guint16_format='"u"'
1119 $ac_cv_sizeof_short)
1121 gint32_format='"hi"'
1122 guint32_format='"hu"'
1127 guint32_format='"u"'
1131 gint32_format='"li"'
1132 guint32_format='"lu"'
1139 guint64_format='"u"'
1142 gint64_constant='(val)'
1146 gint64_format='"li"'
1147 guint64_format='"lu"'
1150 gint64_constant='(val##L)'
1152 $ac_cv_sizeof_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__
1161 # define G_GNUC_EXTENSION
1165 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
1169 gintbits=`expr $ac_cv_sizeof_int \* 8`
1170 glongbits=`expr $ac_cv_sizeof_long \* 8`
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 ;;
1181 x$ac_cv_func_atexit)
1183 #ifdef NeXT /* @#%@! NeXTStep */
1184 # define g_ATEXIT(proc) (!atexit (proc))
1186 # define g_ATEXIT(proc) (atexit (proc))
1189 x$ac_cv_func_on_exit)
1191 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
1196 x$ac_cv_func_memmove)
1198 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
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"
1210 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
1211 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
1212 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
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' ;;
1221 if test x$glib_cv_va_val_copy = xno; then
1222 glib_vacopy="\$glib_vacopy
1223 #define G_VA_COPY_AS_ARRAY 1"
1226 if test x$glib_cv_hasinline = xyes; then
1227 glib_inline='#define G_HAVE_INLINE 1'
1229 if test x$glib_cv_has__inline = xyes; then
1230 glib_inline="\$glib_inline
1231 #define G_HAVE___INLINE 1"
1233 if test x$glib_cv_has__inline__ = xyes; then
1234 glib_inline="\$glib_inline
1235 #define G_HAVE___INLINE__ 1"
1239 x$ac_cv_c_bigendian)
1240 g_byte_order=G_BIG_ENDIAN
1245 g_byte_order=G_LITTLE_ENDIAN
1251 case x$enable_threads in
1252 xyes) g_enable_threads_def="#define";;
1253 *) g_enable_threads_def="#undef ";;
1256 g_threads_impl_def=$g_threads_impl
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"
1267 gmodule/gmoduleconf.h
1272 ],[case "$CONFIG_FILES" in
1273 *glib-config*)chmod +x glib-config;;
1276 echo " *** IMPORTANT *** "
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:"
1282 echo " * You should not base stable software on this version of GLib."
1283 echo " * GNOME developers should use a stable version of GLib."
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."
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."
1296 echo " *** You should be using GLib 1.2 instead. ***"