summaryrefslogtreecommitdiff
path: root/m4/guile.m4
diff options
context:
space:
mode:
authorLudovic Courtès2008-11-22 18:57:56 +0100
committerLudovic Courtès2008-11-22 18:57:56 +0100
commitd7af7227eb8772902d014ff817c430400a3005a8 (patch)
tree86f7b06b6a8797feef5bda0c0ac19ff480cae13f /m4/guile.m4
parent357a848ad98426c3795bb505117876fd59151867 (diff)
downloadskribilo-d7af7227eb8772902d014ff817c430400a3005a8.tar.gz
skribilo-d7af7227eb8772902d014ff817c430400a3005a8.tar.lz
skribilo-d7af7227eb8772902d014ff817c430400a3005a8.zip
configure: Make sure the SRFI-35 implementation is not broken.
* configure.ac: Use `SKR_GUILE_SRFI_35_WORKS'.
Diffstat (limited to 'm4/guile.m4')
-rw-r--r--m4/guile.m441
1 files changed, 41 insertions, 0 deletions
diff --git a/m4/guile.m4 b/m4/guile.m4
new file mode 100644
index 0000000..0496986
--- /dev/null
+++ b/m4/guile.m4
@@ -0,0 +1,41 @@
+dnl -* Autoconf -*-
+dnl
+dnl Copyright (C) 2008 Ludovic Courtès <ludo@gnu.org>
+dnl
+dnl This file is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This file is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this file; if not, write to the Free Software
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+dnl Usage: SKR_GUILE_SRFI_35_WORKS
+dnl
+dnl Fails if the implementation of `(srfi srfi-35)' doesn't correctly
+dnl handle condition type inheritance, which is the case with the
+dnl implementation provided by Guile-Lib as of version 0.1.6.
+AC_DEFUN([SKR_GUILE_SRFI_35_WORKS], [
+ AC_MSG_CHECKING([whether `(srfi srfi-35)' correctly handles condition type inheritance])
+ GUILE_CHECK([srfi_35_status],
+ [(use-modules (srfi srfi-35))
+ (define-condition-type &foo &error foo?)
+ (define-condition-type &bar &foo bar?)
+ (let ((c (condition (&bar))))
+ (exit (and (condition? c)
+ (error? c)
+ (foo? c)
+ (bar? c))))])
+ if test "$srfi_35_status" -eq 0; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Your version of `(srfi srfi-35)' (possibly from Guile-Lib) doesn't work correctly, please use the one from Guile 1.8.3+.])
+ fi
+])