diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | libguile/deprecated.c | 10 | ||||
-rw-r--r-- | libguile/extensions.c | 8 | ||||
-rw-r--r-- | libguile/init.c | 2 |
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 (); |