summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-11-23 22:05:53 +0100
committerLudovic Courtès <ludo@gnu.org>2011-11-23 22:05:53 +0100
commit1c1f7a3223bbeb3d593bfb3e93777e47faf09012 (patch)
treed069643b0050ea25ff064c1862ffab646eec3103
parentf701287497d545061009ad572c69f86bb10d7a6a (diff)
configure: Make sure $GUILE_FOR_BUILD is suitable.
* acinclude.m4 (GUILE_CHECK_VERSION, GUILE_CHECK_GUILE_FOR_BUILD): New macros. * configure.ac: Remove $GUILE_FOR_BUILD tests. Use `GUILE_CHECK_GUILE_FOR_BUILD'.
-rw-r--r--acinclude.m450
-rw-r--r--configure.ac15
2 files changed, 51 insertions, 14 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index ba17e939a..f9603d97d 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -530,6 +530,56 @@ AC_DEFUN([GUILE_UNISTRING_ICONVEH_VALUES], [
GUILE_UNISTRING_CONSTANT([iconveh_escape_sequence])
])
+dnl GUILE_CHECK_VERSION
+dnl
+dnl Ensure that $GUILE_FOR_BUILD has the same version as ourselves.
+AC_DEFUN([GUILE_CHECK_VERSION], [
+ if ! "$GUILE_FOR_BUILD" --version > /dev/null 2>&1; then
+ AC_MSG_ERROR([failed to run `$GUILE_FOR_BUILD'])
+ fi
+
+ dnl Use MAJOR.MINOR.MICRO instead of (version) so that developers can
+ dnl freely shoot themselves in the foot by using, say, 2.0.3.80 and
+ dnl 2.0.3.42.
+ AC_CACHE_CHECK([the version of $GUILE_FOR_BUILD],
+ [ac_cv_guile_for_build_version],
+ [ac_cv_guile_for_build_version="`"$GUILE_FOR_BUILD" \
+ -c '(format #t "~a.~a.~a" (major-version) (minor-version) (micro-version))'`"
+ ])
+
+ if test "$ac_cv_guile_for_build_version" != \
+ "$GUILE_MAJOR_VERSION.$GUILE_MINOR_VERSION.$GUILE_MICRO_VERSION"
+ then
+ AC_MSG_ERROR([building Guile $PACKAGE_VERSION but `$GUILE_FOR_BUILD' has version $ac_cv_guile_for_build_version"])
+ fi
+])
+
+dnl GUILE_CHECK_GUILE_FOR_BUILD
+dnl
+dnl When cross-compiling, ensure that $GUILE_FOR_BUILD is suitable.
+AC_DEFUN([GUILE_CHECK_GUILE_FOR_BUILD], [
+ if test "$cross_compiling" = "yes"; then
+ if test "x$GUILE_FOR_BUILD" = "x"; then
+ AC_PATH_PROG([GUILE_FOR_BUILD], [guile], [not-found])
+ if test "$GUILE_FOR_BUILD" = "not-found"; then
+ AC_MSG_ERROR([a native Guile $PACKAGE_VERSION is required to cross-build Guile])
+ fi
+ fi
+ AC_MSG_CHECKING([guile for build])
+ AC_MSG_RESULT([$GUILE_FOR_BUILD])
+
+ dnl Since there is currently no distinction between the run-time
+ dnl search path, %load-path, and the compiler's search path,
+ dnl $GUILE_FOR_BUILD must be a native build of the very same version.
+ GUILE_CHECK_VERSION
+ else
+ GUILE_FOR_BUILD='this-value-will-never-be-used'
+ fi
+
+ AC_ARG_VAR([GUILE_FOR_BUILD], [guile for the build system])
+ AM_SUBST_NOTMAKE([GUILE_FOR_BUILD])
+])
+
dnl Declare file $1 to be a script that needs configuring,
dnl and arrange to make it executable in the process.
AC_DEFUN([GUILE_CONFIG_SCRIPT],[AC_CONFIG_FILES([$1],[chmod +x $1])])
diff --git a/configure.ac b/configure.ac
index dc4ef5681..710cc2f3f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1511,20 +1511,7 @@ AC_SUBST(CCLD_FOR_BUILD)
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=""