It appears that, libltdl will find the .la file in the builddir and figure out where the real .so is. This also requires .ifexists to be fixed up to correspondingly search in <dlsearchpath>/.libs. --- src/daemon/daemon-conf.c | 2 +- src/pulsecore/cli-command.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c index 2c43cf9..f1e5476 100644 --- a/src/daemon/daemon-conf.c +++ b/src/daemon/daemon-conf.c @@ -156,7 +156,7 @@ pa_daemon_conf *pa_daemon_conf_new(void) { #else if (pa_run_from_build_tree()) { pa_log_notice("Detected that we are run from the build tree, fixing search path."); - c->dl_search_path = pa_xstrdup(PA_BUILDDIR "/.libs/"); + c->dl_search_path = pa_xstrdup(PA_BUILDDIR); } else c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH); #endif diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c index 1ec8054..f5489d6 100644 --- a/src/pulsecore/cli-command.c +++ b/src/pulsecore/cli-command.c @@ -2062,11 +2062,21 @@ int pa_cli_command_execute_line_stateful(pa_core *c, const char *s, pa_strbuf *b char *pathname; pathname = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", p, filename); - pa_xfree(p); *ifstate = access(pathname, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE; pa_log_debug("Checking for existence of '%s': %s", pathname, *ifstate == IFSTATE_TRUE ? "success" : "failure"); + if (PA_UNLIKELY(pa_run_from_build_tree())) { + /* If run from the build tree, search in <path>/.libs as well */ + char *ltpathname = pa_sprintf_malloc("%s" PA_PATH_SEP ".libs" PA_PATH_SEP "%s", p, filename); + + *ifstate = access(ltpathname, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE; + pa_log_debug("Checking for existence of '%s': %s", ltpathname, *ifstate == IFSTATE_TRUE ? "success" : "failure"); + + pa_xfree(ltpathname); + } + + pa_xfree(p); pa_xfree(pathname); if (*ifstate == IFSTATE_TRUE) -- 1.8.1.2