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_VERSION)
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`
58 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
60 # Specify a configuration file
61 AM_CONFIG_HEADER(config.h)
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)
69 dnl Initialize libtool
72 dnl Initialize maintainer mode
77 dnl figure debugging default, prior to $ac_help setup
79 AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
80 if test `expr $GLIB_MINOR_VERSION \% 2` = 1 ; then
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]],
93 AC_ARG_ENABLE(threads, [ --enable-threads turn on basic thread support [default=yes]
94 ([=no] will override --with-threads)],,enable_threads=yes)
96 if test "x$enable_threads" != "xyes"; then
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)
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)
118 if test "x$enable_debug" = "xyes"; then
119 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
120 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
122 if test "x$enable_debug" = "xno"; then
123 GLIB_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
127 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}")
129 # Checks for programs.
135 if test "x$GCC" = "xyes"; then
137 *[\ \ ]-Wall[\ \ ]*) ;;
138 *) CFLAGS="$CFLAGS -Wall" ;;
141 if test "x$enable_ansi" = "xyes"; then
143 *[\ \ ]-ansi[\ \ ]*) ;;
144 *) CFLAGS="$CFLAGS -ansi" ;;
148 *[\ \ ]-pedantic[\ \ ]*) ;;
149 *) CFLAGS="$CFLAGS -pedantic" ;;
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])
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),
168 CFLAGS=$glib_save_CFLAGS
170 [No ANSI prototypes found in library. (-std1 didn't work.)])
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),
184 CFLAGS=$glib_save_CFLAGS
185 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
187 # Checks for header files.
190 # Checks for library functions.
193 AC_CHECK_FUNCS(atexit on_exit)
195 AC_CHECK_SIZEOF(char)
196 AC_CHECK_SIZEOF(short)
197 AC_CHECK_SIZEOF(long)
199 AC_CHECK_SIZEOF(void *)
200 AC_CHECK_SIZEOF(long long)
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>
209 long long b, a = -0x3AFAFAFAFAFAFAFALL;
211 sprintf (buffer, "%llu", a);
212 sscanf (buffer, "%llu", &b);
216 glib_cv_long_long_format=ll,
217 glib_cv_long_long_format=q)])
218 AC_MSG_RESULT(%${glib_cv_long_long_format}i)
221 dnl long doubles were not used, and a portability problem
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,[
231 __inline int foo () { return 0; }
232 int main () { return foo (); }
234 glib_cv_has__inline=yes
236 glib_cv_has__inline=no
239 AC_MSG_RESULT($glib_cv_has__inline)
240 case x$glib_cv_has__inline in
241 xyes) AC_DEFINE(G_HAVE___INLINE)
243 AC_MSG_CHECKING(for __inline__)
244 AC_CACHE_VAL(glib_cv_has__inline__,[
246 __inline__ int foo () { return 0; }
247 int main () { return foo (); }
249 glib_cv_has__inline__=yes
251 glib_cv_has__inline__=no
254 AC_MSG_RESULT($glib_cv_has__inline__)
255 case x$glib_cv_has__inline__ in
256 xyes) AC_DEFINE(G_HAVE___INLINE__)
258 AC_MSG_CHECKING(for inline)
259 AC_CACHE_VAL(glib_cv_hasinline,[
261 inline int foo () { return 0; }
262 int main () { return foo (); }
264 glib_cv_hasinline=yes
269 AC_MSG_RESULT($glib_cv_hasinline)
270 case x$glib_cv_hasinline in
271 xyes) AC_DEFINE(G_HAVE_INLINE)
274 dnl for bytesex stuff
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))
289 # Check for some functions
290 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf strcasecmp strncasecmp poll)
292 # Check for sys_errlist
293 AC_MSG_CHECKING(for sys_errlist)
295 extern char *sys_errlist[];
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)
304 # Check for sys_siglist
305 AC_MSG_CHECKING(for sys_siglist)
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)
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)
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])
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])
342 dnl *** check for sane realloc() ***
343 AC_MSG_CHECKING(whether realloc (NULL,) will work)
344 AC_CACHE_VAL(glib_cv_sane_realloc,[
348 return realloc (0, sizeof (int)) == 0;
350 glib_cv_sane_realloc=yes
351 AC_DEFINE(REALLOC_0_WORKS)
353 glib_cv_sane_realloc=no
356 AC_MSG_RESULT($glib_cv_sane_realloc)
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,[
368 void f (int i, ...) {
369 va_list args1, args2;
371 va_copy (args2, args1);
372 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
374 va_end (args1); va_end (args2);
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,[
390 void f (int i, ...) {
391 va_list args1, args2;
393 __va_copy (args2, args1);
394 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
396 va_end (args1); va_end (args2);
402 glib_cv___va_copy=yes
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,[
412 void f (int i, ...) {
413 va_list args1, args2;
416 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
418 va_end (args1); va_end (args2);
424 glib_cv_va_val_copy=yes
426 glib_cv_va_val_copy=no
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)
435 if test "x$glib_cv_va_val_copy" = "xno"; then
436 AC_DEFINE(G_VA_COPY_AS_ARRAY)
438 AC_MSG_RESULT($glib_cv_va_val_copy)
441 dnl ***********************
442 dnl *** g_module checks ***
443 dnl ***********************
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,
453 G_MODULE_IMPL=G_MODULE_IMPL_DL
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,
462 G_MODULE_IMPL=G_MODULE_IMPL_DL
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"
479 LDFLAGS=$SAVED_LDFLAGS
480 AC_MSG_RESULT($G_MODULE_LDFLAGS)
481 if test "x$G_MODULE_LDFLAGS" = "xnone"; then
484 AC_CHECK_LIB(dld, shl_load,
486 G_MODULE_IMPL=G_MODULE_IMPL_DLD
489 dnl *** additional checks for G_MODULE_IMPL_DL
490 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
493 G_MODULE_LDFLAGS='-rdynamic'
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,[
505 int glib_underscore_test (void) { return 42; }
507 void *f1 = (void*)0, *f2 = (void*)0, *handle;
508 handle = dlopen ((void*)0, 0);
510 f1 = dlsym (handle, "glib_underscore_test");
511 f2 = dlsym (handle, "_glib_underscore_test");
512 } return (!f2 || f1);
517 rm -f plugin.c plugin.o plugin.lo
519 AC_MSG_RESULT($glib_cv_uscore)
520 if test "x$glib_cv_uscore" = "xyes"; then
521 G_MODULE_NEED_USCORE=1
523 G_MODULE_NEED_USCORE=0
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)
533 dnl *** done, have e got an implementation?
534 if test -z "$G_MODULE_IMPL"; then
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)
545 dnl ***********************
546 dnl *** g_thread checks ***
547 dnl ***********************
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
553 want_threads=$with_threads
556 if test "x$enable_threads" = "xno"; then
559 if test "x$want_threads" = "xnone"; then
563 dnl error and warning message
564 dnl *************************
566 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
567 computer. GLib will not have a default thread implementation."
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."
574 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
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."
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."
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."
589 dnl determination of thread implementation
590 dnl ***************************************
593 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
596 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
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_]],
612 if test "x$have_threads" = xnone; then
613 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_create[^a-zA-Z_]],
617 CPPFLAGS="$glib_save_CPPFLAGS"
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)
625 AC_MSG_CHECKING(for thread implementation)
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)
631 AC_MSG_RESULT($have_threads)
635 dnl determination of G_THREAD_LIBS
636 dnl ******************************
642 case $have_threads in
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
653 add_thread_lib="-l$thread_lib"
654 IN=" in -l$thread_lib"
657 LIBS="$glib_save_LIBS $add_thread_lib"
659 AC_MSG_CHECKING(for pthread_create$IN)
660 AC_TRY_LINK([#include <pthread.h>],
661 [pthread_create(NULL,NULL,NULL,NULL)],
663 G_THREAD_LIBS="$add_thread_lib"
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"
678 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
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"
690 AC_CHECK_LIB(nspr21, PRP_NewNakedCondVar,
691 G_THREAD_LIBS="-lnspr21")
692 g_threads_impl="NSPR"
695 g_threads_impl="NONE"
698 g_threads_impl="NONE"
703 if test "x$G_THREAD_LIBS" = xerror; then
704 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
707 AC_MSG_CHECKING(thread related libraries)
708 AC_MSG_RESULT($G_THREAD_LIBS)
710 dnl determination of G_THREAD_CFLAGS
711 dnl ********************************
713 if test x"$enable_threads" = xyes; then
715 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_REENTRANT" # good default guess
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"
725 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
727 # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
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, ,
739 AC_MSG_WARN($FLAG_DOES_NOT_WORK))
740 CPPFLAGS=$old_CPPFLAGS
742 AC_MSG_CHECKING(thread related cflags)
744 AC_MSG_RESULT($G_THREAD_CFLAGS)
749 dnl check for mt safe function variants and some posix functions
750 dnl ************************************************************
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*,
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
775 AC_DEFINE(HAVE_GETPWUID_R)
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
785 AC_TRY_COMPILE([#include <pwd.h>],
786 [getpwuid_r(0, NULL, NULL, 0);],
789 AC_DEFINE(HAVE_GETPWUID_R_POSIX)])
792 LIBS="$glib_save_LIBS"
793 CFLAGS="$glib_save_CFLAGS"
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)
799 if test "$ac_cv_func_localtime_r" != "yes"; then
800 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
804 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c")
805 AC_SUBST(G_THREAD_CFLAGS)
806 AC_SUBST(G_THREAD_LIBS)
808 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
810 dnl **********************************************
811 dnl *** GDefaultMutex setup and initialization ***
812 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>],
821 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
824 $glib_cv_sizeof_gmutex,
830 dnl ****************************************
831 dnl *** GLib POLL* compatibility defines ***
832 dnl ****************************************
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,
841 dnl ******************************
842 dnl *** output the whole stuff ***
843 dnl ******************************
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
851 ## 2. CONFIG_OTHER is set explicitly
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.
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}
861 case "$CONFIG_OTHER" in
863 echo creating glibconfig.h
864 outfile=glibconfig.h-tmp
865 cat > $outfile <<\_______EOF
868 * This is a generated file. Please modify `configure.in'
876 #endif /* __cplusplus */
880 if test x$glib_limits_h = xyes; then
881 echo '#include <limits.h>' >> $outfile
883 if test x$glib_float_h = xyes; then
884 echo '#include <float.h>' >> $outfile
886 if test x$glib_values_h = xyes; then
887 echo '#include <values.h>' >> $outfile
889 if test x$g_mutex_header_file != x; then
890 echo '#include <'"$g_mutex_header_file"'>' >> $outfile
892 if test x$glib_sys_poll_h = xyes; then
893 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
896 cat >> $outfile <<_______EOF
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
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;
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
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
942 if test -n "$gint64"; then
943 cat >>$outfile <<_______EOF
944 ${glib_warning_guard}#define G_HAVE_GINT64 1
946 ${glib_extension}typedef signed $gint64 gint64;
947 ${glib_extension}typedef unsigned $gint64 guint64;
949 #define G_GINT64_FORMAT $gint64_format
950 #define G_GUINT64_FORMAT $guint64_format
951 #define G_GINT64_CONSTANT(val) $gint64_constant
956 if test -z "$glib_unknown_void_p"; then
957 cat >>$outfile <<_______EOF
959 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
960 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
962 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
963 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
966 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
971 cat >>$outfile <<_______EOF
979 #define G_HAVE_INLINE 1
980 #else /* !__cplusplus */
982 #endif /* !__cplusplus */
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;
993 struct _GMutex *runtime_mutex;
995 char pad[$g_mutex_sizeof];
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)))
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))
1018 if test -n "$gint64"; then
1019 g_bit_sizes="$g_bit_sizes 64"
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))
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
1043 if test -r glibconfig-sysdefs.h; then
1044 cat glibconfig-sysdefs.h >>$outfile
1047 cat >>$outfile <<_______EOF
1050 #endif /* __cplusplus */
1052 #endif /* GLIBCONFIG_H */
1056 if cmp -s $outfile glibconfig.h; then
1057 echo glibconfig.h is unchanged
1060 mv $outfile glibconfig.h
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
1071 x$ac_cv_header_float_h)
1073 glib_mf=FLT_MIN glib_Mf=FLT_MAX
1074 glib_md=DBL_MIN glib_Md=DBL_MAX
1076 x$ac_cv_header_values_h)
1078 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
1079 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
1084 x$ac_cv_header_limits_h)
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
1090 x$ac_cv_header_values_h)
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)"
1098 if test x$ac_cv_header_sys_poll_h = xyes ; then
1103 $ac_cv_sizeof_short)
1105 gint16_format='"hi"'
1106 guint16_format='"hu"'
1111 guint16_format='"u"'
1115 $ac_cv_sizeof_short)
1117 gint32_format='"hi"'
1118 guint32_format='"hu"'
1123 guint32_format='"u"'
1127 gint32_format='"li"'
1128 guint32_format='"lu"'
1135 guint64_format='"u"'
1138 gint64_constant='(val)'
1142 gint64_format='"li"'
1143 guint64_format='"lu"'
1146 gint64_constant='(val##L)'
1148 $ac_cv_sizeof_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__
1157 # define G_GNUC_EXTENSION
1161 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
1165 gintbits=`expr $ac_cv_sizeof_int \* 8`
1166 glongbits=`expr $ac_cv_sizeof_long \* 8`
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 ;;
1177 x$ac_cv_func_atexit)
1179 #ifdef NeXT /* @#%@! NeXTStep */
1180 # define g_ATEXIT(proc) (!atexit (proc))
1182 # define g_ATEXIT(proc) (atexit (proc))
1185 x$ac_cv_func_on_exit)
1187 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
1192 x$ac_cv_func_memmove)
1194 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
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"
1206 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
1207 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
1208 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
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' ;;
1217 if test x$glib_cv_va_val_copy = xno; then
1218 glib_vacopy="\$glib_vacopy
1219 #define G_VA_COPY_AS_ARRAY 1"
1222 if test x$glib_cv_hasinline = xyes; then
1223 glib_inline='#define G_HAVE_INLINE 1'
1225 if test x$glib_cv_has__inline = xyes; then
1226 glib_inline="\$glib_inline
1227 #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"
1235 x$ac_cv_c_bigendian)
1236 g_byte_order=G_BIG_ENDIAN
1241 g_byte_order=G_LITTLE_ENDIAN
1247 case x$enable_threads in
1248 xyes) g_enable_threads_def="#define";;
1249 *) g_enable_threads_def="#undef ";;
1252 g_threads_impl_def=$g_threads_impl
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"
1263 gmodule/gmoduleconf.h
1268 ],[case "$CONFIG_FILES" in
1269 *glib-config*)chmod +x glib-config;;
1272 echo " *** IMPORTANT *** "
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:"
1278 echo " * You should not base stable software on this version of GLib."
1279 echo " * GNOME developers should use a stable version of GLib."
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."
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."
1292 echo " *** You should be using GLib 1.2 instead. ***"