This typedef was added to Guile between versions 1.9.15 and 2.0.0.
For backward compatibility with Guile 1.9.15 and earlier, conditionally
define the typedef using a configure check.
/* define if Guile has types scm_t_hash_fold_fn and scm_t_hash_handle_fn */
#define HAVE_GUILE_HASH_FUNC 0
+
+/* define if Guile has type scm_t_subr */
+#define HAVE_GUILE_SUBR_TYPE 0
STEPMAKE_TEXMF_DIRS
STEPMAKE_GUILE_DEVEL(REQUIRED, 1.8.2)
-# check for 2 typedefs added in Guile 1.9
+# check for 3 typedefs added in Guile 1.9
save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$GUILE_CFLAGS $CXXFLAGS"
AC_CHECK_TYPES([scm_t_hash_fold_fn, scm_t_hash_handle_fn],
[AC_DEFINE(HAVE_GUILE_HASH_FUNC)], [],
[#include <libguile.h>])
+AC_CHECK_TYPES([scm_t_subr],
+ [AC_DEFINE(HAVE_GUILE_SUBR_TYPE)], [],
+ [#include <libguile.h>])
CXXFLAGS="$save_CXXFLAGS"
## check rational bugfix.
#ifndef LILY_GUILE_MACROS_HH
#define LILY_GUILE_MACROS_HH
+#include "config.hh"
+
#ifndef SMOB_FREE_RETURN_VAL
#define SMOB_FREE_RETURN_VAL(CL) 0
#endif
#define SCM_UNPACK(x) (x)
#endif
+/* For backward compatability with Guile 1.8 */
+#if !HAVE_GUILE_SUBR_TYPE
+typedef SCM (*scm_t_subr) (GUILE_ELLIPSIS);
+#endif
+
/* Unreliable with gcc-2.x
FIXME: should add check for x86 as well? */
#define CACHE_SYMBOLS
string id = mangle_cxx_identifier (cxx); \
TYPE ::FUNC ## _proc = scm_c_define_gsubr (id.c_str(), \
(ARGCOUNT-OPTIONAL_COUNT), OPTIONAL_COUNT, 0, \
- (Scheme_function_unknown) TYPE::FUNC); \
+ (scm_t_subr) TYPE::FUNC); \
ly_add_function_documentation (TYPE :: FUNC ## _proc, id.c_str(), "", \
DOC); \
scm_c_export (id.c_str (), NULL); \
INITPREFIX ## init () \
{ \
FNAME ## _proc = scm_c_define_gsubr (PRIMNAME, REQ, OPT, VAR, \
- (Scheme_function_unknown) FNAME); \
+ (scm_t_subr) FNAME); \
ly_check_name (#FNAME, PRIMNAME);\
ly_add_function_documentation (FNAME ## _proc, PRIMNAME, #ARGLIST, \
DOCSTRING); \
#ifndef LY_SMOBS_ICC
#define LY_SMOBS_ICC
+#include "lily-guile-macros.hh"
#include "smobs.hh"
#define IMPLEMENT_TYPE_P(CL, FUNCNAME) \
void init_type_ ## CL () \
{ \
SCM subr = scm_c_define_gsubr (FUNCNAME, 1, 0, 0, \
- (Scheme_function_unknown) CL::smob_p); \
+ (scm_t_subr) CL::smob_p); \
CL ## _type_p_proc = subr; \
ly_add_function_documentation (subr, FUNCNAME, "(SCM x)", \
"Is @var{x} a @code{" #CL "} object?"); \