Here is a slightly improved version of my guile.m4 patch. It has some more explicit comments and uses the guile executable set by GUILE_PROGS
Index: guile.m4 =================================================================== RCS file: /sources/guile/guile/guile-core/guile-config/guile.m4,v retrieving revision 1.8 diff -u -r1.8 guile.m4 --- guile.m4 16 Apr 2006 23:36:35 -0000 1.8 +++ guile.m4 13 Jun 2006 14:35:50 -0000 @@ -23,6 +23,7 @@ ## GUILE_FLAGS -- set flags for compiling and linking with Guile ## GUILE_SITE_DIR -- find path to Guile "site" directory ## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value +## GUILE_CHECK_VERSION -- checks for a version of the guile interpreter ## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module ## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module ## GUILE_MODULE_REQUIRED -- fail if a Guile Scheme module is unavailable @@ -112,7 +113,7 @@ # GUILE_CHECK -- evaluate Guile Scheme code and capture the return value # -# Usage: GUILE_CHECK_RETVAL(var,check) +# Usage: GUILE_CHECK(var,check) # # @var{var} is a shell variable name to be set to the return value. # @var{check} is a Guile Scheme expression, evaluated with "$GUILE -c", and @@ -126,6 +127,36 @@ $1=$? ]) +# GUILE_CHECK_VERSION -- check for a particular Guile version +# +# Usage: GUILE_CHECK_VERSION(MIN-VERSION, [ACTION-IF-FOUND], [ACTION-IF-NOTFOUND]) +# +# @var{MIN-VERSION} is the minimum guile version to check for. +# @var{ACTION-IF-FOUND} is an action to perform if guile version MIN-VERSION or +# or greater is found. Defaults to do nothing. +# @var{ACTION-IF-NOT-FOUND} is an action to perform if no guile version MIN-VERSION +# or greater is found. Defaults to throwing a configure error. +AC_DEFUN([GUILE_CHECK_VERSION], +[AC_REQUIRE([GUILE_PROGS])dnl +AC_MSG_CHECKING([for guile version >= $1]) +GUILE_CHECK([GUILE_CORRECT_VERSION_P], + [(exit (let loop ((v1 (map string->number (string-split (version) (string-ref \".\" 0)))) + (v2 (map string->number (string-split \"$1\" (string-ref \".\" 0))))) + (cond ((and (null? v1) (null? v2)) 0) + ((null? v1) 0) + ((null? v2) 1) + ((> (car v1) (car v2)) 0) + ((< (car v1) (car v2)) 1) + (else (loop (cdr v1) (cdr v2))))))]) +AC_SUBST(GUILE_VERSION,[`$GUILE -c "(display (version))"`]) +if test 0 -eq "$GUILE_CORRECT_VERSION_P" ; then + AC_MSG_RESULT([yes ($GUILE_VERSION)]) +m4_ifval([$2], [ $2])dnl + else + AC_MSG_RESULT([no ($GUILE_VERSION)]) +m4_ifvaln([$3], [ $3], [ AC_MSG_ERROR([requires guile >= $1])])dnl +fi]) + # GUILE_MODULE_CHECK -- check feature of a Guile Scheme module # # Usage: GUILE_MODULE_CHECK(var,module,featuretest,description) _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user