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 need 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, GModule and GThread
23 # as a whole, so if changes occoured in any of them, they are all
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_MICRO_VERSION)
46 AC_SUBST(GLIB_VERSION)
47 AC_SUBST(GLIB_INTERFACE_AGE)
48 AC_SUBST(GLIB_BINARY_AGE)
51 LT_RELEASE=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION
52 LT_CURRENT=`expr $GLIB_MICRO_VERSION - $GLIB_INTERFACE_AGE`
53 LT_REVISION=$GLIB_INTERFACE_AGE
54 LT_AGE=`expr $GLIB_BINARY_AGE - $GLIB_INTERFACE_AGE`
63 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
65 # Specify a configuration file
66 AM_CONFIG_HEADER(config.h)
68 AC_DEFINE_UNQUOTED(GLIB_MAJOR_VERSION, $GLIB_MAJOR_VERSION)
69 AC_DEFINE_UNQUOTED(GLIB_MINOR_VERSION, $GLIB_MINOR_VERSION)
70 AC_DEFINE_UNQUOTED(GLIB_MICRO_VERSION, $GLIB_MICRO_VERSION)
71 AC_DEFINE_UNQUOTED(GLIB_INTERFACE_AGE, $GLIB_INTERFACE_AGE)
72 AC_DEFINE_UNQUOTED(GLIB_BINARY_AGE, $GLIB_BINARY_AGE)
74 dnl Initialize libtool
77 dnl Initialize maintainer mode
82 AC_MSG_CHECKING(for the BeOS)
85 AC_DEFINE(GLIB_NATIVE_BEOS, 1)
86 glib_native_beos="yes"
87 AC_MSG_RESULT([$glib_native_beos])
91 AC_MSG_RESULT($glib_native_beos)
95 dnl figure debugging default, prior to $ac_help setup
97 AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
98 if test `expr $GLIB_MINOR_VERSION \% 2` = 1 ; then
101 debug_default=minimum
105 dnl declare --enable-* args and collect ac_help strings
106 AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
107 AC_ARG_ENABLE(mem_check, [ --enable-mem-check turn on malloc/free sanity checking [default=no]],,enable_mem_check=no)
108 AC_ARG_ENABLE(mem_profile, [ --enable-mem-profile turn on malloc profiling atexit [default=no]],,enable_mem_profile=no)
109 AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
111 AC_ARG_ENABLE(threads, [ --enable-threads turn on basic thread support [default=yes]
112 ([=no] will override --with-threads)],,enable_threads=yes)
114 if test "x$enable_threads" != "xyes"; then
118 AC_MSG_CHECKING(whether to enable memory checking)
119 if test "x$enable_mem_check" = "xyes"; then
120 AC_DEFINE(ENABLE_MEM_CHECK, 1)
121 AC_SUBST(ENABLE_MEM_CHECK)
127 AC_MSG_CHECKING(whether to enable memory profiling)
128 if test "x$enable_mem_profile" = "xyes"; then
129 AC_DEFINE(ENABLE_MEM_PROFILE, 1)
130 AC_SUBST(ENABLE_MEM_PROFILE)
136 if test "x$enable_debug" = "xyes"; then
137 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
138 GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
140 if test "x$enable_debug" = "xno"; then
141 GLIB_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
145 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}")
147 # Checks for programs.
153 if test "x$GCC" = "xyes"; then
155 *[\ \ ]-Wall[\ \ ]*) ;;
156 *) CFLAGS="$CFLAGS -Wall" ;;
159 if test "x$enable_ansi" = "xyes"; then
161 *[\ \ ]-ansi[\ \ ]*) ;;
162 *) CFLAGS="$CFLAGS -ansi" ;;
166 *[\ \ ]-pedantic[\ \ ]*) ;;
167 *) CFLAGS="$CFLAGS -pedantic" ;;
173 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
174 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
177 AC_TRY_RUN([#include <math.h>
178 int main (void) { return (log(1) != log(1.)); }],
179 AC_MSG_RESULT(none needed),
180 glib_save_CFLAGS=$CFLAGS
181 CFLAGS="$CFLAGS -std1"
182 AC_TRY_RUN([#include <math.h>
183 int main (void) { return (log(1) != log(1.)); }],
184 AC_MSG_RESULT(-std1),
186 CFLAGS=$glib_save_CFLAGS
188 [No ANSI prototypes found in library. (-std1 didn't work.)])
193 dnl NeXTStep cc seems to need this
194 AC_MSG_CHECKING([for extra flags for POSIX compliance])
195 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
196 AC_MSG_RESULT(none needed),
197 glib_save_CFLAGS=$CFLAGS
198 CFLAGS="$CFLAGS -posix"
199 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
200 AC_MSG_RESULT(-posix),
202 CFLAGS=$glib_save_CFLAGS
203 AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
205 # Checks for header files.
208 # Checks for library functions.
211 AC_CHECK_FUNCS(atexit on_exit)
213 AC_CHECK_SIZEOF(char)
214 AC_CHECK_SIZEOF(short)
215 AC_CHECK_SIZEOF(long)
217 AC_CHECK_SIZEOF(void *)
218 AC_CHECK_SIZEOF(long long)
220 if test x$ac_cv_sizeof_long_long = x8; then
221 # long long is a 64 bit integer.
222 AC_MSG_CHECKING(for format to printf and scanf a gint64)
223 AC_CACHE_VAL(glib_cv_long_long_format,[
224 AC_TRY_RUN([#include <stdio.h>
227 long long b, a = -0x3AFAFAFAFAFAFAFALL;
229 sprintf (buffer, "%llu", a);
230 sscanf (buffer, "%llu", &b);
234 glib_cv_long_long_format=ll,
235 glib_cv_long_long_format=q)])
236 AC_MSG_RESULT(%${glib_cv_long_long_format}i)
239 dnl long doubles were not used, and a portability problem
243 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
244 dnl truely know which ones of `inline', `__inline' and `__inline__' are
245 dnl actually supported.
246 AC_MSG_CHECKING(for __inline)
247 AC_CACHE_VAL(glib_cv_has__inline,[
249 __inline int foo () { return 0; }
250 int main () { return foo (); }
252 glib_cv_has__inline=yes
254 glib_cv_has__inline=no
257 AC_MSG_RESULT($glib_cv_has__inline)
258 case x$glib_cv_has__inline in
259 xyes) AC_DEFINE(G_HAVE___INLINE)
261 AC_MSG_CHECKING(for __inline__)
262 AC_CACHE_VAL(glib_cv_has__inline__,[
264 __inline__ int foo () { return 0; }
265 int main () { return foo (); }
267 glib_cv_has__inline__=yes
269 glib_cv_has__inline__=no
272 AC_MSG_RESULT($glib_cv_has__inline__)
273 case x$glib_cv_has__inline__ in
274 xyes) AC_DEFINE(G_HAVE___INLINE__)
276 AC_MSG_CHECKING(for inline)
277 AC_CACHE_VAL(glib_cv_hasinline,[
279 inline int foo () { return 0; }
280 int main () { return foo (); }
282 glib_cv_hasinline=yes
287 AC_MSG_RESULT($glib_cv_hasinline)
288 case x$glib_cv_hasinline in
289 xyes) AC_DEFINE(G_HAVE_INLINE)
292 dnl for bytesex stuff
295 dnl header file checks
296 AC_CHECK_HEADERS(float.h, AC_DEFINE(HAVE_FLOAT_H))
297 AC_CHECK_HEADERS(limits.h, AC_DEFINE(HAVE_LIMITS_H))
298 AC_CHECK_HEADERS(pwd.h, AC_DEFINE(HAVE_PWD_H))
299 AC_CHECK_HEADERS(sys/param.h, AC_DEFINE(HAVE_SYS_PARAM_H))
300 AC_CHECK_HEADERS(sys/poll.h, AC_DEFINE(HAVE_SYS_POLL_H))
301 AC_CHECK_HEADERS(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H))
302 AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
303 AC_CHECK_HEADERS(sys/times.h, AC_DEFINE(HAVE_SYS_TIMES_H))
304 AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H))
305 AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))
307 # Check for some functions
308 AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf strcasecmp strncasecmp poll)
310 # Check if bcopy can be used for overlapping copies, if memmove isn't found.
311 # The check is borrowed from the PERL Configure script.
312 if test "$ac_cv_func_memmove" != "yes"; then
313 AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
314 glib_cv_working_bcopy,[AC_TRY_RUN([
316 char buf[128], abc[128], *b;
318 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
319 for (align = 7; align >= 0; align--) {
320 for (len = 36; len; len--) {
321 b = buf+align; bcopy(abc, b, len);
322 for (off = 1; off <= len; off++) {
323 bcopy(b, b+off, len); bcopy(b+off, b, len);
324 if (bcmp(b, abc, len)) return(1);
329 }],glib_cv_working_bcopy=yes,glib_cv_working_bcopy=no)])
330 if test "$glib_cv_working_bcopy" == "yes"; then
331 AC_DEFINE(HAVE_WORKING_BCOPY)
335 # Check for sys_errlist
336 AC_MSG_CHECKING(for sys_errlist)
338 extern char *sys_errlist[];
340 sys_errlist[sys_nerr-1][0] = 0;
341 ], glib_ok=yes, glib_ok=no)
342 AC_MSG_RESULT($glib_ok)
343 if test $glib_ok = no; then
344 AC_DEFINE(NO_SYS_ERRLIST)
347 # Check for sys_siglist
348 AC_MSG_CHECKING(for sys_siglist)
350 extern char *sys_siglist[];
351 strlen (sys_siglist[0]);
352 ], glib_ok=yes, glib_ok=no)
353 AC_MSG_RESULT($glib_ok)
354 if test $glib_ok = no; then
355 AC_DEFINE(NO_SYS_SIGLIST)
358 # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
359 AC_MSG_CHECKING(for sys_siglist declaration)
360 AC_TRY_COMPILE([#include <signal.h>], [
361 strlen (sys_siglist[0]);
362 ], glib_ok=yes, glib_ok=no)
363 AC_MSG_RESULT($glib_ok)
364 if test $glib_ok = no; then
365 AC_DEFINE(NO_SYS_SIGLIST_DECL)
368 # Check if <sys/select.h> needs to be included for fd_set
369 AC_MSG_CHECKING([for fd_set])
370 AC_TRY_COMPILE([#include <sys/types.h>],
371 [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
372 if test $gtk_ok = yes; then
373 AC_MSG_RESULT([yes, found in sys/types.h])
375 AC_HEADER_EGREP(fd_set, sys/select.h, gtk_ok=yes)
376 if test $gtk_ok = yes; then
377 AC_DEFINE(HAVE_SYS_SELECT_H)
378 AC_MSG_RESULT([yes, found in sys/select.h])
385 dnl *** check for sane realloc() ***
386 AC_MSG_CHECKING(whether realloc (NULL,) will work)
387 AC_CACHE_VAL(glib_cv_sane_realloc,[
391 return realloc (0, sizeof (int)) == 0;
393 glib_cv_sane_realloc=yes
394 AC_DEFINE(REALLOC_0_WORKS)
396 glib_cv_sane_realloc=no
399 AC_MSG_RESULT($glib_cv_sane_realloc)
402 dnl **********************
403 dnl *** va_copy checks ***
404 dnl **********************
405 dnl we currently check for all three va_copy possibilities, so we get
406 dnl all results in config.log for bug reports.
407 AC_MSG_CHECKING(for an implementation of va_copy())
408 AC_CACHE_VAL(glib_cv_va_copy,[
411 void f (int i, ...) {
412 va_list args1, args2;
414 va_copy (args2, args1);
415 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
417 va_end (args1); va_end (args2);
428 AC_MSG_RESULT($glib_cv_va_copy)
429 AC_MSG_CHECKING(for an implementation of __va_copy())
430 AC_CACHE_VAL(glib_cv___va_copy,[
433 void f (int i, ...) {
434 va_list args1, args2;
436 __va_copy (args2, args1);
437 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
439 va_end (args1); va_end (args2);
445 glib_cv___va_copy=yes
450 AC_MSG_RESULT($glib_cv___va_copy)
451 AC_MSG_CHECKING(whether va_lists can be copied by value)
452 AC_CACHE_VAL(glib_cv_va_val_copy,[
455 void f (int i, ...) {
456 va_list args1, args2;
459 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
461 va_end (args1); va_end (args2);
467 glib_cv_va_val_copy=yes
469 glib_cv_va_val_copy=no
472 if test "x$glib_cv_va_copy" = "xyes"; then
473 AC_DEFINE(G_VA_COPY, va_copy)
474 else if test "x$glib_cv___va_copy" = "xyes"; then
475 AC_DEFINE(G_VA_COPY, __va_copy)
478 if test "x$glib_cv_va_val_copy" = "xno"; then
479 AC_DEFINE(G_VA_COPY_AS_ARRAY)
481 AC_MSG_RESULT($glib_cv_va_val_copy)
484 dnl ***********************
485 dnl *** g_module checks ***
486 dnl ***********************
489 G_MODULE_PLUGIN_LIBS=
491 dnl G_MODULE_IMPL= don't reset, so cmd-line can override
492 G_MODULE_NEED_USCORE=0
493 G_MODULE_HAVE_DLERROR=0
494 dnl *** dlopen() and dlsym() in system libraries
495 if test -z "$G_MODULE_IMPL"; then
496 AC_CHECK_FUNC(dlopen,
498 G_MODULE_IMPL=G_MODULE_IMPL_DL
502 dnl *** load_image (BeOS)
503 if test -z "$G_MODULE_IMPL" -a "x$glib_native_beos" = "xyes"; then
504 AC_CHECK_LIB(root, load_image,
505 G_MODULE_LIBS="-lbe -lroot -lglib"
506 G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
507 G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
508 G_MODULE_IMPL=G_MODULE_IMPL_BEOS
511 dnl *** dlopen() and dlsym() in libdl
512 if test -z "$G_MODULE_IMPL"; then
513 AC_CHECK_LIB(dl, dlopen,
514 AC_CHECK_LIB(dl, dlsym,
516 G_MODULE_IMPL=G_MODULE_IMPL_DL
520 dnl *** shl_load() in libdld (HP-UX)
521 if test -z "$G_MODULE_IMPL"; then
522 AC_MSG_CHECKING(how to export all symbols)
523 SAVED_LDFLAGS=$LDFLAGS
524 LDFLAGS="$LDFLAGS -Wl,-E"
525 AC_TRY_LINK(,[ return 0; ],
526 [ G_MODULE_LDFLAGS="-Wl,-E" ],[
527 LDFLAGS="$SAVED_LDFLAGS -bexpall"
528 AC_TRY_LINK(,[ return 0; ],
529 G_MODULE_LDFLAGS="-bexpall",
530 G_MODULE_LDFLAGS="none"
533 LDFLAGS=$SAVED_LDFLAGS
534 AC_MSG_RESULT($G_MODULE_LDFLAGS)
535 if test "x$G_MODULE_LDFLAGS" = "xnone"; then
538 AC_CHECK_LIB(dld, shl_load,
540 G_MODULE_IMPL=G_MODULE_IMPL_DLD
543 dnl *** additional checks for G_MODULE_IMPL_DL
544 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
547 G_MODULE_LDFLAGS='-rdynamic'
551 LDFLAGS_orig="$LDFLAGS"
552 LIBS="$LIBS $G_MODULE_LIBS"
553 LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
554 dnl *** check whether we need preceeding underscores
555 AC_MSG_CHECKING(for preceeding underscore in symbols)
556 AC_CACHE_VAL(glib_cv_uscore,[
559 int glib_underscore_test (void) { return 42; }
561 void *f1 = (void*)0, *f2 = (void*)0, *handle;
562 handle = dlopen ((void*)0, 0);
564 f1 = dlsym (handle, "glib_underscore_test");
565 f2 = dlsym (handle, "_glib_underscore_test");
566 } return (!f2 || f1);
571 rm -f plugin.c plugin.o plugin.lo
573 AC_MSG_RESULT($glib_cv_uscore)
574 if test "x$glib_cv_uscore" = "xyes"; then
575 G_MODULE_NEED_USCORE=1
577 G_MODULE_NEED_USCORE=0
580 LDFLAGS="$LDFLAGS_orig"
581 dnl *** check for having dlerror()
582 AC_CHECK_FUNC(dlerror,
583 G_MODULE_HAVE_DLERROR=1,
584 G_MODULE_HAVE_DLERROR=0)
587 dnl *** done, have e got an implementation?
588 if test -z "$G_MODULE_IMPL"; then
591 AC_SUBST(G_MODULE_IMPL)
592 AC_SUBST(G_MODULE_LIBS)
593 AC_SUBST(G_MODULE_LIBS_EXTRA)
594 AC_SUBST(G_MODULE_PLUGIN_LIBS)
595 AC_SUBST(G_MODULE_LDFLAGS)
596 AC_SUBST(G_MODULE_HAVE_DLERROR)
597 AC_SUBST(G_MODULE_NEED_USCORE)
598 AC_SUBST(GLIB_DEBUG_FLAGS)
601 dnl ***********************
602 dnl *** g_thread checks ***
603 dnl ***********************
605 AC_ARG_WITH(threads, [ --with-threads=[none/posix/dce/solaris] specify a thread implementation to use],
606 if test "x$with_threads" = x; then
609 want_threads=$with_threads
612 if test "x$enable_threads" = "xno"; then
615 if test "x$want_threads" = "xnone"; then
619 dnl error and warning message
620 dnl *************************
622 THREAD_NO_IMPLEMENTATION="You do not have any known thread system on your
623 computer. GLib will not have a default thread implementation."
625 FLAG_DOES_NOT_WORK="I can't find the MACRO, that enables thread safety on your
626 platform (normaly it's "_REENTRANT"). I'll not use any flag on
627 compilation now, but then your programs might not work.
628 Please provide information on how it is done on your system."
630 LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
633 LIBS_NOT_FOUND_2=". Please choose another thread implementation or
634 provide information on your thread implementation.
635 You can also run 'configure --disable-threads'
636 to compile without thread support."
638 FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
639 functions will not be MT-safe during their first call because
640 there is no working 'getpwuid_r' on your system."
642 FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
643 because there is no 'localtime_r' on your system."
645 dnl determination of thread implementation
646 dnl ***************************************
649 if test "x$want_threads" = xyes || test "x$want_threads" = xsolaris; then
652 AC_CHECK_LIB(thread, cond_init, have_threads=solaris)
656 if test "x$want_threads" = xyes || test "x$want_threads" = xposix \
657 || test "x$want_threads" = xdce; then
658 # -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
659 # -U_OSF_SOURCE if for Digital UNIX 4.0d
660 GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
661 glib_save_CPPFLAGS="$CPPFLAGS"
662 CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
663 if test "x$have_threads" = xnone; then
664 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_init[^a-zA-Z_]],
668 if test "x$have_threads" = xnone; then
669 AC_EGREP_HEADER([[^a-zA-Z_]pthread_attr_create[^a-zA-Z_]],
673 CPPFLAGS="$glib_save_CPPFLAGS"
676 AC_MSG_CHECKING(for thread implementation)
678 if test "x$have_threads" = xnone && test "x$want_threads" != xno; then
679 AC_MSG_RESULT(none available)
680 AC_MSG_WARN($THREAD_NO_IMPLEMENTATION)
682 AC_MSG_RESULT($have_threads)
686 dnl determination of G_THREAD_LIBS
687 dnl ******************************
694 case $have_threads in
697 glib_save_LIBS="$LIBS"
698 for thread_lib in "" pthread pthreads c_r thread dce; do
699 # This is not AC_CHECK_LIB to also work with function
700 # name mangling in header files.
701 if test x"$thread_lib" = x; then
705 add_thread_lib="-l$thread_lib"
706 IN=" in -l$thread_lib"
709 LIBS="$glib_save_LIBS $add_thread_lib"
711 AC_MSG_CHECKING(for pthread_join$IN)
712 AC_TRY_LINK([#include <pthread.h>],
713 [pthread_join(NULL,NULL)],
715 G_THREAD_LIBS="$add_thread_lib"
719 LIBS="$glib_save_LIBS"
720 mutex_has_default=yes
721 mutex_default_type='pthread_mutex_t'
722 mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
723 mutex_header_file='pthread.h'
724 if test "x$have_threads" = "xposix"; then
725 g_threads_impl="POSIX"
730 AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
734 AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
735 mutex_has_default=yes
736 mutex_default_type='mutex_t'
737 mutex_default_init="DEFAULTMUTEX"
738 mutex_header_file='thread.h'
739 g_threads_impl="SOLARIS"
742 g_threads_impl="NONE"
745 g_threads_impl="NONE"
750 if test "x$G_THREAD_LIBS" = xerror; then
751 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
756 G_THREAD_LIBS="-lbe -lroot -lglib "
757 G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
764 AC_MSG_CHECKING(thread related libraries)
765 AC_MSG_RESULT($G_THREAD_LIBS)
767 dnl determination of G_THREAD_CFLAGS
768 dnl ********************************
770 if test x"$enable_threads" = xyes; then
772 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_REENTRANT" # good default guess
776 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
777 if test x"$GCC" = xyes; then
778 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -mthreads"
782 G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
784 # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
789 # if we are not finding the ctime_r function, then we probably are
790 # not using the proper multithread flag
791 old_CPPFLAGS=$CPPFLAGS
792 CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
793 # Note: Digital UNIX 4.0d #defines ctime_r to _Pctime_r for gcc.
794 AC_EGREP_HEADER([[^a-zA-Z_](_P)?ctime_r[^a-zA-Z_]], time.h, ,
796 AC_MSG_WARN($FLAG_DOES_NOT_WORK))
797 CPPFLAGS=$old_CPPFLAGS
799 AC_MSG_CHECKING(thread related cflags)
801 AC_MSG_RESULT($G_THREAD_CFLAGS)
806 dnl check for mt safe function variants and some posix functions
807 dnl ************************************************************
809 if test x"$enable_threads" = xyes; then
810 glib_save_LIBS="$LIBS"
811 glib_save_CFLAGS="$CFLAGS"
812 # we are not doing the following for now, as this might require glib
813 # to always be linked with the thread libs on some platforms.
814 # LIBS="$LIBS $G_THREAD_LIBS"
815 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
816 AC_CHECK_FUNCS(localtime_r)
817 if test "$ac_cv_header_pwd_h" = "yes"; then
818 AC_MSG_CHECKING([for getpwuid_r])
819 AC_CACHE_VAL(ac_cv_func_getpwuid_r,
820 [AC_TRY_RUN([#include <errno.h>
821 int main () { char buffer[10000], *pointer;
822 char getpwuid_r (long, void*, void*,
825 getpwuid_r (0, &buffer, &buffer,
826 sizeof (buffer), &pointer);
827 return errno == ENOSYS;}],
828 [ac_cv_func_getpwuid_r=yes],
829 [ac_cv_func_getpwuid_r=no])])
830 if test "$ac_cv_func_getpwuid_r" = yes; then
832 AC_DEFINE(HAVE_GETPWUID_R)
836 if test "$ac_cv_func_getpwuid_r" = "yes"; then
837 AC_MSG_CHECKING(whether getpwuid_r is posix like)
838 # getpwuid_r(0, NULL, NULL, 0) is the signature on
839 # solaris, if that is not found, the prog below won't
840 # compile, then the posix signature is assumed as
842 AC_TRY_COMPILE([#include <pwd.h>],
843 [getpwuid_r(0, NULL, NULL, 0);],
846 AC_DEFINE(HAVE_GETPWUID_R_POSIX)])
849 LIBS="$LIBS $G_THREAD_LIBS"
850 if test x"$have_threads" = xposix; then
851 GLIB_SIZEOF([#include <pthread.h>],
854 # This is not AC_CHECK_FUNC to also work with function
855 # name mangling in header files.
856 AC_MSG_CHECKING(for pthread_attr_setstacksize)
857 AC_TRY_LINK([#include <pthread.h>],
858 [pthread_attr_setstacksize(NULL,0)],
860 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE)],
862 # If sched_get_priority_min(SCHED_OTHER) returns something
863 # negative, we ignore it. This happens on Solaris.
864 AC_MSG_CHECKING(for minimal/maximal thread priority)
865 AC_TRY_RUN([#include <pthread.h>
867 { return sched_get_priority_min(SCHED_OTHER) < 0;}],
868 [posix_priority_min="sched_get_priority_min(SCHED_OTHER)"
869 posix_priority_max="sched_get_priority_max(SCHED_OTHER)"],
870 [posix_priority_min=none])
871 if test x"$posix_priority_min" = xnone; then
872 AC_EGREP_CPP(PX_PRIO_MIN,[#include <pthread.h>
874 posix_priority_min=PX_PRIO_MIN
875 posix_priority_max=PX_PRIO_MAX])
877 if test x"$posix_priority_min" = xnone; then
878 AC_EGREP_CPP(PRI_OTHER_MIN,[#include <pthread.h>
880 posix_priority_min=PRI_OTHER_MIN
881 posix_priority_max=PRI_OTHER_MAX])
883 if test x"$posix_priority_min" = xnone; then
887 posix_priority_max=127
891 if test x"$posix_priority_min" = xnone; then
892 AC_MSG_RESULT(none found)
893 AC_MSG_WARN($POSIX_NO_PRIORITIES)
897 AC_MSG_RESULT($posix_priority_min/$posix_priority_max)
899 AC_DEFINE_UNQUOTED(POSIX_MIN_PRIORITY,$posix_priority_min)
900 AC_DEFINE_UNQUOTED(POSIX_MAX_PRIORITY,$posix_priority_max)
901 posix_yield_func=none
902 AC_MSG_CHECKING(for posix yield function)
903 for yield_func in pthread_yield_np pthread_yield sched_yield \
905 AC_TRY_LINK([#include <pthread.h>],
907 [posix_yield_func="$yield_func"
910 if test x"$posix_yield_func" = xnone; then
911 AC_MSG_RESULT(none found)
912 AC_MSG_WARN($POSIX_NO_YIELD)
913 posix_yield_func="g_thread_sleep(1000)"
915 AC_MSG_RESULT($posix_yield_func)
916 posix_yield_func="$posix_yield_func()"
918 AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func)
920 LIBS="$glib_save_LIBS"
921 CFLAGS="$glib_save_CFLAGS"
923 # now spit out all the warnings.
924 if test "$ac_cv_func_getpwuid_r" != "yes"; then
925 AC_MSG_WARN($FUNC_NO_GETPWUID_R)
927 if test "$ac_cv_func_localtime_r" != "yes"; then
928 AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
932 AC_DEFINE_UNQUOTED(G_THREAD_SOURCE,"gthread-$have_threads.c")
933 AC_SUBST(G_THREAD_CFLAGS)
934 AC_SUBST(G_THREAD_LIBS)
935 AC_SUBST(G_THREAD_LIBS_EXTRA)
937 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
939 dnl **********************************************
940 dnl *** GDefaultMutex setup and initialization ***
941 dnl **********************************************
943 dnl if mutex_has_default = yes, we also got
944 dnl mutex_default_type, mutex_default_init and mutex_header_file
945 GLIB_IF_VAR_EQ(mutex_has_default, yes,
946 GLIB_SIZEOF([#include <$mutex_header_file>],
950 GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
953 $glib_cv_sizeof_gmutex,
955 if test x"$have_threads" = xposix; then
956 GLIB_BYTE_CONTENTS([#define __USE_GNU
957 #include <$mutex_header_file>],
960 $glib_cv_sizeof_gmutex,
961 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
967 dnl ****************************************
968 dnl *** GLib POLL* compatibility defines ***
969 dnl ****************************************
971 [#include <sys/types.h>
972 #include <sys/poll.h>],
973 POLLIN:1 POLLOUT:4 POLLPRI:2 POLLERR:8 POLLHUP:16 POLLNVAL:32,
974 glibconfig-sysdefs.h,
978 dnl ******************************
979 dnl *** output the whole stuff ***
980 dnl ******************************
984 ## Generate `glibconfig.h' in two cases
985 ## 1. `config.status' is run either explicitly, or via configure.
986 ## Esp. not when it is run in `Makefile' to generate makefiles and
988 ## 2. CONFIG_OTHER is set explicitly
990 ## Case 1 is difficult. We know that `automake' sets one of
991 ## CONFIG_FILES or CONFIG_HEADERS to empty. This heuristic works
992 ## only when AM_CONFIG_HEADER is set, however.
994 if test -n "${CONFIG_FILES}" && test -n "${CONFIG_HEADERS}"; then
995 # Both CONFIG_FILES and CONFIG_HEADERS are non-empty ==> Case 1
996 CONFIG_OTHER=${CONFIG_OTHER:-glibconfig.h}
998 case "$CONFIG_OTHER" in
1000 echo creating glibconfig.h
1001 outfile=glibconfig.h-tmp
1002 cat > $outfile <<\_______EOF
1005 * This is a generated file. Please modify `configure.in'
1008 #ifndef GLIBCONFIG_H
1009 #define GLIBCONFIG_H
1013 #endif /* __cplusplus */
1017 if test x$glib_limits_h = xyes; then
1018 echo '#include <limits.h>' >> $outfile
1020 if test x$glib_float_h = xyes; then
1021 echo '#include <float.h>' >> $outfile
1023 if test x$glib_values_h = xyes; then
1024 echo '#include <values.h>' >> $outfile
1026 if test x$g_mutex_header_file != x; then
1027 echo '#include <'"$g_mutex_header_file"'>' >> $outfile
1029 if test x$glib_sys_poll_h = xyes; then
1030 echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
1033 cat >> $outfile <<_______EOF
1035 #define G_MINFLOAT $glib_mf
1036 #define G_MAXFLOAT $glib_Mf
1037 #define G_MINDOUBLE $glib_md
1038 #define G_MAXDOUBLE $glib_Md
1039 #define G_MINSHORT $glib_ms
1040 #define G_MAXSHORT $glib_Ms
1041 #define G_MAXUSHORT $glib_Mus
1042 #define G_MININT $glib_mi
1043 #define G_MAXINT $glib_Mi
1044 #define G_MAXUINT $glib_Mui
1045 #define G_MINLONG $glib_ml
1046 #define G_MAXLONG $glib_Ml
1047 #define G_MAXULONG $glib_Mul
1052 ### this should always be true in a modern C/C++ compiler
1053 cat >>$outfile <<_______EOF
1054 typedef signed char gint8;
1055 typedef unsigned char guint8;
1059 if test -n "$gint16"; then
1060 cat >>$outfile <<_______EOF
1061 typedef signed $gint16 gint16;
1062 typedef unsigned $gint16 guint16;
1063 #define G_GINT16_FORMAT $gint16_format
1064 #define G_GUINT16_FORMAT $guint16_format
1069 if test -n "$gint32"; then
1070 cat >>$outfile <<_______EOF
1071 typedef signed $gint32 gint32;
1072 typedef unsigned $gint32 guint32;
1073 #define G_GINT32_FORMAT $gint32_format
1074 #define G_GUINT32_FORMAT $guint32_format
1079 if test -n "$gint64"; then
1080 cat >>$outfile <<_______EOF
1081 ${glib_warning_guard}#define G_HAVE_GINT64 1
1083 ${glib_extension}typedef signed $gint64 gint64;
1084 ${glib_extension}typedef unsigned $gint64 guint64;
1086 #define G_GINT64_FORMAT $gint64_format
1087 #define G_GUINT64_FORMAT $guint64_format
1088 #define G_GINT64_CONSTANT(val) $gint64_constant
1093 if test -z "$glib_unknown_void_p"; then
1094 cat >>$outfile <<_______EOF
1096 #define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p))
1097 #define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p))
1099 #define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
1100 #define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
1103 echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
1108 cat >>$outfile <<_______EOF
1116 #define G_HAVE_INLINE 1
1117 #else /* !__cplusplus */
1119 #endif /* !__cplusplus */
1123 if test x$g_mutex_has_default = xyes; then
1124 cat >>$outfile <<_______EOF
1125 $g_enable_threads_def G_THREADS_ENABLED
1126 #define G_THREADS_IMPL_$g_threads_impl_def
1127 typedef struct _GStaticMutex GStaticMutex;
1128 struct _GStaticMutex
1130 struct _GMutex *runtime_mutex;
1132 char pad[$g_mutex_sizeof];
1133 double dummy_double;
1134 void *dummy_pointer;
1138 #define G_STATIC_MUTEX_INIT { NULL, { { $g_mutex_contents} } }
1139 #define g_static_mutex_get_mutex(mutex) \
1140 (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \
1141 g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
1144 cat >>$outfile <<_______EOF
1145 $g_enable_threads_def G_THREADS_ENABLED
1146 #define G_THREADS_IMPL_$g_threads_impl_def
1147 typedef struct _GMutex* GStaticMutex;
1148 #define G_STATIC_MUTEX_INIT NULL
1149 #define g_static_mutex_get_mutex(mutex) (g_static_mutex_get_mutex_impl (mutex))
1152 if test x$g_recmutex_contents != xno -a \
1153 x$g_recmutex_contents != x; then
1154 # the definition of GStaticRecMutex is not done via
1155 # typedef GStaticMutex GStaticRecMutex to avoid silent
1156 # compilation, when a GStaticRecMutex is used where a
1157 # GStaticMutex should have been used and vice versa,
1158 # because that micht fail on other platforms.
1159 cat >>$outfile <<_______EOF
1160 typedef struct _GStaticRecMutex GStaticRecMutex;
1161 struct _GStaticRecMutex
1163 struct _GMutex *runtime_mutex;
1165 char pad[$g_mutex_sizeof];
1166 double dummy_double;
1167 void *dummy_pointer;
1171 #define G_STATIC_REC_MUTEX_INIT { NULL, { { $g_recmutex_contents} } }
1172 #define g_static_rec_mutex_lock(mutex) g_static_mutex_lock (mutex)
1173 #define g_static_rec_mutex_trylock(mutex) g_static_mutex_trylock (mutex)
1174 #define g_static_rec_mutex_unlock(mutex) g_static_mutex_unlock (mutex)
1175 #define g_static_rec_mutex_get_mutex(mutex) (mutex)
1181 if test -n "$gint64"; then
1182 g_bit_sizes="$g_bit_sizes 64"
1184 for bits in $g_bit_sizes; do
1185 cat >>$outfile <<_______EOF
1186 #define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val))
1187 #define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val))
1188 #define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
1189 #define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val))
1193 cat >>$outfile <<_______EOF
1194 #define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val))
1195 #define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val))
1196 #define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val))
1197 #define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val))
1198 #define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val))
1199 #define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val))
1200 #define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
1201 #define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
1202 #define G_BYTE_ORDER $g_byte_order
1206 if test -r glibconfig-sysdefs.h; then
1207 cat glibconfig-sysdefs.h >>$outfile
1210 cat >>$outfile <<_______EOF
1213 #endif /* __cplusplus */
1215 #endif /* GLIBCONFIG_H */
1219 if cmp -s $outfile glibconfig.h; then
1220 echo glibconfig.h is unchanged
1223 mv $outfile glibconfig.h
1228 # Note that if two cases are the same, case goes with the first one.
1229 # Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend
1230 # on variable expansion in case labels. Look at the generated config.status
1234 x$ac_cv_header_float_h)
1236 glib_mf=FLT_MIN glib_Mf=FLT_MAX
1237 glib_md=DBL_MIN glib_Md=DBL_MAX
1239 x$ac_cv_header_values_h)
1241 glib_mf=MINFLOAT glib_Mf=MAXFLOAT
1242 glib_md=MINDOUBLE glib_Md=MAXDOUBLE
1247 x$ac_cv_header_limits_h)
1249 glib_ms=SHRT_MIN glib_Ms=SHRT_MAX glib_Mus=USHRT_MAX
1250 glib_mi=INT_MIN glib_Mi=INT_MAX glib_Mui=UINT_MAX
1251 glib_ml=LONG_MIN glib_Ml=LONG_MAX glib_Mul=ULONG_MAX
1253 x$ac_cv_header_values_h)
1255 glib_ms=MINSHORT glib_Ms=MAXSHORT glib_Mus="(((gushort)G_MAXSHORT)*2+1)"
1256 glib_mi=MININT glib_Mi=MAXINT glib_Mui="(((guint)G_MAXINT)*2+1)"
1257 glib_ml=MINLONG glib_Ml=MAXLONG glib_Mul="(((gulong)G_MAXLONG)*2+1)"
1261 if test x$ac_cv_header_sys_poll_h = xyes ; then
1266 $ac_cv_sizeof_short)
1268 gint16_format='"hi"'
1269 guint16_format='"hu"'
1274 guint16_format='"u"'
1278 $ac_cv_sizeof_short)
1280 gint32_format='"hi"'
1281 guint32_format='"hu"'
1286 guint32_format='"u"'
1290 gint32_format='"li"'
1291 guint32_format='"lu"'
1298 guint64_format='"u"'
1301 gint64_constant='(val)'
1305 gint64_format='"li"'
1306 guint64_format='"lu"'
1309 gint64_constant='(val##L)'
1311 $ac_cv_sizeof_long_long)
1313 gint64_format='"'$glib_cv_long_long_format'i"'
1314 guint64_format='"'$glib_cv_long_long_format'u"'
1315 glib_extension='G_GNUC_EXTENSION '
1316 glib_warning_guard="
1317 #if defined (__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 8
1318 # define G_GNUC_EXTENSION __extension__
1320 # define G_GNUC_EXTENSION
1324 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
1328 gintbits=`expr $ac_cv_sizeof_int \* 8`
1329 glongbits=`expr $ac_cv_sizeof_long \* 8`
1332 case $ac_cv_sizeof_void_p in
1333 $ac_cv_sizeof_int) glib_gpi_cast='' glib_gpui_cast='' ;;
1334 $ac_cv_sizeof_long) glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
1335 *) glib_unknown_void_p=yes ;;
1340 x$ac_cv_func_atexit)
1342 #ifdef NeXT /* @#%@! NeXTStep */
1343 # define g_ATEXIT(proc) (!atexit (proc))
1345 # define g_ATEXIT(proc) (atexit (proc))
1348 x$ac_cv_func_on_exit)
1350 #define g_ATEXIT(proc) (on_exit ((void (*)(int, void*))(proc), NULL))"
1355 x$ac_cv_func_memmove)
1357 #define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END'
1359 x$glib_cv_working_bcopy)
1361 /* memmove isn't available, but bcopy can copy overlapping memory regions */
1362 #define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
1366 /* memmove isn't found and bcopy can't copy overlapping memory regions,
1367 * so we have to roll our own copy routine. */
1368 void g_memmove (void* dest, const void * src, unsigned long len);"
1373 #define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
1374 #define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
1375 #define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
1379 x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;;
1380 x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;;
1384 if test x$glib_cv_va_val_copy = xno; then
1385 glib_vacopy="\$glib_vacopy
1386 #define G_VA_COPY_AS_ARRAY 1"
1389 if test x$glib_cv_hasinline = xyes; then
1390 glib_inline='#define G_HAVE_INLINE 1'
1392 if test x$glib_cv_has__inline = xyes; then
1393 glib_inline="\$glib_inline
1394 #define G_HAVE___INLINE 1"
1396 if test x$glib_cv_has__inline__ = xyes; then
1397 glib_inline="\$glib_inline
1398 #define G_HAVE___INLINE__ 1"
1402 x$ac_cv_c_bigendian)
1403 g_byte_order=G_BIG_ENDIAN
1408 g_byte_order=G_LITTLE_ENDIAN
1414 case x$enable_threads in
1415 xyes) g_enable_threads_def="#define";;
1416 *) g_enable_threads_def="#undef ";;
1419 g_threads_impl_def=$g_threads_impl
1421 g_mutex_has_default="$mutex_has_default"
1422 g_mutex_sizeof="$glib_cv_sizeof_gmutex"
1423 g_mutex_contents="$glib_cv_byte_contents_gmutex"
1424 g_recmutex_contents="$glib_cv_byte_contents_grecmutex"
1426 if test "x$glib_native_beos" = "xyes"; then
1427 glib_native_beos_def="\$glib_native_beos_def
1428 #define GLIB_NATIVE_BEOS 1"
1436 gmodule/gmoduleconf.h
1441 ],[case "$CONFIG_FILES" in
1442 *glib-config*)chmod +x glib-config;;
1445 echo " *** IMPORTANT *** "
1447 echo "This is a development version of GLib. You should be using a stable"
1448 echo "version, which is available at ftp://ftp.gtk.org/pub/gtk/v1.2/. The"
1449 echo "version you just configured is meant for developers of GLib only:"
1451 echo " * You should not base stable software on this version of GLib."
1452 echo " * GNOME developers should use a stable version of GLib."
1454 echo "Distributions should *NOT* ship a development package of this GLib."
1455 echo "Do not ship the headers and do not ship the glib-config script. These"
1456 echo "things will conflict with the stable 1.2 series. Package only enough"
1457 echo "to satisfy the requirements of some other package. Package only the"
1458 echo "library itself. Doing otherwise will do no favors to the community."
1460 echo "If you install this version of GLib, we strongly recommend that you"
1461 echo "install it in a different prefix than GLib 1.2. Use --prefix as an"
1462 echo "argument to configure to do this. Otherwise, you will not be able to"
1463 echo "do development with GLib 1.2 any longer."
1465 echo " *** You should be using GLib 1.2 instead. ***"