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 GLIB_AC_DIVERT_BEFORE_HELP([
20 # The following version number definitions apply to GLib, GModule, GObject
21 # and GThread as a whole, so if changes occoured in any of them, they are all
22 # treated with the same interface and binary age.
25 # GLIB_MICRO_VERSION += 1;
26 # GLIB_INTERFACE_AGE += 1;
27 # GLIB_BINARY_AGE += 1;
28 # if any functions have been added, set GLIB_INTERFACE_AGE to 0.
29 # if backwards compatibility has been broken,
30 # set GLIB_BINARY_AGE _and_ GLIB_INTERFACE_AGE to 0.
37 GLIB_VERSION=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION.$GLIB_MICRO_VERSION
40 AC_SUBST(GLIB_MAJOR_VERSION)
41 AC_SUBST(GLIB_MINOR_VERSION)
42 AC_SUBST(GLIB_MICRO_VERSION)
43 AC_SUBST(GLIB_VERSION)
44 AC_SUBST(GLIB_INTERFACE_AGE)
45 AC_SUBST(GLIB_BINARY_AGE)
48 LT_RELEASE=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION
49 LT_CURRENT=`expr $GLIB_MICRO_VERSION - $GLIB_INTERFACE_AGE`
50 LT_REVISION=$GLIB_INTERFACE_AGE
51 LT_AGE=`expr $GLIB_BINARY_AGE - $GLIB_INTERFACE_AGE`
60 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
62 # Specify a configuration file
63 AM_CONFIG_HEADER(config.h)
65 AC_DEFINE_UNQUOTED(GLIB_MAJOR_VERSION, $GLIB_MAJOR_VERSION,
66 [Define to the GLIB major version])
67 AC_DEFINE_UNQUOTED(GLIB_MINOR_VERSION, $GLIB_MINOR_VERSION,
68 [Define to the GLIB minor version])
69 AC_DEFINE_UNQUOTED(GLIB_MICRO_VERSION, $GLIB_MICRO_VERSION,
70 [Define to the GLIB micro version])
71 AC_DEFINE_UNQUOTED(GLIB_INTERFACE_AGE, $GLIB_INTERFACE_AGE,
72 [Define to the GLIB interface age])
73 AC_DEFINE_UNQUOTED(GLIB_BINARY_AGE, $GLIB_BINARY_AGE,
74 [Define to the GLIB binary age])
76 dnl Initialize maintainer mode
81 AC_MSG_CHECKING(for the BeOS)
84 glib_native_beos="yes"
90 AC_MSG_RESULT([$glib_native_beos])
94 GLIB_AC_DIVERT_BEFORE_HELP([
95 # figure debugging default, prior to $ac_help setup
96 case $GLIB_MINOR_VERSION in
97 *[[13579]]) debug_default=yes ;;
98 *) debug_default=minimum ;;
102 dnl declare --enable-* args and collect ac_help strings
103 AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
104 AC_ARG_ENABLE(msg-prefix, [ --enable-msg-prefix turn on program name and PID prefixing of messages and warnings],,enable_msg_prefix=no)
105 AC_ARG_ENABLE(gc_friendly, [ --enable-gc-friendly turn on garbage collector friendliness [default=no]],,enable_gc_friendly=no)
106 AC_ARG_ENABLE(mem_pools, [ --disable-mem-pools disable all glib memory pools],,disable_mem_pools=no)
107 AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
109 AC_ARG_ENABLE(threads, [ --enable-threads turn on basic thread support [default=yes]
110 ([=no] will override --with-threads)],,enable_threads=yes)
111 AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
113 if test "x$enable_threads" != "xyes"; then
117 if test "x$enable_debug" = "xyes"; then
118 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
119 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
121 if test "x$enable_debug" = "xno"; then
122 GLIB_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
126 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}",
127 [Whether glib was compiled with debugging enabled])
129 AC_MSG_CHECKING(whether to enable garbage collector friendliness)
130 if test "x$enable_gc_friendly" = "xyes"; then
131 AC_DEFINE(ENABLE_GC_FRIENDLY, 1, [Whether to enable GC friendliness])
132 AC_SUBST(ENABLE_GC_FRIENDLY)
138 AC_MSG_CHECKING(whether to disable memory pools)
139 if test "x$disable_mem_pools" = "xno"; then
142 AC_DEFINE(DISABLE_MEM_POOLS, 1, [Whether to disable memory pools])
143 AC_SUBST(DISABLE_MEM_POOLS)
147 if test "x$enable_msg_prefix" = "xyes"; then
148 AC_DEFINE_UNQUOTED(G_ENABLE_MSG_PREFIX, 1,
149 [Enable prefixing of error messages with program names])
152 # Checks for programs.
157 # define a MAINT-like variable REBUILD which is set if Perl
158 # and awk are found, so autogenerated sources can be rebuilt
160 AC_CHECK_PROGS(PERL, perl5 perl)
161 # We would like indent, but don't require it.
162 AC_CHECK_PROG(INDENT, indent, indent)
164 if test "x$enable_rebuilds" = "xyes" && \
166 $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
167 test -n "$AWK" ; then
172 dnl Initialize libtool
175 if test "x$GCC" = "xyes"; then
177 *[[\ \ ]]-Wall[[\ \ ]]*) ;;
178 *) CFLAGS="$CFLAGS -Wall" ;;
181 if test "x$enable_ansi" = "xyes"; then
183 *[[\ \ ]]-ansi[[\ \ ]]*) ;;
184 *) CFLAGS="$CFLAGS -ansi" ;;
188 *[[\ \ ]]-pedantic[[\ \ ]]*) ;;
189 *) CFLAGS="$CFLAGS -pedantic" ;;
194 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
195 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
198 AC_TRY_RUN([#include <math.h>
199 int main (void) { return (log(1) != log(1.)); }],
200 AC_MSG_RESULT(none needed),
201 glib_save_CFLAGS=$CFLAGS
202 CFLAGS="$CFLAGS -std1"
203 AC_TRY_RUN([#include <math.h>
204 int main (void) { return (log(1) != log(1.)); }],
205 AC_MSG_RESULT(-std1),
207 CFLAGS=$glib_save_CFLAGS
209 [No ANSI prototypes found in library. (-std1 didn't work.)])
214 dnl NeXTStep cc seems to need this
215 AC_MSG_CHECKING([for extra flags for POSIX compliance])
216 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
217 AC_MSG_RESULT(none needed),
218 glib_save_CFLAGS=$CFLAGS
219 CFLAGS="$CFLAGS -posix"
220 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
221 AC_MSG_RESULT(-posix),
223 CFLAGS=$glib_save_CFLAGS
224 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
226 # Checks for header files.
229 # Checks for library functions.
234 AC_CHECK_FUNCS(atexit on_exit)
236 AC_CHECK_SIZEOF(char)
237 AC_CHECK_SIZEOF(short)
238 AC_CHECK_SIZEOF(long)
240 AC_CHECK_SIZEOF(void *)
241 AC_CHECK_SIZEOF(long long)
243 if test x$ac_cv_sizeof_long_long = x8; then
244 # long long is a 64 bit integer.
245 AC_MSG_CHECKING(for format to printf and scanf a gint64)
246 AC_CACHE_VAL(glib_cv_long_long_format,[
247 for format in ll q; do
248 AC_TRY_RUN([#include <stdio.h>
251 long long b, a = -0x3AFAFAFAFAFAFAFALL;
253 sprintf (buffer, "%${format}u", a);
254 sscanf (buffer, "%${format}u", &b);
258 glib_cv_long_long_format=${format}
261 if test -n "$glib_cv_long_long_format"; then
262 AC_MSG_RESULT(%${glib_cv_long_long_format}i)
268 dnl long doubles were not used, and a portability problem
272 dnl ok, here we try to check whether the systems prototypes for
273 dnl malloc and friends actually match the prototypes provided
274 dnl by gmem.h (keep in sync). i currently only know how to check
275 dnl this reliably with gcc (-Werror), improvements for other
276 dnl compilers are apprechiated.
277 SANE_MALLOC_PROTOS=no
278 AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
279 glib_save_CFLAGS=$CFLAGS
280 if test "x$GCC" = "xyes"; then
281 CFLAGS="$CFLAGS -Werror"
282 AC_TRY_COMPILE([#include <stdlib.h>], [
283 void* (*my_calloc_p) (size_t, size_t) = calloc;
284 void* (*my_malloc_p) (size_t) = malloc;
285 void (*my_free_p) (void*) = free;
286 void* (*my_realloc_p) (void*, size_t) = realloc;
292 AC_DEFINE(SANE_MALLOC_PROTOS)
293 SANE_MALLOC_PROTOS=yes)
295 AC_MSG_RESULT($SANE_MALLOC_PROTOS)
296 CFLAGS=$glib_save_CFLAGS
299 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
300 dnl truely know which ones of `inline', `__inline' and `__inline__' are
301 dnl actually supported.
302 AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
304 __inline int foo () { return 0; }
305 int main () { return foo (); }
307 glib_cv_has__inline=yes
309 glib_cv_has__inline=no
312 case x$glib_cv_has__inline in
313 xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
315 AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
317 __inline__ int foo () { return 0; }
318 int main () { return foo (); }
320 glib_cv_has__inline__=yes
322 glib_cv_has__inline__=no
325 case x$glib_cv_has__inline__ in
326 xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
328 AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
330 inline int foo () { return 0; }
331 int main () { return foo (); }
333 glib_cv_hasinline=yes
338 case x$glib_cv_hasinline in
339 xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
342 # check for bytesex stuff
345 # check for header files
346 AC_CHECK_HEADERS([float.h limits.h pwd.h sys/param.h sys/poll.h sys/select.h])
347 AC_CHECK_HEADERS([sys/time.h sys/times.h unistd.h values.h stdint.h sched.h])
349 AC_MSG_CHECKING(whether make is GNU Make)
352 if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
353 STRIP_BEGIN='$(strip $(STRIP_DUMMY)'
360 AC_SUBST(STRIP_DUMMY)
361 AC_SUBST(STRIP_BEGIN)
364 # check additional type sizes
371 if test "x$ac_cv_header_stdint_h" = "xyes"; then
372 size_includes=["$size_includes
376 if test "x$ac_cv_header_unistd_h" = "xyes"; then
377 size_includes=["$size_includes
381 GLIB_SIZEOF([$size_includes], size_t, size_t)
382 GLIB_SIZEOF([$size_includes], ptrdiff_t, ptrdiff_t)
383 GLIB_SIZEOF([$size_includes], intmax_t, intmax_t)
385 # Check for some functions
386 AC_CHECK_FUNCS(lstat strerror strsignal memmove mkstemp vsnprintf strcasecmp strncasecmp poll getcwd)
388 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
389 # The check is borrowed from the PERL Configure script.
390 if test "$ac_cv_func_memmove" != "yes"; then
391 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
392 glib_cv_working_bcopy,[AC_TRY_RUN([
394 char buf[128], abc[128], *b;
396 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
397 for (align = 7; align >= 0; align--) {
398 for (len = 36; len; len--) {
399 b = buf+align; bcopy(abc, b, len);
400 for (off = 1; off <= len; off++) {
401 bcopy(b, b+off, len); bcopy(b+off, b, len);
402 if (bcmp(b, abc, len)) return(1);
407 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
408 if test "$glib_cv_working_bcopy" = "yes"; then
409 AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
413 # Check for sys_errlist
414 AC_MSG_CHECKING(for sys_errlist)
416 extern char *sys_errlist[];
418 sys_errlist[sys_nerr-1][0] = 0;
419 ], glib_ok=yes, glib_ok=no)
420 AC_MSG_RESULT($glib_ok)
421 if test $glib_ok = no; then
422 AC_DEFINE(NO_SYS_ERRLIST,1,[global 'sys_errlist' not found])
425 # Check for sys_siglist
426 AC_MSG_CHECKING(for sys_siglist)
428 extern char *sys_siglist[];
429 exit (sys_siglist[0]);
430 ], glib_ok=yes, glib_ok=no)
431 AC_MSG_RESULT($glib_ok)
432 if test $glib_ok = no; then
433 AC_DEFINE(NO_SYS_SIGLIST,1,[global 'sys_siglist' not found])
436 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
437 AC_MSG_CHECKING(for sys_siglist declaration)
438 AC_TRY_COMPILE([#include <signal.h>], [
439 strlen (sys_siglist[0]);
440 ], glib_ok=yes, glib_ok=no)
441 AC_MSG_RESULT($glib_ok)
442 if test $glib_ok = no; then
443 AC_DEFINE(NO_SYS_SIGLIST_DECL,1,[global 'sys_siglist' not declared])
446 # Check if <sys/select.h> needs to be included for fd_set
447 AC_MSG_CHECKING([for fd_set])
448 AC_TRY_COMPILE([#include <sys/types.h>],
449 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
450 if test $gtk_ok = yes; then
451 AC_MSG_RESULT([yes, found in sys/types.h])
453 AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
454 if test $gtk_ok = yes; then
455 # *** FIXME: give it a different name
456 AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
457 AC_MSG_RESULT([yes, found in sys/select.h])
459 AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
464 dnl *** check for sane realloc() ***
465 AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
469 return realloc (0, sizeof (int)) == 0;
471 [glib_cv_sane_realloc=yes],
472 [glib_cv_sane_realloc=no],
475 if test x$glib_cv_sane_realloc = xyes; then
476 AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
479 dnl Check for nl_langinfo and CODESET
481 AC_MSG_CHECKING([for nl_langinfo (CODESET)])
482 AC_TRY_COMPILE([#include <langinfo.h>],
483 [char *codeset = nl_langinfo (CODESET);],
484 AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
487 AC_MSG_RESULT($have_codeset)
490 dnl ****************************************
491 dnl *** strlcpy/strlcat ***
492 dnl ****************************************
494 AC_MSG_CHECKING(for strlcpy/strlcat)
495 AC_TRY_LINK([#include <stdlib.h>
496 #include <string.h>], [
497 char *p = malloc(10);
498 (void) strlcpy(p, "hi", 10);
499 (void) strlcat(p, "bye", 10);
500 ], glib_ok=yes, glib_ok=no)
501 AC_MSG_RESULT($glib_ok)
502 if test $glib_ok = yes; then
503 AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
507 dnl **********************
508 dnl *** va_copy checks ***
509 dnl **********************
510 dnl we currently check for all three va_copy possibilities, so we get
511 dnl all results in config.log for bug reports.
512 AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
515 void f (int i, ...) {
516 va_list args1, args2;
518 va_copy (args2, args1);
519 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
521 va_end (args1); va_end (args2);
527 [glib_cv_va_copy=yes],
528 [glib_cv_va_copy=no],
531 AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
534 void f (int i, ...) {
535 va_list args1, args2;
537 __va_copy (args2, args1);
538 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
540 va_end (args1); va_end (args2);
546 [glib_cv___va_copy=yes],
547 [glib_cv___va_copy=no],
551 if test "x$glib_cv_va_copy" = "xyes"; then
552 g_va_copy_func=va_copy
553 else if test "x$glib_cv___va_copy" = "xyes"; then
554 g_va_copy_func=__va_copy
558 if test -n "$g_va_copy_func"; then
559 AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
562 AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
565 void f (int i, ...) {
566 va_list args1, args2;
569 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
571 va_end (args1); va_end (args2);
577 [glib_cv_va_val_copy=yes],
578 [glib_cv_va_val_copy=no],
582 if test "x$glib_cv_va_val_copy" = "xno"; then
583 AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
586 dnl ***********************
587 dnl *** g_module checks ***
588 dnl ***********************
591 G_MODULE_PLUGIN_LIBS=
593 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
594 G_MODULE_NEED_USCORE=0
595 G_MODULE_HAVE_DLERROR=0
596 dnl *** dlopen() and dlsym() in system libraries
597 if test -z "$G_MODULE_IMPL"; then
598 AC_CHECK_FUNC(dlopen,
599 [AC_CHECK_FUNC(dlsym,
600 [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
603 dnl *** load_image (BeOS)
604 if test -z "$G_MODULE_IMPL" -a "x$glib_native_beos" = "xyes"; then
605 AC_CHECK_LIB(root, load_image,
606 [G_MODULE_LIBS="-lbe -lroot -lglib"
607 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
608 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
609 G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
612 # *** dlopen() and dlsym() in libdl
613 if test -z "$G_MODULE_IMPL"; then
614 AC_CHECK_LIB(dl, dlopen,
615 [AC_CHECK_LIB(dl, dlsym,
617 G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
620 dnl *** shl_load() in libdld (HP-UX)
621 if test -z "$G_MODULE_IMPL"; then
622 AC_MSG_CHECKING(how to export all symbols)
623 SAVED_LDFLAGS=$LDFLAGS
624 LDFLAGS="$LDFLAGS -Wl,-E"
625 AC_TRY_LINK(,[ return 0; ],
626 [ G_MODULE_LDFLAGS="-Wl,-E" ],[
627 LDFLAGS="$SAVED_LDFLAGS -bexpall"
628 AC_TRY_LINK(,[ return 0; ],
629 [G_MODULE_LDFLAGS="-bexpall"],
630 [G_MODULE_LDFLAGS="none"])
632 LDFLAGS=$SAVED_LDFLAGS
633 AC_MSG_RESULT($G_MODULE_LDFLAGS)
634 if test "x$G_MODULE_LDFLAGS" = "xnone"; then
637 AC_CHECK_LIB(dld, shl_load,
639 G_MODULE_IMPL=G_MODULE_IMPL_DLD],
642 dnl *** additional checks for G_MODULE_IMPL_DL
643 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
646 G_MODULE_LDFLAGS='-rdynamic'
650 LDFLAGS_orig="$LDFLAGS"
651 LIBS="$LIBS $G_MODULE_LIBS"
652 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
653 dnl *** check whether we need preceeding underscores
654 AC_CACHE_CHECK([for preceeding underscore in symbols],
658 int glib_underscore_test (void) { return 42; }
660 void *f1 = (void*)0, *f2 = (void*)0, *handle;
661 handle = dlopen ((void*)0, 0);
663 f1 = dlsym (handle, "glib_underscore_test");
664 f2 = dlsym (handle, "_glib_underscore_test");
665 } return (!f2 || f1);
667 [glib_cv_uscore=yes],
670 rm -f plugin.c plugin.o plugin.lo
672 if test "x$glib_cv_uscore" = "xyes"; then
673 G_MODULE_NEED_USCORE=1
675 G_MODULE_NEED_USCORE=0
678 LDFLAGS="$LDFLAGS_orig"
679 dnl *** check for having dlerror()
680 AC_CHECK_FUNC(dlerror,
681 [G_MODULE_HAVE_DLERROR=1],
682 [G_MODULE_HAVE_DLERROR=0])
685 dnl *** done, have e got an implementation?
686 if test -z "$G_MODULE_IMPL"; then
690 AC_MSG_CHECKING(for the suffix of shared libraries)
692 hpux9* | hpux10* | hpux11*) # taken from ltconfig
693 glib_gmodule_suffix='sl'
696 glib_gmodule_suffix='dll'
699 glib_gmodule_suffix='so'
702 AC_MSG_RESULT(.$glib_gmodule_suffix)
704 AC_SUBST(G_MODULE_IMPL)
705 AC_SUBST(G_MODULE_LIBS)
706 AC_SUBST(G_MODULE_LIBS_EXTRA)
707 AC_SUBST(G_MODULE_PLUGIN_LIBS)
708 AC_SUBST(G_MODULE_LDFLAGS)
709 AC_SUBST(G_MODULE_HAVE_DLERROR)
710 AC_SUBST(G_MODULE_NEED_USCORE)
711 AC_SUBST(GLIB_DEBUG_FLAGS)
714 dnl ***********************
715 dnl *** g_thread checks ***
716 dnl ***********************
718 AC_ARG_WITH(threads, [ --with-threads=[none/posix/dce/solaris] specify a thread implementation to use],
719 if test "x$with_threads" = x; then
722 want_threads=$with_threads
725 if test "x$enable_threads" = "xno"; then
728 if test "x$want_threads" = "xnone"; then
732 dnl error and warning message
733 dnl *************************
735 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
736 computer. GLib will not have a default thread implementation."
738 FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
739 platform (normaly it's "_REENTRANT"). I'll not use any flag on
740 compilation now, but then your programs might not work.
741 Please provide information on how it is done on your system."
743 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
746 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
747 provide information on your thread implementation.
748 You can also run 'configure --disable-threads'
749 to compile without thread support."
751 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
752 functions will not be MT-safe during their first call because
753 there is no working 'getpwuid_r' on your system."
755 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
756 because there is no 'localtime_r' on your system."
758 POSIX_NO_YIELD="I can not find a yield functions for your platform. A rather
759 crude surrogate will be used. If you happen to know a
760 yield function for your system, please inform the GLib
763 POSIX_NO_PRIORITIES="I can not find the minimal and maximal priorities for
764 threads on your system. Thus threads can only have the default
765 priority. If you happen to know these main/max
766 priorities, please inform the GLib developers."
769 dnl determination of thread implementation
770 dnl ***************************************
773 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
776 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
780 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
781 || test "x$want_threads" = xdce; then
782 # -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
783 # -U_OSF_SOURCE is for Digital UNIX 4.0d
784 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
785 glib_save_CPPFLAGS="$CPPFLAGS"
786 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
787 if test "x$have_threads" = xnone; then
788 AC_TRY_COMPILE([#include <pthread.h>],
789 [pthread_attr_t attr; pthread_attr_init(&attr);],
792 if test "x$have_threads" = xnone; then
793 AC_TRY_COMPILE([#include <pthread.h>],
794 [pthread_attr_t attr; pthread_attr_create(&attr);],
797 CPPFLAGS="$glib_save_CPPFLAGS"
800 AC_MSG_CHECKING(for thread implementation)
802 if test "x$have_threads" = xnone && test "x$want_threads" != xno; then
803 AC_MSG_RESULT(none available)
804 AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
806 AC_MSG_RESULT($have_threads)
810 dnl determination of G_THREAD_CFLAGS
811 dnl ********************************
817 if test x"$have_threads" != xnone; then
819 G_THREAD_CFLAGS="-D_REENTRANT" # good default guess
823 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
824 if test x"$GCC" = xyes; then
825 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -mthreads"
829 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
831 # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
834 *-sysv5uw7*) # UnixWare 7
835 if test "$GCC" != "yes"; then
836 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -Kthread"
838 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -pthread"
842 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_POSIX4A_DRAFT10_SOURCE"
845 # if we are not finding the ctime_r function, then we probably are
846 # not using the proper multithread flag
848 glib_save_CPPFLAGS="$CPPFLAGS"
849 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
851 AC_TRY_COMPILE([#include <time.h>],
852 [time_t t; char b[30]; ctime_r (&t, b);], ,
853 [AC_TRY_COMPILE([#include <time.h>],
854 [time_t t; char b[30]; ctime_r (&t, b, 30);], ,
855 AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
857 CPPFLAGS="$glib_save_CPPFLAGS"
859 AC_MSG_CHECKING(thread related cflags)
860 AC_MSG_RESULT($G_THREAD_CFLAGS)
861 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
864 dnl determination of G_THREAD_LIBS
865 dnl ******************************
868 case $have_threads in
870 glib_save_CPPFLAGS="$CPPFLAGS"
871 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
873 glib_save_LIBS="$LIBS"
875 *-sysv5uw7*) # UnixWare 7
876 if test "$GCC" != "yes"; then
877 G_THREAD_LIBS="-Kthread"
879 G_THREAD_LIBS="-pthread"
883 for thread_lib in "" pthread pthreads c_r thread dce; do
884 if test x"$thread_lib" = x; then
888 add_thread_lib="-l$thread_lib"
889 IN=" in -l$thread_lib"
891 if test x"$have_threads" = xposix; then
894 defattr=pthread_attr_default
897 LIBS="$glib_save_LIBS $add_thread_lib"
899 AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
900 AC_TRY_RUN([#include <pthread.h>
902 void* func(void* data) {check_me = 42;}
906 pthread_create (&t, $defattr, func, 0);
907 pthread_join (t, &ret);
908 exit (check_me != 42);
911 G_THREAD_LIBS="$add_thread_lib"
915 if test "x$G_THREAD_LIBS" = xerror; then
916 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
918 for thread_lib in "" rt rte; do
919 if test x"$thread_lib" = x; then
923 add_thread_lib="-l$thread_lib"
924 IN=" in -l$thread_lib"
926 LIBS="$glib_save_LIBS $add_thread_lib"
928 AC_MSG_CHECKING(for sched_get_priority_min$IN)
929 AC_TRY_RUN([#include <sched.h>
933 return sched_get_priority_min(SCHED_OTHER)==-1
937 G_THREAD_LIBS="$G_THREAD_LIBS $add_thread_lib"
938 posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
939 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"
943 LIBS="$glib_save_LIBS"
946 mutex_has_default=yes
947 mutex_default_type='pthread_mutex_t'
948 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
949 mutex_header_file='pthread.h'
950 if test "x$have_threads" = "xposix"; then
951 g_threads_impl="POSIX"
956 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
957 CPPFLAGS="$glib_save_CPPFLAGS"
961 AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
962 mutex_has_default=yes
963 mutex_default_type='mutex_t'
964 mutex_default_init="DEFAULTMUTEX"
965 mutex_header_file='thread.h'
966 g_threads_impl="SOLARIS"
969 g_threads_impl="NONE"
972 g_threads_impl="NONE"
977 if test "x$G_THREAD_LIBS" = xerror; then
978 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
983 G_THREAD_LIBS="-lbe -lroot -lglib "
984 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
990 AC_MSG_CHECKING(thread related libraries)
991 AC_MSG_RESULT($G_THREAD_LIBS)
993 dnl check for mt safe function variants and some posix functions
994 dnl ************************************************************
996 if test x"$have_threads" != xnone; then
997 glib_save_LIBS="$LIBS"
998 # we are not doing the following for now, as this might require glib
999 # to always be linked with the thread libs on some platforms.
1000 # LIBS="$LIBS $G_THREAD_LIBS"
1001 AC_CHECK_FUNCS(localtime_r)
1002 if test "$ac_cv_header_pwd_h" = "yes"; then
1003 AC_CACHE_CHECK([for posix getpwuid_r],
1004 ac_cv_func_posix_getpwuid_r,
1005 [AC_TRY_RUN([#include <errno.h>
1007 int main () { char buffer[10000];
1008 struct passwd pwd, *pwptr = &pwd;
1011 error = getpwuid_r (0, &pwd, buffer,
1012 sizeof (buffer), &pwptr);
1013 return (error < 0 && errno == ENOSYS)
1014 || error == ENOSYS; }],
1015 [ac_cv_func_posix_getpwuid_r=yes],
1016 [ac_cv_func_posix_getpwuid_r=no])])
1017 if test "$ac_cv_func_posix_getpwuid_r" = yes; then
1018 AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
1019 [Have POSIX function getpwuid_r])
1021 AC_CACHE_CHECK([for nonposix getpwuid_r],
1022 ac_cv_func_nonposix_getpwuid_r,
1023 [AC_TRY_COMPILE([#include <pwd.h>],
1024 [char buffer[10000];
1026 getpwuid_r (0, &pwd, buffer,
1028 [ac_cv_func_nonposix_getpwuid_r=yes],
1029 [ac_cv_func_nonposix_getpwuid_r=no])])
1030 if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
1031 AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
1032 [Have non-POSIX function getpwuid_r])
1036 LIBS="$LIBS $G_THREAD_LIBS"
1037 if test x"$have_threads" = xposix; then
1038 glib_save_CPPFLAGS="$CPPFLAGS"
1039 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1040 GLIB_SIZEOF([#include <pthread.h>],
1043 # This is not AC_CHECK_FUNC to also work with function
1044 # name mangling in header files.
1045 AC_MSG_CHECKING(for pthread_attr_setstacksize)
1046 AC_TRY_LINK([#include <pthread.h>],
1047 [pthread_attr_t t; pthread_attr_setstacksize(&t,0)],
1049 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
1050 [Have function pthread_attr_setstacksize])],
1051 [AC_MSG_RESULT(no)])
1052 AC_MSG_CHECKING(for minimal/maximal thread priority)
1053 if test x"$posix_priority_min" = xnone; then
1054 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
1056 posix_priority_min=PX_PRIO_MIN
1057 posix_priority_max=PX_PRIO_MAX])
1059 if test x"$posix_priority_min" = xnone; then
1060 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
1062 posix_priority_min=PRI_OTHER_MIN
1063 posix_priority_max=PRI_OTHER_MAX])
1065 if test x"$posix_priority_min" = x; then
1066 AC_MSG_RESULT(none found)
1067 AC_MSG_WARN($POSIX_NO_PRIORITIES)
1068 posix_priority_min=-1
1069 posix_priority_max=-1
1071 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
1072 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min,[Minimum POSIX RT priority])
1073 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max,[Maximum POSIX RT priority])
1075 posix_yield_func=none
1076 AC_MSG_CHECKING(for posix yield function)
1077 for yield_func in sched_yield pthread_yield_np pthread_yield \
1079 AC_TRY_LINK([#include <pthread.h>],
1081 [posix_yield_func="$yield_func"
1084 if test x"$posix_yield_func" = xnone; then
1085 AC_MSG_RESULT(none found)
1086 AC_MSG_WARN($POSIX_NO_YIELD)
1087 posix_yield_func="g_usleep(1000)"
1089 AC_MSG_RESULT($posix_yield_func)
1090 posix_yield_func="$posix_yield_func()"
1092 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function])
1093 CPPFLAGS="$glib_save_CPPFLAGS"
1095 AC_MSG_CHECKING(whether to use the PID niceness surrogate for thread priorities)
1096 AC_TRY_RUN([#include <pthread.h>
1097 #include <sys/types.h>
1099 pid_t other_pid = 0;
1101 void* func(void* data) {other_pid = getpid();}
1105 pthread_create (&t, $defattr, func, NULL);
1106 pthread_join (t, &ret);
1107 exit (getpid()==other_pid ||
1108 $posix_priority_min != $posix_priority_max);
1110 [AC_MSG_RESULT(yes),
1111 AC_DEFINE(G_THREAD_USE_PID_SURROGATE, 1,
1112 [whether to use the PID niceness surrogate for thread priorities])
1114 glib_cv_sizeof_system_thread=`expr $glib_cv_sizeof_system_thread + $ac_cv_sizeof_long`],
1115 [AC_MSG_RESULT(no)])
1117 else # solaris threads
1118 GLIB_SIZEOF([#include <thread.h>],
1123 LIBS="$glib_save_LIBS"
1125 # now spit out all the warnings.
1126 if test "$ac_cv_func_posix_getpwuid_r" != "yes" &&
1127 test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
1128 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
1130 if test "$ac_cv_func_localtime_r" != "yes"; then
1131 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
1134 # If no thread implementation exists, we will provide enough
1135 # space for a pointer
1136 GLIB_SIZEOF(, void*, system_thread)
1139 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c",
1140 [Source file containing theread implementation])
1141 AC_SUBST(G_THREAD_CFLAGS)
1142 AC_SUBST(G_THREAD_LIBS)
1143 AC_SUBST(G_THREAD_LIBS_EXTRA)
1145 dnl **********************************************
1146 dnl *** GDefaultMutex setup and initialization ***
1147 dnl **********************************************
1149 dnl if mutex_has_default = yes, we also got
1150 dnl mutex_default_type, mutex_default_init and mutex_header_file
1151 GLIB_IF_VAR_EQ(mutex_has_default, yes,
1152 glib_save_CPPFLAGS="$CPPFLAGS"
1153 glib_save_LIBS="$LIBS"
1154 LIBS="$LIBS $G_THREAD_LIBS"
1155 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
1156 GLIB_SIZEOF([#include <$mutex_header_file>],
1157 $mutex_default_type,
1160 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
1161 $mutex_default_type,
1163 $glib_cv_sizeof_gmutex,
1164 $mutex_default_init)
1165 if test x"$glib_cv_byte_contents_gmutex" = xno; then
1166 mutex_has_default=no
1168 CPPFLAGS="$glib_save_CPPFLAGS"
1169 LIBS="$glib_save_LIBS"
1174 dnl ****************************************
1175 dnl *** GLib POLL* compatibility defines ***
1176 dnl ****************************************
1178 [#include <sys/types.h>
1179 #include <sys/poll.h>],
1180 POLLIN:1 POLLOUT:4 POLLPRI:2 POLLERR:8 POLLHUP:16 POLLNVAL:32,
1181 glibconfig-sysdefs.h,
1184 dnl ***********************
1185 dnl *** Tests for iconv ***
1186 dnl ***********************
1188 AC_ARG_WITH(libiconv, [ --with-libiconv Use the libiconv library ],,with_libiconv=maybe)
1192 if test "x$with_libiconv" != "xyes" ; then
1194 # Check in the C library
1196 AC_CHECK_FUNC(iconv_open, with_libiconv=no; found_iconv=yes)
1199 if test "x$with_libiconv" != "xno" ; then
1201 # Check for libiconv
1203 AC_CHECK_LIB(iconv, libiconv_open, with_libiconv=yes; found_iconv=yes)
1206 if test "x$found_iconv" = "xno" ; then
1207 AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
1210 if test "x$with_libiconv" = "xyes" ; then
1211 ICONV_LIBS="-liconv"
1212 AC_DEFINE(USE_LIBICONV)
1214 AC_SUBST(ICONV_LIBS)
1216 dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
1217 dnl since we need it for g_iconv()
1219 AC_MSG_CHECKING([for EILSEQ])
1225 ], have_eilseq=yes, have_eilseq=no);
1226 AC_MSG_RESULT($have_eilseq)
1228 dnl **************************
1229 dnl *** Checks for gtk-doc ***
1230 dnl **************************
1232 AC_ARG_WITH(html-dir, [ --with-html-dir=PATH path to installed docs ])
1234 if test "x$with_html_dir" = "x" ; then
1235 HTML_DIR='${datadir}/gtk-doc/html'
1237 HTML_DIR=$with_html_dir
1243 AC_CHECK_PROG(GTKDOC, gtkdoc-mkdb, true, false)
1244 AM_CONDITIONAL(HAVE_GTK_DOC, $GTKDOC)
1245 AC_SUBST(HAVE_GTK_DOC)
1247 AC_CHECK_PROG(DB2HTML, db2html, true, false)
1248 AM_CONDITIONAL(HAVE_DOCBOOK, $DB2HTML)
1250 dnl Let people disable the gtk-doc stuff.
1251 AC_ARG_ENABLE(gtk-doc, [ --enable-gtk-doc Use gtk-doc to build documentation [default=auto]], enable_gtk_doc="$enableval", enable_gtk_doc=auto)
1253 if test x$enable_gtk_doc = xauto ; then
1254 if test x$GTKDOC = xtrue ; then
1261 dnl NOTE: We need to use a separate automake conditional for this
1262 dnl to make this work with the tarballs.
1263 AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
1265 dnl ******************************
1266 dnl *** output the whole stuff ***
1267 dnl ******************************
1269 AC_OUTPUT_COMMANDS([
1271 ## Generate `glibconfig.h' in two cases
1272 ## 1. `config.status' is run either explicitly, or via configure.
1273 ## Esp. not when it is run in `Makefile' to generate makefiles and
1275 ## 2. CONFIG_OTHER is set explicitly
1277 ## Case 1 is difficult. We know that `automake' sets one of
1278 ## CONFIG_FILES or CONFIG_HEADERS to empty. This heuristic works
1279 ## only when AM_CONFIG_HEADER is set, however.
1281 if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
1282 # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
1283 CONFIG_OTHER=${CONFIG_OTHER:-glibconfig.h}
1285 case "$CONFIG_OTHER" in
1287 echo creating glibconfig.h
1288 outfile=glibconfig.h-tmp
1289 cat > $outfile <<\_______EOF
1292 * This is a generated file. Please modify 'configure.in'
1295 #ifndef __G_LIBCONFIG_H__
1296 #define __G_LIBCONFIG_H__
1298 #include <gmacros.h>
1302 if test x$glib_limits_h = xyes; then
1303 echo '#include <limits.h>' >> $outfile
1305 if test x$glib_float_h = xyes; then
1306 echo '#include <float.h>' >> $outfile
1308 if test x$glib_values_h = xyes; then
1309 echo '#include <values.h>' >> $outfile
1311 if test "$glib_header_alloca_h" = "yes"; then
1312 echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
1314 if test x$glib_sys_poll_h = xyes; then
1315 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
1318 cat >> $outfile <<_______EOF
1322 #define G_MINFLOAT $glib_mf
1323 #define G_MAXFLOAT $glib_Mf
1324 #define G_MINDOUBLE $glib_md
1325 #define G_MAXDOUBLE $glib_Md
1326 #define G_MINSHORT $glib_ms
1327 #define G_MAXSHORT $glib_Ms
1328 #define G_MAXUSHORT $glib_Mus
1329 #define G_MININT $glib_mi
1330 #define G_MAXINT $glib_Mi
1331 #define G_MAXUINT $glib_Mui
1332 #define G_MINLONG $glib_ml
1333 #define G_MAXLONG $glib_Ml
1334 #define G_MAXULONG $glib_Mul
1339 ### this should always be true in a modern C/C++ compiler
1340 cat >>$outfile <<_______EOF
1341 typedef signed char gint8;
1342 typedef unsigned char guint8;
1346 if test -n "$gint16"; then
1347 cat >>$outfile <<_______EOF
1348 typedef signed $gint16 gint16;
1349 typedef unsigned $gint16 guint16;
1350 #define G_GINT16_FORMAT $gint16_format
1351 #define G_GUINT16_FORMAT $guint16_format
1356 if test -n "$gint32"; then
1357 cat >>$outfile <<_______EOF
1358 typedef signed $gint32 gint32;
1359 typedef unsigned $gint32 guint32;
1360 #define G_GINT32_FORMAT $gint32_format
1361 #define G_GUINT32_FORMAT $guint32_format
1366 if test -n "$gint64"; then
1367 cat >>$outfile <<_______EOF
1368 #define G_HAVE_GINT64 1
1370 ${glib_extension}typedef signed $gint64 gint64;
1371 ${glib_extension}typedef unsigned $gint64 guint64;
1373 #define G_GINT64_CONSTANT(val) $gint64_constant
1375 if test -n "$gint64_format"; then
1376 cat >>$outfile <<_______EOF
1377 #define G_GINT64_FORMAT $gint64_format
1378 #define G_GUINT64_FORMAT $guint64_format
1383 cat >>$outfile <<_______EOF
1385 #define GLIB_SIZEOF_VOID_P $glib_void_p
1386 #define GLIB_SIZEOF_LONG $glib_long
1390 case x$glib_size_t in
1391 x2) echo "typedef gint16 gssize;" >> $outfile
1392 echo "typedef guint16 gsize;" >> $outfile
1394 x4) echo "typedef gint32 gssize;" >> $outfile
1395 echo "typedef guint32 gsize;" >> $outfile
1397 x8) echo "typedef gint64 gssize;" >> $outfile
1398 echo "typedef guint64 gsize;" >> $outfile
1400 *) echo "#error size of size_t is unknown" >> $outfile
1404 if test -z "$glib_unknown_void_p"; then
1405 cat >>$outfile <<_______EOF
1407 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
1408 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
1410 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
1411 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
1414 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
1419 cat >>$outfile <<_______EOF
1428 #define G_HAVE_INLINE 1
1429 #else /* !__cplusplus */
1431 #endif /* !__cplusplus */
1435 if test x$g_have_eilseq = xno; then
1436 cat >>$outfile <<_______EOF
1438 /* On some systems, like SunOS and NetBSD, EILSEQ is not defined.
1439 * The correspondence between this and the corresponding definition
1440 * in libiconv is essential.
1442 # define EILSEQ ENOENT
1449 if test x$g_mutex_has_default = xyes; then
1450 cat >>$outfile <<_______EOF
1451 $g_enable_threads_def G_THREADS_ENABLED
1452 #define G_THREADS_IMPL_$g_threads_impl_def
1453 typedef struct _GStaticMutex GStaticMutex;
1454 struct _GStaticMutex
1456 struct _GMutex *runtime_mutex;
1459 char pad[$g_mutex_sizeof];
1460 double dummy_double;
1461 void *dummy_pointer;
1467 #define G_STATIC_MUTEX_INIT { NULL, { { { $g_mutex_contents} }, NULL } }
1468 #define g_static_mutex_get_mutex(mutex) \
1469 (g_thread_use_default_impl ? ((GMutex*) &((mutex)->static_mutex)) : \
1470 g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
1473 cat >>$outfile <<_______EOF
1474 $g_enable_threads_def G_THREADS_ENABLED
1475 #define G_THREADS_IMPL_$g_threads_impl_def
1476 typedef struct _GMutex* GStaticMutex;
1477 #define G_STATIC_MUTEX_INIT NULL
1478 #define g_static_mutex_get_mutex(mutex) (g_static_mutex_get_mutex_impl (mutex))
1482 cat >>$outfile <<_______EOF
1483 /* This represents a system thread as used by the implementation. An
1484 * alien implementaion, as loaded by g_thread_init can only count on
1485 * "sizeof (gpointer)" bytes to store their info. We however need more
1486 * for some of our native implementations. */
1487 typedef union _GSystemThread GSystemThread;
1488 union _GSystemThread
1490 char data[$g_system_thread_sizeof];
1491 double dummy_double;
1492 void *dummy_pointer;
1499 if test -n "$gint64"; then
1500 g_bit_sizes="$g_bit_sizes 64"
1502 for bits in $g_bit_sizes; do
1503 cat >>$outfile <<_______EOF
1504 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
1505 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
1506 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
1507 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
1511 cat >>$outfile <<_______EOF
1512 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
1513 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
1514 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
1515 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
1516 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
1517 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
1518 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
1519 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
1520 #define G_BYTE_ORDER $g_byte_order
1524 if test -r glibconfig-sysdefs.h; then
1525 cat glibconfig-sysdefs.h >>$outfile
1528 cat >>$outfile <<_______EOF
1530 #define G_MODULE_SUFFIX "$g_module_suffix"
1534 #endif /* GLIBCONFIG_H */
1538 if cmp -s $outfile glibconfig.h; then
1539 echo glibconfig.h is unchanged
1542 mv $outfile glibconfig.h
1547 # Note that if two cases are the same, case goes with the first one.
1548 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
1549 # on variable expansion in case labels. Look at the generated config.status
1552 glib_header_alloca_h="$ac_cv_header_alloca_h"
1555 x$ac_cv_header_float_h)
1557 glib_mf=FLT_MIN glib_Mf=FLT_MAX
1558 glib_md=DBL_MIN glib_Md=DBL_MAX
1560 x$ac_cv_header_values_h)
1562 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
1563 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
1568 x$ac_cv_header_limits_h)
1570 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
1571 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
1572 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
1574 x$ac_cv_header_values_h)
1576 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
1577 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
1578 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
1582 if test x$ac_cv_header_sys_poll_h = xyes ; then
1587 $ac_cv_sizeof_short)
1589 gint16_format='"hi"'
1590 guint16_format='"hu"'
1595 guint16_format='"u"'
1599 $ac_cv_sizeof_short)
1601 gint32_format='"hi"'
1602 guint32_format='"hu"'
1607 guint32_format='"u"'
1611 gint32_format='"li"'
1612 guint32_format='"lu"'
1619 guint64_format='"u"'
1621 gint64_constant='(val)'
1625 gint64_format='"li"'
1626 guint64_format='"lu"'
1628 gint64_constant='(val##L)'
1630 $ac_cv_sizeof_long_long)
1632 if test -n "$glib_cv_long_long_format"; then
1633 gint64_format='"'$glib_cv_long_long_format'i"'
1634 guint64_format='"'$glib_cv_long_long_format'u"'
1636 glib_extension='G_GNUC_EXTENSION '
1637 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
1640 glib_size_t=$glib_cv_sizeof_size_t
1641 glib_void_p=$ac_cv_sizeof_long
1642 glib_long=$ac_cv_sizeof_void_p
1644 gintbits=`expr $ac_cv_sizeof_int \* 8`
1645 glongbits=`expr $ac_cv_sizeof_long \* 8`
1648 case $ac_cv_sizeof_void_p in
1649 $ac_cv_sizeof_int) glib_gpi_cast='' glib_gpui_cast='' ;;
1650 $ac_cv_sizeof_long) glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
1651 *) glib_unknown_void_p=yes ;;
1656 x$ac_cv_func_atexit)
1658 #ifdef NeXT /* @#%@! NeXTStep */
1659 # define g_ATEXIT(proc) (!atexit (proc))
1661 # define g_ATEXIT(proc) (atexit (proc))
1664 x$ac_cv_func_on_exit)
1666 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
1671 x$ac_cv_func_memmove)
1673 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
1675 x$glib_cv_working_bcopy)
1677 /* memmove isn't available, but bcopy can copy overlapping memory regions */
1678 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
1682 /* memmove isn't found and bcopy can't copy overlapping memory regions,
1683 * so we have to roll our own copy routine. */
1684 void g_memmove (void* dest, const void * src, unsigned long len);"
1689 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
1690 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
1691 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
1695 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
1696 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
1700 if test x$glib_cv_va_val_copy = xno; then
1701 glib_vacopy="\$glib_vacopy
1702 #define G_VA_COPY_AS_ARRAY 1"
1705 if test x$glib_cv_hasinline = xyes; then
1706 glib_inline='#define G_HAVE_INLINE 1'
1708 if test x$glib_cv_has__inline = xyes; then
1709 glib_inline="\$glib_inline
1710 #define G_HAVE___INLINE 1"
1712 if test x$glib_cv_has__inline__ = xyes; then
1713 glib_inline="\$glib_inline
1714 #define G_HAVE___INLINE__ 1"
1718 x$ac_cv_c_bigendian)
1719 g_byte_order=G_BIG_ENDIAN
1724 g_byte_order=G_LITTLE_ENDIAN
1730 g_have_eilseq=$have_eilseq
1732 case x$have_threads in
1733 xnone) g_enable_threads_def="#undef";;
1734 *) g_enable_threads_def="#define";;
1737 g_threads_impl_def=$g_threads_impl
1739 g_mutex_has_default="$mutex_has_default"
1740 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
1741 g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
1742 g_mutex_contents="$glib_cv_byte_contents_gmutex"
1744 g_module_suffix="$glib_gmodule_suffix"
1748 glib_os="#define G_OS_BEOS"
1751 glib_os="#define G_OS_UNIX
1752 #define G_WITH_CYGWIN"
1755 glib_os="#define G_OS_UNIX"
1769 build/win32/Makefile
1770 gmodule/gmoduleconf.h
1776 docs/reference/Makefile
1777 docs/reference/glib/Makefile
1778 docs/reference/gobject/Makefile
1780 ],[case "$CONFIG_FILES" in
1781 *glib-config-2.0*)chmod +x glib-config-2.0;;
1784 echo " *** IMPORTANT *** "
1786 echo "This is a development version of GLib. You should be using a stable"
1787 echo "version, which is available at ftp://ftp.gtk.org/pub/gtk/v1.2/. The"
1788 echo "version you just configured is meant for developers of GLib only:"
1790 echo " * You should not base stable software on this version of GLib."
1791 echo " * GNOME developers should use a stable version of GLib."
1793 echo "If you install this version of GLib, we strongly recommend that you"
1794 echo "install it in a different prefix than GLib 1.2. Use --prefix as an"
1795 echo "argument to configure to do this. Otherwise, you will not be able to"
1796 echo "do development with GLib 1.2 any longer."
1798 echo " *** You should be using GLib 1.2 instead. ***"