define(GUILE_CONFIGURE_COPYRIGHT,[[
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
This file is part of GUILE
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR(GUILE-VERSION)
-AM_INIT_AUTOMAKE([gnu no-define -Wall -Wno-override])
+dnl `AM_SUBST_NOTMAKE' was introduced in Automake 1.11.
+AM_INIT_AUTOMAKE([1.11 gnu no-define -Wall -Wno-override dist-xz])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AC_SUBST([AM_DEFAULT_VERBOSITY],1)])
AC_COPYRIGHT(GUILE_CONFIGURE_COPYRIGHT)
gl_INIT
dnl FIXME: remove me and the acinclude.m4 code when clock-gettime is
dnl fixed for clock_getcpuclockid and can be imported normally from
-dnl gnulib.
+dnl gnulib. See
+dnl <http://lists.gnu.org/archive/html/bug-gnulib/2011-06/msg00227.html>
+dnl for details.
gl_CLOCK_TIME
AC_PROG_CC_C89
if test "$use_modules" != no; then
AC_LIBOBJ([dynl])
+ AC_DEFINE([HAVE_MODULES], 1,
+ [Define this if you want support for dynamically loaded modules in Guile.])
fi
if test "$enable_posix" = yes; then
# machine/fpu.h - on Tru64 5.1b, the declaration of fesetround(3) is in
# 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 \
+AC_CHECK_HEADERS([complex.h fenv.h io.h libc.h limits.h memory.h process.h string.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 poll.h sched.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]])
+direct.h machine/fpu.h poll.h sched.h])
# "complex double" is new in C99, and "complex" is only a keyword if
# <complex.h> is included
# isblank - available as a GNU extension or in C99
# _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
# 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 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])
+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 utimensat sched_getaffinity sched_setaffinity])
# Reasons for testing:
# netdb.h - not in mingw
# sys/param.h - not in mingw
# pthread.h - only available with pthreads. ACX_PTHREAD doesn't
# check this specifically, we need it for the timespec test below.
+# pthread_np.h - available on FreeBSD
# sethostname - the function itself check because it's not in mingw,
# the DECL is checked because Solaris 10 doens't have in any header
# hstrerror - on Tru64 5.1b the symbol is available in libc but the
# 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 sys/mman.h])
+AC_CHECK_HEADERS([crypt.h netdb.h pthread.h pthread_np.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])
fi
if test "$enable_regex" = yes; then
- if test "$ac_cv_header_regex_h" = yes ||
- test "$ac_cv_header_rxposix_h" = yes ||
- test "$ac_cv_header_rx_rxposix_h" = yes; then
- GUILE_NAMED_CHECK_FUNC(regcomp, norx, [AC_LIBOBJ([regex-posix])],
- [AC_CHECK_LIB(rx, main)
- GUILE_NAMED_CHECK_FUNC(regcomp, rx, [AC_LIBOBJ([regex-posix])],
- [AC_CHECK_LIB(regex, main)
- GUILE_NAMED_CHECK_FUNC(regcomp, regex, [AC_LIBOBJ([regex-posix])])])]
- )
- dnl The following should not be necessary, but for some reason
- dnl autoheader misses it if we don't include it!
- if test "$ac_cv_func_regcomp_norx" = yes ||
- test "$ac_cv_func_regcomp_regex" = yes ||
- test "$ac_cv_func_regcomp_rx" = yes; then
- AC_DEFINE([HAVE_REGCOMP], 1,
- [This is included as part of a workaround for a autoheader bug.])
- fi
- fi
+ AC_LIBOBJ([regex-posix])
+ AC_DEFINE([ENABLE_REGEX], 1, [Define when regex support is enabled.])
fi
AC_REPLACE_FUNCS([strerror memmove mkstemp])
# 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])
-
+GUILE_UNISTRING_ICONVEH_VALUES
#--------------------------------------------------------------------
#
# Which way does the stack grow?
#
-# Following code comes from Autoconf 2.61's internal _AC_LIBOBJ_ALLOCA
+# Following code comes from Autoconf 2.69's internal _AC_LIBOBJ_ALLOCA
# macro (/usr/share/autoconf/autoconf/functions.m4). Gnulib has
# very similar code, so in future we could look at using that.
#
AC_RUN_IFELSE([AC_LANG_SOURCE(
[AC_INCLUDES_DEFAULT
int
-find_stack_direction ()
+find_stack_direction (int *addr, int depth)
{
- static char *addr = 0;
- auto char dummy;
- if (addr == 0)
- {
- addr = &dummy;
- return find_stack_direction ();
- }
- else
- return (&dummy > addr) ? 1 : -1;
+ int dir, dummy = 0;
+ if (! addr)
+ addr = &dummy;
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+ return dir + dummy;
}
int
-main ()
+main (int argc, char **argv)
{
- return find_stack_direction () < 0;
+ return find_stack_direction (0, argc + !argv + 20) < 0;
}])],
[SCM_I_GSC_STACK_GROWS_UP=1],
[],
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])
+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])
# 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
# all; not present on MacOS X or Solaris 10
# pthread_get_stackaddr_np - "np" meaning "non portable" says it
# all; specific to MacOS X
+ # pthread_attr_get_np - "np" meaning "non portable" says it
+ # all; specific to FreeBSD
# pthread_sigmask - not available on mingw
#
- AC_CHECK_FUNCS(pthread_attr_getstack pthread_getattr_np pthread_get_stackaddr_np pthread_sigmask)
+ AC_CHECK_FUNCS(pthread_attr_getstack pthread_getattr_np pthread_get_stackaddr_np pthread_attr_get_np pthread_sigmask)
# On past versions of Solaris, believe 8 through 10 at least, you
# had to write "pthread_once_t foo = { PTHREAD_ONCE_INIT };".
HOST_CC="$CC_FOR_BUILD"
AC_SUBST(HOST_CC)
-if test "$cross_compiling" = "yes"; then
- AC_MSG_CHECKING(guile for build)
- GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
-else
- GUILE_FOR_BUILD='this-value-will-never-be-used'
-fi
-
-## AC_MSG_CHECKING("if we are cross compiling")
-## AC_MSG_RESULT($cross_compiling)
-if test "$cross_compiling" = "yes"; then
- AC_MSG_RESULT($GUILE_FOR_BUILD)
-fi
-AC_ARG_VAR(GUILE_FOR_BUILD,[guile for build system])
-AM_SUBST_NOTMAKE(GUILE_FOR_BUILD)
+GUILE_CHECK_GUILE_FOR_BUILD
## If we're using GCC, ask for aggressive warnings.
GCC_CFLAGS=""
## We had -Wstrict-prototypes in here for a bit, but Guile does too
## much stuff with generic function pointers for that to really be
## 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>.)
+
+ ## Build with `-fno-strict-aliasing' to prevent miscompilation on
+ ## some platforms. See
+ ## <http://lists.gnu.org/archive/html/guile-devel/2012-01/msg00487.html>.
+
POTENTIAL_GCC_CFLAGS="-Wall -Wmissing-prototypes \
- -Wdeclaration-after-statement \
- -Wswitch-enum"
+ -Wdeclaration-after-statement -Wpointer-arith \
+ -Wswitch-enum -fno-strict-aliasing"
# Do this here so we don't screw up any of the tests above that might
# not be "warning free"
if test "${GUILE_ERROR_ON_WARNING}" = yes
sitedir="$pkgdatadir/site/$GUILE_EFFECTIVE_VERSION"
AC_SUBST([sitedir])
+dnl Name of the `guile' program.
+guile_program_name="`echo guile | "$SED" "$program_transform_name"`"
+AC_SUBST([guile_program_name])
+
# Additional SCM_I_GSC definitions are above.
AC_SUBST([SCM_I_GSC_GUILE_DEBUG])
AC_SUBST([SCM_I_GSC_ENABLE_DEPRECATED])