aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py11
-rw-r--r--mesonbuild/build.py10
2 files changed, 14 insertions, 7 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index a6bec06..8153ff7 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -394,12 +394,11 @@ class Backend:
return paths
def determine_rpath_dirs(self, target):
- link_deps = target.get_all_link_deps()
- result = OrderedSet()
- for ld in link_deps:
- if ld is target:
- continue
- result.add(self.get_target_dir(ld))
+ if self.environment.coredata.get_builtin_option('layout') == 'mirror':
+ result = target.get_link_dep_subdirs()
+ else:
+ result = OrderedSet()
+ result.add('meson-out')
result.update(self.rpaths_for_bundled_shared_libraries(target))
return list(result)
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index e8af2b6..b86c84d 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -21,7 +21,7 @@ from functools import lru_cache
from . import environment
from . import dependencies
from . import mlog
-from .mesonlib import File, MesonException, listify, extract_as_list
+from .mesonlib import File, MesonException, listify, extract_as_list, OrderedSet
from .mesonlib import typeslistify, stringlistify, classify_unity_sources
from .mesonlib import get_filenames_templates_dict, substitute_values
from .mesonlib import for_windows, for_darwin, for_cygwin, for_android, has_path_sep
@@ -676,6 +676,14 @@ class BuildTarget(Target):
result += i.get_all_link_deps()
return result
+ @lru_cache(maxsize=None)
+ def get_link_dep_subdirs(self):
+ result = OrderedSet()
+ for i in self.link_targets:
+ result.add(i.get_subdir())
+ result.update(i.get_link_dep_subdirs())
+ return result
+
def get_custom_install_dir(self):
return self.install_dir