summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--libguile/deprecated.c10
-rw-r--r--libguile/extensions.c8
-rw-r--r--libguile/init.c2
4 files changed, 20 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 890557bb5..cf31cfebc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -234,6 +234,8 @@ dnl files which are destined for separate modules.
if test "$use_modules" != no; then
AC_LIBOBJ([dynl])
+ AC_DEFINE([HAVE_MODULES], 1,
+ [Define this if you want support for dynamically loaded modules in Guile.])
fi
if test "$enable_posix" = yes; then
diff --git a/libguile/deprecated.c b/libguile/deprecated.c
index 2026788c6..fb93cbd84 100644
--- a/libguile/deprecated.c
+++ b/libguile/deprecated.c
@@ -1898,7 +1898,15 @@ SCM_DEFINE (scm_dynamic_args_call, "dynamic-args-call", 3, 0, 0,
char **argv;
if (scm_is_string (func))
- func = scm_dynamic_func (func, dobj);
+ {
+#if HAVE_MODULES
+ func = scm_dynamic_func (func, dobj);
+#else
+ scm_misc_error ("dynamic-args-call",
+ "dynamic-func not available to resolve ~S",
+ scm_list_1 (func));
+#endif
+ }
SCM_VALIDATE_POINTER (SCM_ARG1, func);
fptr = SCM_POINTER_VALUE (func);
diff --git a/libguile/extensions.c b/libguile/extensions.c
index d830acb59..1c3d28f4a 100644
--- a/libguile/extensions.c
+++ b/libguile/extensions.c
@@ -1,6 +1,6 @@
/* extensions.c - registering and loading extensions.
*
- * Copyright (C) 2001, 2006, 2009, 2010 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -111,7 +111,13 @@ load_extension (SCM lib, SCM init)
}
/* Dynamically link the library. */
+#if HAVE_MODULES
scm_dynamic_call (init, scm_dynamic_link (lib));
+#else
+ scm_misc_error ("load-extension",
+ "extension ~S:~S not registered and dynamic-link disabled",
+ scm_list_2 (init, lib));
+#endif
}
void
diff --git a/libguile/init.c b/libguile/init.c
index 94de5c90a..3dd966f0e 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -501,7 +501,9 @@ scm_i_init_guile (void *base)
scm_init_debug (); /* Requires macro smobs */
scm_init_random (); /* Requires smob_prehistory */
scm_init_simpos ();
+#if HAVE_MODULES
scm_init_dynamic_linking (); /* Requires smob_prehistory */
+#endif
scm_bootstrap_i18n ();
scm_init_script ();