From: ludo@gnu.org (Ludovic Courtès)
To: gdb-patches@sourceware.org, Doug Evans <xdje42@gmail.com>
Subject: [PATCH] guile: Allow compilation with Guile <= 2.0.5
Date: Tue, 27 May 2014 12:10:00 -0000 [thread overview]
Message-ID: <87bnujcth2.fsf@gnu.org> (raw)
The attached patch allows compilation with Guile <= 2.0.5. Guile 2.0.5
is 2.5 years old but is still commonly found in some distros such as the
current Debian stable.
Tested with Guile 2.1 (current master) and 2.0.5 on x86_64-linux-gnu.
OK to push?
Thanks,
Ludo’.
2014-05-27 Ludovic Courtès <ludo@gnu.org>
* configure.ac: When Guile is available, check for the
availability of 'scm_new_smob'.
* configure, config.h.in: Regenerate.
* guile/guile-internal.h (scm_new_smob) [!HAVE_SCM_NEW_SMOB]: New
function.
---
gdb/config.in | 3 +++
gdb/configure | 18 ++++++++++++++++++
gdb/configure.ac | 9 +++++++++
gdb/guile/guile-internal.h | 12 ++++++++++++
4 files changed, 42 insertions(+)
diff --git a/gdb/config.in b/gdb/config.in
index 5c46567..cd4ce92 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -342,6 +342,9 @@
/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK
+/* Define to 1 if you have the `scm_new_smob' function. */
+#undef HAVE_SCM_NEW_SMOB
+
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
diff --git a/gdb/configure b/gdb/configure
index d7e5cef..56c92d3 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -9076,6 +9076,24 @@ $as_echo "#define HAVE_GUILE 1" >>confdefs.h
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_GUILE_SRCS)"
CONFIG_INSTALL="$CONFIG_INSTALL install-guile"
ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_GUILE_CFLAGS)"
+
+ save_LIBS="$LIBS"
+ save_CPPFLAGS="$CPPFLAGS"
+ LIBS="$GUILE_LIBS"
+ CPPFLAGS="$GUILE_CPPFLAGS"
+ for ac_func in scm_new_smob
+do :
+ ac_fn_c_check_func "$LINENO" "scm_new_smob" "ac_cv_func_scm_new_smob"
+if test "x$ac_cv_func_scm_new_smob" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SCM_NEW_SMOB 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$save_LIBS"
+ CPPFLAGS="$save_CPPFLAGS"
else
# Even if Guile support is not compiled in, we need to have these files
# included.
diff --git a/gdb/configure.ac b/gdb/configure.ac
index ff84a2e..903f378 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1200,6 +1200,15 @@ if test "${have_libguile}" != no; then
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_GUILE_SRCS)"
CONFIG_INSTALL="$CONFIG_INSTALL install-guile"
ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_GUILE_CFLAGS)"
+
+ dnl The 'scm_new_smob' function appeared in Guile 2.0.6.
+ save_LIBS="$LIBS"
+ save_CPPFLAGS="$CPPFLAGS"
+ LIBS="$GUILE_LIBS"
+ CPPFLAGS="$GUILE_CPPFLAGS"
+ AC_CHECK_FUNCS([scm_new_smob])
+ LIBS="$save_LIBS"
+ CPPFLAGS="$save_CPPFLAGS"
else
# Even if Guile support is not compiled in, we need to have these files
# included.
diff --git a/gdb/guile/guile-internal.h b/gdb/guile/guile-internal.h
index e2e1c01..ff891b5 100644
--- a/gdb/guile/guile-internal.h
+++ b/gdb/guile/guile-internal.h
@@ -97,6 +97,18 @@ typedef struct
#define gdbscm_is_false(scm) scm_is_eq ((scm), SCM_BOOL_F)
#define gdbscm_is_true(scm) (!gdbscm_is_false (scm))
+#ifndef HAVE_SCM_NEW_SMOB
+
+/* Guile <= 2.0.5 did not provide this function, so provide it here. */
+
+static inline SCM
+scm_new_smob (scm_t_bits tc, scm_t_bits data)
+{
+ SCM_RETURN_NEWSMOB (tc, data);
+}
+
+#endif
+
/* Function name that is passed around in case an error needs to be reported.
__func is in C99, but we provide a wrapper "just in case",
and because FUNC_NAME is the canonical value used in guile sources.
next reply other threads:[~2014-05-27 12:10 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-27 12:10 Ludovic Courtès [this message]
2014-06-01 20:12 ` Doug Evans
2014-06-01 20:28 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bnujcth2.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=xdje42@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox