diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 6986a6c57..7cc2dc092 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -2451,9 +2451,6 @@ class StaticLibrary(BuildTarget): suffix = 'ma' return (prefix, suffix) - def get_link_deps_mapping(self, prefix: str) -> T.Mapping[str, str]: - return {} - def get_default_install_dir(self) -> T.Tuple[str, str]: return self.environment.get_static_lib_dir(), '{libdir_static}' diff --git a/test cases/darwin/1 rpath removal on install/main.c b/test cases/darwin/1 rpath removal on install/main.c new file mode 100644 index 000000000..735a406ce --- /dev/null +++ b/test cases/darwin/1 rpath removal on install/main.c @@ -0,0 +1,5 @@ +#include "foo/foo.h" + +int main() { + foo(); +} diff --git a/test cases/darwin/1 rpath removal on install/meson.build b/test cases/darwin/1 rpath removal on install/meson.build index 093d7deba..5ce4c722a 100644 --- a/test cases/darwin/1 rpath removal on install/meson.build +++ b/test cases/darwin/1 rpath removal on install/meson.build @@ -5,4 +5,13 @@ subdir('foo') bar = library('bar', 'bar.c', link_with: foo, install: true, -) \ No newline at end of file +) + +bar_internal = static_library('bar-internal', 'bar.c', + link_with: foo, +) + +main = executable('main', 'main.c', + link_with: bar_internal, + install: true, +) diff --git a/unittests/darwintests.py b/unittests/darwintests.py index a7345b3c3..fe292dd5c 100644 --- a/unittests/darwintests.py +++ b/unittests/darwintests.py @@ -108,6 +108,12 @@ class DarwinTests(BasePlatformTests): rpaths = pattern.findall(out) return rpaths + def _get_darwin_rpath_libraries(self, fname: str) -> T.List[str]: + out = subprocess.check_output(['otool', '-L', fname], universal_newlines=True) + pattern = re.compile(r'@rpath/\S+') + libs = pattern.findall(out) + return libs + @skipIfNoPkgconfig def test_library_versioning(self): ''' @@ -174,6 +180,8 @@ class DarwinTests(BasePlatformTests): # Those RPATHs are no longer valid and should not be present after installation rpaths = self._get_darwin_rpaths(os.path.join(self.installdir, 'usr/lib/libbar.dylib')) self.assertListEqual(rpaths, []) + libs = self._get_darwin_rpath_libraries(os.path.join(self.installdir, 'usr/bin/main')) + self.assertListEqual(libs, []) @skip_if_not_language('rust') def test_rust_apple_framework_rlib(self):