define(GUILE_CONFIGURE_COPYRIGHT,[[
-Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GUILE
AC_PREREQ(2.61)
AC_INIT([GNU Guile],
- 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']),
+ m4_esyscmd([build-aux/git-version-gen .tarball-version]),
[bug-guile@gnu.org])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
dnl Gnulib.
gl_INIT
+dnl FIXME: remove me and the acinclude.m4 code when clock-gettime is
+dnl LGPL-compatible and can be imported normally.
+gl_CLOCK_TIME
AC_PROG_CC_C89
AC_LIBTOOL_DLOPEN
AC_PROG_LIBTOOL
+AM_CONDITIONAL([HAVE_SHARED_LIBRARIES], [test "x$enable_shared" = "xyes"])
+
+AC_DEFINE_UNQUOTED([SHARED_LIBRARY_PATH_VARIABLE], ["$shlibpath_var"],
+ [Name of the environment variable that tells the dynamic linker where
+to find shared libraries.])
+
dnl Check for libltdl.
AC_LIB_HAVE_LINKFLAGS([ltdl], [], [#include <ltdl.h>],
[lt_dlopenext ("foo");])
-if text "x$HAVE_LIBLTDL" != "xyes"; then
+if test "x$HAVE_LIBLTDL" != "xyes"; then
AC_MSG_ERROR([GNU libltdl (Libtool) not found, see README.])
fi
fi)
AC_ARG_ENABLE(posix,
- [ --disable-posix omit posix interfaces],,
+ [ --disable-posix omit non-essential POSIX interfaces],,
enable_posix=yes)
AC_ARG_ENABLE(networking,
fi
if test "$enable_posix" = yes; then
- AC_LIBOBJ([filesys])
AC_LIBOBJ([posix])
AC_DEFINE([HAVE_POSIX], 1,
- [Define this if you want support for POSIX system calls in Guile.])
+ [Define this if you want support for non-essential POSIX system calls in Guile.])
fi
if test "$enable_networking" = yes; then
AC_CHECK_SIZEOF(size_t)
AC_CHECK_SIZEOF(off_t)
-if test "$ac_cv_sizeof_long" -ne "$ac_cv_sizeof_void_p"; then
- AC_MSG_ERROR(sizes of long and void* are not identical)
+if test "$ac_cv_sizeof_long" -gt "$ac_cv_sizeof_void_p"; then
+ AC_MSG_ERROR(long does not fit into a void*)
fi
if test "$ac_cv_sizeof_ptrdiff_t" -ne 0; then
# this file instead of <fenv.h>
# process.h - mingw specific
# langinfo.h, nl_types.h - SuS v2
+# sched.h - missing on MinGW
#
AC_CHECK_HEADERS([complex.h fenv.h io.h libc.h limits.h malloc.h memory.h process.h string.h \
regex.h rxposix.h rx/rxposix.h sys/dir.h sys/ioctl.h sys/select.h \
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])
+direct.h langinfo.h nl_types.h machine/fpu.h poll.h sched.h])
# Reasons for testing:
# nl_item - lacking on Cygwin
#endif
#include <sys/socket.h>
])
-AC_CHECK_TYPE(struct ip_mreq)
+
+AC_CHECK_TYPES([struct ip_mreq], , , [#include <netinet/in.h>])
GUILE_HEADER_LIBC_WITH_UNISTD
# gmtime_r - recent posix, not on old systems
# pipe - not in mingw
# _pipe - specific to mingw, taking 3 args
+# poll - since posix 2001
# 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
# strcoll_l, newlocale - GNU extensions (glibc), also available on Darwin
# nl_langinfo - X/Open, not available on Windows.
# utimensat: posix.1-2008
+# sched_getaffinity, sched_setaffinity: GNU extensions (glibc)
#
-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])
+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 poll 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 sched_getaffinity sched_setaffinity])
# Reasons for testing:
# netdb.h - not in mingw
# cuserid - on Tru64 5.1b the declaration is documented to be available
# only with `_XOPEN_SOURCE' or some such.
#
-AC_CHECK_HEADERS([crypt.h netdb.h pthread.h sys/param.h sys/resource.h sys/file.h])
+AC_CHECK_HEADERS([crypt.h netdb.h pthread.h sys/param.h sys/resource.h sys/file.h sys/mman.h])
AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
AC_CHECK_DECLS([sethostname, hstrerror, cuserid])
esac
fi
+AC_CACHE_SAVE
dnl GMP tests
AC_LIB_HAVE_LINKFLAGS([gmp],
fi
dnl GNU libunistring is checked for by Gnulib's `libunistring' module.
-if test "x$LTLIBUNISTRING" != "x"; then
- LIBS="$LTLIBUNISTRING $LIBS"
-else
+if test "x$LTLIBUNISTRING" = "x"; then
AC_MSG_ERROR([GNU libunistring is required, please install it.])
fi
+GUILE_LIBUNISTRING_WITH_ICONV_SUPPORT
+if test "x$ac_cv_libunistring_with_iconv_support" != "xyes"; then
+ AC_MSG_ERROR([No iconv support. Please recompile libunistring with iconv enabled.])
+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)
getnetbyaddr getnetbyname dnl
inet_lnaof inet_makeaddr inet_netof hstrerror)
-# struct sockaddr field sin_len is only present on BSD systems.
-# On 4.4BSD apparently a #define SIN_LEN exists, but on other BSD systems
-# (eg. FreeBSD 4.9) it doesn't and we must use this configure check
-AC_CHECK_MEMBERS([struct sockaddr.sin_len],,,
+AC_CHECK_MEMBERS([struct sockaddr_in.sin_len],,,
[#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
GUILE_STRUCT_UTIMBUF
+#--------------------------------------------------------------------
+#
+# What values do the iconv error handlers have?
+#
+# The only place that we need iconv in our public interfaces is for
+# the error handlers, which are just ints. So we weaken our
+# dependency by looking up those values at configure-time.
+#--------------------------------------------------------------------
+SCM_I_GSC_ICONVEH_ERROR=0
+SCM_I_GSC_ICONVEH_QUESTION_MARK=1
+SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE=2
+AC_MSG_CHECKING([for iconveh_error])
+AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+#include <uniconv.h>
+int
+main (int argc, char *argv[])
+{
+ if (argc > 1)
+ printf ("%d\n", (int)iconveh_error);
+ return 0;
+}])],
+ [SCM_I_GSC_ICONVEH_ERROR=`./conftest$EXEEXT pretty-please`
+ AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_ERROR])],
+ [AC_MSG_FAILURE([failed to get iconveh_error])],
+ [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_ERROR for cross-compilation])])
+
+AC_MSG_CHECKING([for iconveh_question_mark])
+AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+#include <uniconv.h>
+int
+main (int argc, char *argv[])
+{
+ if (argc > 1)
+ printf ("%d\n", (int)iconveh_question_mark);
+ return 0;
+}])],
+ [SCM_I_GSC_ICONVEH_QUESTION_MARK=`./conftest$EXEEXT pretty-please`
+ AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_QUESTION_MARK])],
+ [AC_MSG_FAILURE([failed to get iconveh_question_mark])],
+ [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_QUESTION_MARK for cross-compilation])])
+
+AC_MSG_CHECKING([for iconveh_escape_sequence])
+AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+#include <uniconv.h>
+int
+main (int argc, char *argv[])
+{
+ if (argc > 1)
+ printf ("%d\n", (int)iconveh_escape_sequence);
+ return 0;
+}])],
+ [SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE=`./conftest$EXEEXT pretty-please`
+ AC_MSG_RESULT([$SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE])],
+ [AC_MSG_FAILURE([failed to get iconveh_escape_sequence])],
+ [AC_MSG_WARN([assuming $SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE for cross-compilation])])
+
+AC_SUBST([SCM_I_GSC_ICONVEH_ERROR])
+AC_SUBST([SCM_I_GSC_ICONVEH_QUESTION_MARK])
+AC_SUBST([SCM_I_GSC_ICONVEH_ESCAPE_SEQUENCE])
+
+
#--------------------------------------------------------------------
#
# Which way does the stack grow?
#--------------------------------------------------------------------
PKG_CHECK_MODULES([BDW_GC], [bdw-gc])
-CFLAGS="$BDW_GC_CFLAGS $CFLAGS"
+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_do_blocking ()' is available in GC 7.1 but not declared.
-AC_CHECK_FUNCS([GC_do_blocking])
+# 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>])
+# `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>])
+
+LIBS="$save_LIBS"
+
AC_CHECK_SIZEOF(float)
if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then
AC_MSG_CHECKING(guile for build)
GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
else
- GUILE_FOR_BUILD='$(preinstguile)'
+ GUILE_FOR_BUILD='this-value-will-never-be-used'
fi
## AC_MSG_CHECKING("if we are cross compiling")
AC_MSG_RESULT($GUILE_FOR_BUILD)
fi
AC_ARG_VAR(GUILE_FOR_BUILD,[guile for build system])
-AC_SUBST(GUILE_FOR_BUILD)
+AM_SUBST_NOTMAKE(GUILE_FOR_BUILD)
## If we're using GCC, ask for aggressive warnings.
GCC_CFLAGS=""
## less than exasperating.
## -Wpointer-arith was here too, but something changed in gcc/glibc
## and it became equally exasperating (gcc 2.95 and/or glibc 2.1.2).
+ ## -Wundef was removed because Gnulib prevented it (see
+ ## <http://thread.gmane.org/gmane.lisp.guile.bugs/5329>.)
POTENTIAL_GCC_CFLAGS="-Wall -Wmissing-prototypes \
- -Wdeclaration-after-statement -Wundef \
+ -Wdeclaration-after-statement \
-Wswitch-enum"
# Do this here so we don't screw up any of the tests above that might
# not be "warning free"
#######################################################################
-dnl Tell guile-config what flags guile users should compile and link with.
+dnl Tell guile-config what flags guile users should compile and link
+dnl with, keeping only `-I' flags from $CPPFLAGS.
+GUILE_CFLAGS=""
+next_is_includedir=false
+for flag in $CPPFLAGS
+do
+ if $next_is_includedir; then
+ GUILE_CFLAGS="$GUILE_CFLAGS -I $flag"
+ next_is_includedir=false
+ else
+ case "$flag" in
+ -I) next_is_includedir=true;;
+ -I*) GUILE_CFLAGS="$GUILE_CFLAGS $flag";;
+ *) ;;
+ esac
+ fi
+done
+
+GUILE_CFLAGS="$GUILE_CFLAGS $PTHREAD_CFLAGS"
GUILE_LIBS="$LDFLAGS $LIBS"
-GUILE_CFLAGS="$CPPFLAGS $PTHREAD_CFLAGS"
+
AC_SUBST(GUILE_LIBS)
AC_SUBST(GUILE_CFLAGS)
am/Makefile
lib/Makefile
benchmark-suite/Makefile
+ gc-benchmarks/Makefile
doc/Makefile
doc/r5rs/Makefile
doc/ref/Makefile