Merge commit '866af5da3d11ac4a9df44ee8c5b1781a0073c288'
[bpt/guile.git] / configure.ac
index 1ba6f3d..34c4aa4 100644 (file)
@@ -29,7 +29,7 @@ Floor, Boston, MA 02110-1301, USA.
 AC_PREREQ(2.61)
 
 AC_INIT([GNU Guile],
-        m4_esyscmd([build-aux/git-version-gen --match v2.0.\* .tarball-version]),
+        m4_esyscmd([build-aux/git-version-gen --match  v2.\[12\].\* .tarball-version]),
         [bug-guile@gnu.org])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
@@ -734,8 +734,6 @@ AC_CHECK_HEADERS([assert.h crt_externs.h])
 #               has it as an inline for chsize)
 #   ioctl - not in mingw.
 #   gmtime_r - recent posix, not on old systems
-#   pipe - not in mingw
-#   _pipe - specific to mingw, taking 3 args
 #   readdir_r - recent posix, not on old systems
 #   readdir64_r - not available on HP-UX 11.11
 #   stat64 - SuS largefile stuff, not on old systems
@@ -751,10 +749,10 @@ AC_CHECK_HEADERS([assert.h crt_externs.h])
 #
 AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid                \
   fesetround ftime ftruncate fchown fchmod getcwd geteuid getsid       \
-  gettimeofday gmtime_r ioctl lstat mkdir mknod nice pipe _pipe                \
-  readdir_r readdir64_r readlink rename rmdir select setegid seteuid   \
-  setlocale setpgid setsid sigaction siginterrupt stat64 strftime      \
-  strptime symlink sync sysconf tcgetpgrp tcsetpgrp times uname waitpid        \
+  gettimeofday gmtime_r ioctl lstat mkdir mknod nice                   \
+  readdir_r readdir64_r readlink rename rmdir setegid seteuid          \
+  setlocale setpgid setsid sigaction siginterrupt stat64               \
+  strptime symlink sync sysconf tcgetpgrp tcsetpgrp uname waitpid      \
   strdup system usleep atexit on_exit chown link fcntl ttyname getpwent        \
   getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp \
   index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron    \
@@ -1242,41 +1240,17 @@ main (int argc, char **argv)
 # Boehm's GC library
 #
 #--------------------------------------------------------------------
-PKG_CHECK_MODULES([BDW_GC], [bdw-gc])
+PKG_CHECK_MODULES([BDW_GC], [bdw-gc >= 7.2])
 
 save_LIBS="$LIBS"
 LIBS="$BDW_GC_LIBS $LIBS"
 CFLAGS="$BDW_GC_CFLAGS $CFLAGS"
 
-AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit  \
-  GC_pthread_cancel GC_allow_register_threads GC_pthread_sigmask       \
-  GC_set_start_callback GC_get_heap_usage_safe                         \
-  GC_get_free_space_divisor GC_gcollect_and_unmap GC_get_unmapped_bytes        \
-  GC_set_finalizer_notifier GC_set_finalize_on_demand                  \
-  GC_set_all_interior_pointers GC_get_gc_no GC_set_java_finalization])
-
-# Though the `GC_do_blocking ()' symbol is present in GC 7.1, it is not
-# declared, and has a different type (returning void instead of
-# void*).
-AC_CHECK_DECL([GC_do_blocking],
-  [AC_DEFINE([HAVE_DECL_GC_DO_BLOCKING], [1],
-    [Define this if the `GC_do_blocking ()' function is declared])],
-  [],
-  [#include <gc/gc.h>])
+# Functions that might not be defined, depending on configuration.
+AC_CHECK_FUNCS([GC_pthread_exit GC_pthread_cancel GC_pthread_sigmask])
 
-# `GC_fn_type' is not available in GC 7.1 and earlier.
-AC_CHECK_TYPE([GC_fn_type],
-  [AC_DEFINE([HAVE_GC_FN_TYPE], [1],
-    [Define this if the `GC_fn_type' type is available.])],
-  [],
-  [#include <gc/gc.h>])
-
-# `GC_stack_base' is not available in GC 7.1 and earlier.
-AC_CHECK_TYPE([struct GC_stack_base],
-  [AC_DEFINE([HAVE_GC_STACK_BASE], [1],
-    [Define this if the `GC_stack_base' type is available.])],
-  [],
-  [#include <gc/gc.h>])
+# Functions from GC 7.3.
+AC_CHECK_FUNCS([GC_move_disappearing_link])
 
 LIBS="$save_LIBS"
 
@@ -1302,6 +1276,29 @@ if test $scm_cv_struct_linger = yes; then
            getsockopt and setsockopt system calls.])
 fi
 
+
+dnl Check for `struct timespec', for the sake of `gen-scmconfig'.  When
+dnl building Guile, we always have it, thanks to Gnulib; but scmconfig.h
+dnl must tell whether the system has it.
+dnl
+dnl On MinGW, struct timespec is in <pthread.h>.
+AC_MSG_CHECKING(for struct timespec)
+AC_CACHE_VAL(scm_cv_struct_timespec,
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <time.h>
+#if HAVE_PTHREAD_H
+#include <pthread.h>
+#endif]], [[struct timespec t;  t.tv_nsec = 100]])],
+          [scm_cv_struct_timespec="yes"],
+          [scm_cv_struct_timespec="no"]))
+AC_MSG_RESULT($scm_cv_struct_timespec)
+if test $scm_cv_struct_timespec = yes; then
+  dnl Don't call it `HAVE_STRUCT_TIMESPEC' because pthread-win32's
+  dnl <pthread.h> checks whether that macro is defined.
+  AC_DEFINE([HAVE_SYSTEM_STRUCT_TIMESPEC], 1,
+    [Define this if your system defines struct timespec via either <time.h> or <pthread.h>.])
+fi
+
 #--------------------------------------------------------------------
 #
 # Flags for thread support
@@ -1529,10 +1526,11 @@ AC_SUBST(GCC_CFLAGS)
 GUILE_GNU_LD_RELRO
 
 
-## If we're creating a shared library (using libtool!), then we'll
-## need to generate a list of .lo files corresponding to the .o files
-## given in LIBOBJS.  We'll call it LIBLOBJS.
-LIBLOBJS="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`"
+LIBLOBJS=""
+for file in $LIBOBJS; do
+  file=`echo "$file" | sed 's,\.[[^.]]*$,.lo,'`
+  LIBLOBJS="$LIBLOBJS libguile_${GUILE_EFFECTIVE_VERSION}_la-$file"
+done
 
 ## We also need to create corresponding .doc and .x files
 EXTRA_DOT_DOC_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.doc ,g;s,\.[[^.]]*$,.doc,'`"
@@ -1636,8 +1634,8 @@ AC_CONFIG_FILES([
   module/Makefile
 ])
 
-AC_CONFIG_FILES([meta/guile-2.0.pc])
-AC_CONFIG_FILES([meta/guile-2.0-uninstalled.pc])
+AC_CONFIG_FILES([meta/guile-2.2.pc])
+AC_CONFIG_FILES([meta/guile-2.2-uninstalled.pc])
 
 GUILE_CONFIG_SCRIPT([check-guile])
 GUILE_CONFIG_SCRIPT([benchmark-guile])