From: Patrick McCarty Date: Sun, 13 Feb 2011 23:51:52 +0000 (-0800) Subject: Guile compat: support scm_t_subr, a new typedef in v2.0.0 X-Git-Tag: release/2.13.51-1~12 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=1419c2a9fd0ddf4d031948d58f9c03fbfc8f8435;p=lilypond.git Guile compat: support scm_t_subr, a new typedef in v2.0.0 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. --- diff --git a/config.hh.in b/config.hh.in index 4a063b57f1..3863a88d0d 100644 --- a/config.hh.in +++ b/config.hh.in @@ -91,3 +91,6 @@ /* 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 diff --git a/configure.in b/configure.in index de37814012..7e5172ffe5 100644 --- a/configure.in +++ b/configure.in @@ -112,12 +112,15 @@ STEPMAKE_TEXMF(REQUIRED) 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 ]) +AC_CHECK_TYPES([scm_t_subr], + [AC_DEFINE(HAVE_GUILE_SUBR_TYPE)], [], + [#include ]) CXXFLAGS="$save_CXXFLAGS" ## check rational bugfix. diff --git a/lily/include/lily-guile-macros.hh b/lily/include/lily-guile-macros.hh index eaececebcb..ba2c955248 100644 --- a/lily/include/lily-guile-macros.hh +++ b/lily/include/lily-guile-macros.hh @@ -20,6 +20,8 @@ #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 @@ -32,6 +34,11 @@ #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 @@ -136,7 +143,7 @@ string predicate_to_typename (void *ptr); 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); \ @@ -174,7 +181,7 @@ void ly_check_name (string cxx, string fname); 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); \ diff --git a/lily/include/ly-smobs.icc b/lily/include/ly-smobs.icc index 96e6d9a9d2..1cb9e32590 100644 --- a/lily/include/ly-smobs.icc +++ b/lily/include/ly-smobs.icc @@ -20,6 +20,7 @@ #ifndef LY_SMOBS_ICC #define LY_SMOBS_ICC +#include "lily-guile-macros.hh" #include "smobs.hh" #define IMPLEMENT_TYPE_P(CL, FUNCNAME) \ @@ -27,7 +28,7 @@ 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?"); \