diff options
-rw-r--r-- | libguile/Makefile.am | 7 | ||||
-rw-r--r-- | libguile/dynl.c | 15 | ||||
-rw-r--r-- | meta/uninstalled-env.in | 4 |
3 files changed, 23 insertions, 3 deletions
diff --git a/libguile/Makefile.am b/libguile/Makefile.am index f4f12825d..8f4b976ff 100644 --- a/libguile/Makefile.am +++ b/libguile/Makefile.am @@ -597,6 +597,7 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status @echo '#define SCM_PKGDATA_DIR "$(pkgdatadir)"' >> libpath.tmp @echo '#define SCM_LIBRARY_DIR "$(pkgdatadir)/$(GUILE_EFFECTIVE_VERSION)"'>>libpath.tmp @echo '#define SCM_SITE_DIR "$(pkgdatadir)/site"' >> libpath.tmp + @echo '#define SCM_LIB_DIR "$(pkglibdir)"' >> libpath.tmp @echo '#define SCM_CCACHE_DIR "$(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/ccache"' >> libpath.tmp @echo '#define SCM_EFFECTIVE_VERSION "$(GUILE_EFFECTIVE_VERSION)"' >> libpath.tmp @echo '#define SCM_BUILD_INFO { \' >> libpath.tmp @@ -616,9 +617,9 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status @echo ' { "infodir", "@infodir@" }, \' >> libpath.tmp @echo ' { "mandir", "@mandir@" }, \' >> libpath.tmp @echo ' { "includedir", "@includedir@" }, \' >> libpath.tmp - @echo ' { "pkgdatadir", "@pkgdatadir@" }, \' >> libpath.tmp - @echo ' { "pkglibdir", "@pkglibdir@" }, \' >> libpath.tmp - @echo ' { "pkgincludedir", "@pkgincludedir@" }, \' \ + @echo ' { "pkgdatadir", "$(pkgdatadir)" }, \' >> libpath.tmp + @echo ' { "pkglibdir", "$(pkglibdir)" }, \' >> libpath.tmp + @echo ' { "pkgincludedir", "$(pkgincludedir)" }, \' \ >> libpath.tmp @echo ' { "guileversion", "@GUILE_VERSION@" }, \' >> libpath.tmp @echo ' { "libguileinterface", "@LIBGUILE_INTERFACE@" }, \' \ diff --git a/libguile/dynl.c b/libguile/dynl.c index dc98e7d17..6b13e65a9 100644 --- a/libguile/dynl.c +++ b/libguile/dynl.c @@ -48,6 +48,7 @@ maybe_drag_in_eprintf () #include <string.h> #include "libguile/_scm.h" +#include "libguile/libpath.h" #include "libguile/dynl.h" #include "libguile/smob.h" #include "libguile/keywords.h" @@ -113,7 +114,21 @@ sysdep_dynl_func (const char *symb, void *handle, const char *subr) static void sysdep_dynl_init () { + char *env; + lt_dlinit (); + + env = getenv ("GUILE_SYSTEM_LTDL_PATH"); + if (env && strcmp (env, "") == 0) + /* special-case interpret system-ltdl-path=="" as meaning no system path, + which is the case during the build */ + ; + else if (env) + lt_dladdsearchdir (env); +#ifdef SCM_LIB_DIR + else + lt_dladdsearchdir (SCM_LIB_DIR); +#endif } scm_t_bits scm_tc16_dynamic_obj; diff --git a/meta/uninstalled-env.in b/meta/uninstalled-env.in index 9a6227230..649d1fc47 100644 --- a/meta/uninstalled-env.in +++ b/meta/uninstalled-env.in @@ -88,6 +88,10 @@ export GUILE_LOAD_COMPILED_PATH if ( env | grep -v -q -E '^GUILE_SYSTEM_COMPILED_PATH=' ); then export GUILE_SYSTEM_COMPILED_PATH= fi +# Don't look in installed dirs for dlopen-able modules +if ( env | grep -v -q -E '^GUILE_SYSTEM_LTDL_PATH=' ); then + export GUILE_SYSTEM_LTDL_PATH= +fi # handle LTDL_LIBRARY_PATH (no clobber) ltdl_prefix="" |