remove empty srfi-4, srfi-13, and srfi-14 shlibs
[bpt/guile.git] / configure.ac
index 1393d87..513f7ed 100644 (file)
@@ -4,7 +4,7 @@ dnl
 
 define(GUILE_CONFIGURE_COPYRIGHT,[[
 
-Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GUILE
 
@@ -27,25 +27,23 @@ Floor, Boston, MA 02110-1301, USA.
 
 AC_PREREQ(2.61)
 
-dnl  `patsubst' here deletes the newline which "echo" prints.  We can't use
-dnl  "echo -n" since -n is not portable (see autoconf manual "Limitations of
-dnl  Builtins"), in particular on solaris it results in a literal "-n" in
-dnl  the output.
-dnl
 AC_INIT([GNU Guile],
-        patsubst(m4_esyscmd(. ./GUILE-VERSION && echo ${GUILE_VERSION}),[
-]),
+        m4_esyscmd([build-aux/git-version-gen                                  \
+          .tarball-version                                                     \
+          's/^release_\([0-9][0-9]*\)-\([0-9][0-9]*\)-\([0-9][0-9]*\)/v\1.\2\.\3/g']),
         [bug-guile@gnu.org])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR(GUILE-VERSION)
 
-AM_INIT_AUTOMAKE([gnu no-define check-news -Wall -Wno-override])
+AM_INIT_AUTOMAKE([gnu no-define -Wall -Wno-override])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AC_SUBST([AM_DEFAULT_VERBOSITY],1)])
 
 AC_COPYRIGHT(GUILE_CONFIGURE_COPYRIGHT)
 AC_CONFIG_SRCDIR([GUILE-VERSION])
 
 . $srcdir/GUILE-VERSION
+GUILE_VERSION="$PACKAGE_VERSION"
 
 AC_CONFIG_HEADERS([config.h])
 AH_TOP(/*GUILE_CONFIGURE_COPYRIGHT*/)
@@ -76,10 +74,13 @@ AM_PROG_CC_C_O
 
 AC_LIBTOOL_DLOPEN
 AC_PROG_LIBTOOL
-AC_CHECK_LIB([ltdl], [lt_dlinit], ,
-  [AC_MSG_ERROR([libltdl not found.  See README.])])
-AC_CHECK_HEADER([ltdl.h], [],
-  [AC_MSG_ERROR([<ltdl.h> not found.  See README.])])
+
+dnl Check for libltdl.
+AC_LIB_HAVE_LINKFLAGS([ltdl], [], [#include <ltdl.h>],
+  [lt_dlopenext ("foo");])
+if text "x$HAVE_LIBLTDL" != "xyes"; then
+  AC_MSG_ERROR([GNU libltdl (Libtool) not found, see README.])
+fi
 
 AC_CHECK_PROG(have_makeinfo, makeinfo, yes, no)
 AM_CONDITIONAL(HAVE_MAKEINFO, test "$have_makeinfo" = yes)
@@ -105,14 +106,6 @@ AC_ARG_ENABLE(error-on-warning,
      *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
    esac])
 
-SCM_I_GSC_GUILE_DEBUG_FREELIST=0
-AC_ARG_ENABLE(debug-freelist,
-  [  --enable-debug-freelist include garbage collector freelist debugging code],
-  if test "$enable_debug_freelist" = y \
-     || test "$enable_debug_freelist" = yes; then
-    SCM_I_GSC_GUILE_DEBUG_FREELIST=1
-  fi)
-
 AC_ARG_ENABLE(debug-malloc,
   [  --enable-debug-malloc   include malloc debugging code],
   if test "$enable_debug_malloc" = y || test "$enable_debug_malloc" = yes; then
@@ -140,15 +133,6 @@ AC_ARG_ENABLE(regex,
   [  --disable-regex         omit regular expression interfaces],,
   enable_regex=yes)
 
-AC_ARG_ENABLE([discouraged],
-  AS_HELP_STRING([--disable-discouraged],[omit discouraged features]))
-
-if test "$enable_discouraged" = no; then
-  SCM_I_GSC_ENABLE_DISCOURAGED=0
-else
-  SCM_I_GSC_ENABLE_DISCOURAGED=1
-fi
-
 AC_ARG_ENABLE([deprecated],
   AS_HELP_STRING([--disable-deprecated],[omit deprecated features]))
 
@@ -168,10 +152,6 @@ fi
 AC_DEFINE_UNQUOTED([SCM_WARN_DEPRECATED_DEFAULT], "$warn_default",
 [Define this to control the default warning level for deprecated features.])
 
-AC_ARG_ENABLE(elisp,
-  [  --disable-elisp         omit Emacs Lisp support],,
-  enable_elisp=yes)
-
 dnl  Added the following configure option in January 2008 following
 dnl  investigation of problems with "64" system and library calls on
 dnl  Darwin (MacOS X).  The libguile code (_scm.h) assumes that if a
@@ -262,11 +242,6 @@ if test "$enable_debug_malloc" = yes; then
    AC_LIBOBJ([debug-malloc])
 fi
 
-if test "$enable_elisp" = yes; then
-  SCM_I_GSC_ENABLE_ELISP=1
-else
-  SCM_I_GSC_ENABLE_ELISP=0
-fi
 AC_CHECK_LIB(uca, __uc_get_ar_bsp)
 
 AC_C_CONST
@@ -671,6 +646,16 @@ sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h \
 sys/utime.h time.h unistd.h utime.h pwd.h grp.h sys/utsname.h \
 direct.h langinfo.h nl_types.h machine/fpu.h])
 
+# Reasons for testing:
+#   nl_item - lacking on Cygwin
+AC_CHECK_TYPES([nl_item], [], [],
+  [[#ifdef HAVE_LANGINFO_H
+    # include <langinfo.h>
+    #endif
+    #ifdef HAVE_NL_TYPES_H
+    # include <nl_types.h>
+    #endif]])
+
 # "complex double" is new in C99, and "complex" is only a keyword if
 # <complex.h> is included
 AC_CHECK_TYPES(complex double,,,
@@ -764,8 +749,9 @@ AC_CHECK_HEADERS([assert.h crt_externs.h])
 #   _NSGetEnviron - Darwin specific
 #   strcoll_l, newlocale - GNU extensions (glibc), also available on Darwin
 #   nl_langinfo - X/Open, not available on Windows.
+#   utimensat: posix.1-2008
 #
-AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid fesetround ftime ftruncate fchown getcwd geteuid 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 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 strcoll strcoll_l newlocale nl_langinfo])
+AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid fesetround ftime ftruncate fchown 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 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 strcoll strcoll_l newlocale nl_langinfo utimensat])
 
 # Reasons for testing:
 #   netdb.h - not in mingw
@@ -865,11 +851,14 @@ fi
 
 
 dnl GMP tests
-AC_LIB_HAVE_LINKFLAGS(gmp,
+AC_LIB_HAVE_LINKFLAGS([gmp],
   [],
   [#include <gmp.h>],
-  [mpz_import (0, 0, 0, 0, 0, 0, 0);],
-  AC_MSG_ERROR([GNU MP 4.1 or greater not found, see README]))
+  [mpz_import (0, 0, 0, 0, 0, 0, 0);])
+
+if test "x$HAVE_LIBGMP" != "xyes"; then
+  AC_MSG_ERROR([GNU MP 4.1 or greater not found, see README])
+fi
 
 dnl GNU libunistring is checked for by Gnulib's `libunistring' module.
 if test "x$LTLIBUNISTRING" != "x"; then
@@ -878,6 +867,22 @@ else
   AC_MSG_ERROR([GNU libunistring is required, please install it.])
 fi
 
+dnl Libffi is needed to compile Guile's foreign function interface, but its
+dnl interface isn't exposed in Guile's API.
+PKG_CHECK_MODULES(LIBFFI, libffi)
+AC_SUBST(LIBFFI_CFLAGS)
+AC_SUBST(LIBFFI_LIBS)
+
+dnl figure out approriate ffi type for size_t
+AC_CHECK_SIZEOF(size_t)
+AC_CHECK_SIZEOF(ssize_t)
+ffi_size_type=uint$(($ac_cv_sizeof_size_t*8))
+ffi_ssize_type=sint$(($ac_cv_sizeof_ssize_t*8))
+AC_DEFINE_UNQUOTED([ffi_type_size_t], ffi_type_${ffi_size_type}, 
+                  [ffi type for size_t])
+AC_DEFINE_UNQUOTED([ffi_type_ssize_t], ffi_type_${ffi_ssize_type}, 
+                  [ffi type for ssize_t])
+
 dnl i18n tests
 #AC_CHECK_HEADERS([libintl.h])
 #AC_CHECK_FUNCS(gettext)
@@ -1108,9 +1113,7 @@ if test "$enable_regex" = yes; then
    fi
 fi
 
-AC_REPLACE_FUNCS(inet_aton putenv strerror memmove mkstemp)
-
-AC_CHECK_HEADERS(floatingpoint.h ieeefp.h nan.h)
+AC_REPLACE_FUNCS([strerror memmove mkstemp])
 
 # Reasons for testing:
 #   asinh, acosh, atanh, trunc - C99 standard, generally not available on
@@ -1157,7 +1160,10 @@ int main () { return (isnan(x) != 0); }]]),
 # Note AC_STRUCT_ST_BLOCKS is not used here because we don't want the
 # AC_LIBOBJ(fileblocks) replacement which that macro gives.
 #
-AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize, struct stat.st_blocks])
+AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize, struct stat.st_blocks, struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,,
+                 [#define _GNU_SOURCE
+AC_INCLUDES_DEFAULT
+])
 
 AC_STRUCT_TIMEZONE
 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,
@@ -1394,39 +1400,43 @@ AM_CONDITIONAL([BUILD_PTHREAD_SUPPORT],
 
 if test "$with_threads" = pthreads; then
 
-AC_MSG_CHECKING(whether pthread_attr_getstack works for the main thread)
+AC_MSG_CHECKING([whether pthread_attr_getstack works for the main thread])
 old_CFLAGS="$CFLAGS"
 CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
-AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#if HAVE_PTHREAD_ATTR_GETSTACK
-#include <pthread.h>
-
-int main ()
-{
-  pthread_attr_t attr;
-  void *start, *end;
-  size_t size;
-
-  pthread_getattr_np (pthread_self (), &attr);
-  pthread_attr_getstack (&attr, &start, &size);
-  end = (char *)start + size;
-
-  if ((void *)&attr < start || (void *)&attr >= end)
+if test "$cross_compiling" = "no"; then
+  AC_RUN_IFELSE([AC_LANG_SOURCE([[
+  #if HAVE_PTHREAD_ATTR_GETSTACK
+  #include <pthread.h>
+
+  int main ()
+  {
+    pthread_attr_t attr;
+    void *start, *end;
+    size_t size;
+
+    pthread_getattr_np (pthread_self (), &attr);
+    pthread_attr_getstack (&attr, &start, &size);
+    end = (char *)start + size;
+
+    if ((void *)&attr < start || (void *)&attr >= end)
+      return 1;
+    else
+      return 0;
+  }
+  #else
+  int main ()
+  {
     return 1;
-  else
-    return 0;
-}
-#else
-int main ()
-{
-  return 1;
-}
-#endif
-]])],
-[works=yes
-AC_DEFINE([PTHREAD_ATTR_GETSTACK_WORKS], [1], [Define when pthread_att_get_stack works for the main thread])],
-[works=no],
-[])
+  }
+  #endif
+  ]])],
+  [works=yes
+   AC_DEFINE([PTHREAD_ATTR_GETSTACK_WORKS], [1], [Define when pthread_att_get_stack works for the main thread])],
+  [works=no],
+  [])
+else
+  works="assuming it doesn't"
+fi
 CFLAGS="$old_CFLAGS"
 AC_MSG_RESULT($works)
 
@@ -1543,18 +1553,6 @@ AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION)
 AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE)
 AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE)
 
-AC_SUBST(LIBGUILE_SRFI_SRFI_4_MAJOR)
-AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT)
-AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION)
-AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE)
-AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE)
-
-AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_MAJOR)
-AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT)
-AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION)
-AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE)
-AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE)
-
 AC_SUBST(LIBGUILE_SRFI_SRFI_60_MAJOR)
 AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT)
 AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION)
@@ -1587,18 +1585,14 @@ AC_SUBST(top_builddir_absolute)
 top_srcdir_absolute=`(cd $srcdir && pwd)`
 AC_SUBST(top_srcdir_absolute)
 
-dnl We need `sitedir' in `guile-1.8.pc'.
-dnl Note: `sitedir' must be kept in sync with `GUILE_SITE_DIR' in `guile.m4'.
+dnl `sitedir' goes into libpath.h and the pkg-config file.
 pkgdatadir="$datadir/$PACKAGE_TARNAME"
-sitedir="$pkgdatadir/site"
+sitedir="$pkgdatadir/site/$GUILE_EFFECTIVE_VERSION"
 AC_SUBST([sitedir])
 
 # Additional SCM_I_GSC definitions are above.
 AC_SUBST([SCM_I_GSC_GUILE_DEBUG])
-AC_SUBST([SCM_I_GSC_GUILE_DEBUG_FREELIST])
-AC_SUBST([SCM_I_GSC_ENABLE_DISCOURAGED])
 AC_SUBST([SCM_I_GSC_ENABLE_DEPRECATED])
-AC_SUBST([SCM_I_GSC_ENABLE_ELISP])
 AC_SUBST([SCM_I_GSC_STACK_GROWS_UP])
 AC_SUBST([SCM_I_GSC_C_INLINE])
 AC_CONFIG_FILES([libguile/gen-scmconfig.h])
@@ -1611,41 +1605,34 @@ AC_CONFIG_FILES([
   doc/Makefile
   doc/r5rs/Makefile
   doc/ref/Makefile
-  doc/tutorial/Makefile
   emacs/Makefile
   examples/Makefile
   libguile/Makefile
+  libguile/version.h
   srfi/Makefile
   guile-readline/Makefile
   test-suite/Makefile
   test-suite/standalone/Makefile
+  test-suite/vm/Makefile
   meta/Makefile
   module/Makefile
-  testsuite/Makefile
 ])
 
 AC_CONFIG_FILES([meta/guile-2.0.pc])
 AC_CONFIG_FILES([meta/guile-2.0-uninstalled.pc])
-AC_CONFIG_FILES([check-guile], [chmod +x check-guile])
-AC_CONFIG_FILES([benchmark-guile], [chmod +x benchmark-guile])
-AC_CONFIG_FILES([meta/guile], [chmod +x meta/guile])
-AC_CONFIG_FILES([meta/uninstalled-env], [chmod +x meta/uninstalled-env])
-AC_CONFIG_FILES([meta/gdb-uninstalled-guile], [chmod +x meta/gdb-uninstalled-guile])
-AC_CONFIG_FILES([meta/guile-tools], [chmod +x meta/guile-tools])
-AC_CONFIG_FILES([libguile/guile-snarf],
-                [chmod +x libguile/guile-snarf])
-AC_CONFIG_FILES([libguile/guile-doc-snarf],
-                [chmod +x libguile/guile-doc-snarf])
-AC_CONFIG_FILES([libguile/guile-func-name-check],
-                [chmod +x libguile/guile-func-name-check])
-AC_CONFIG_FILES([libguile/guile-snarf-docs],
-                [chmod +x libguile/guile-snarf-docs])
-AC_CONFIG_FILES([test-suite/standalone/test-use-srfi],
-                [chmod +x test-suite/standalone/test-use-srfi])
-AC_CONFIG_FILES([test-suite/standalone/test-fast-slot-ref],
-                [chmod +x test-suite/standalone/test-fast-slot-ref])
 AC_CONFIG_FILES([doc/ref/effective-version.texi])
 
+GUILE_CONFIG_SCRIPT([check-guile])
+GUILE_CONFIG_SCRIPT([benchmark-guile])
+GUILE_CONFIG_SCRIPT([meta/guile])
+GUILE_CONFIG_SCRIPT([meta/uninstalled-env])
+GUILE_CONFIG_SCRIPT([meta/gdb-uninstalled-guile])
+GUILE_CONFIG_SCRIPT([meta/guile-tools])
+GUILE_CONFIG_SCRIPT([libguile/guile-snarf])
+GUILE_CONFIG_SCRIPT([libguile/guile-snarf-docs])
+GUILE_CONFIG_SCRIPT([test-suite/standalone/test-use-srfi])
+GUILE_CONFIG_SCRIPT([test-suite/standalone/test-fast-slot-ref])
+
 AC_OUTPUT
 
 dnl Local Variables: