diff options
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 4 | ||||
-rwxr-xr-x | run_unittests.py | 13 | ||||
-rw-r--r-- | test cases/unit/50 pkgconfig static link order/meson.build | 11 |
3 files changed, 26 insertions, 2 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index eee3783..47edeee 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -35,13 +35,13 @@ class DependenciesHelper: def add_pub_libs(self, libs): libs, reqs, cflags = self._process_libs(libs, True) - self.pub_libs += libs + self.pub_libs = libs + self.pub_libs # prepend to preserve dependencies self.pub_reqs += reqs self.cflags += cflags def add_priv_libs(self, libs): libs, reqs, _ = self._process_libs(libs, False) - self.priv_libs += libs + self.priv_libs = libs + self.priv_libs self.priv_reqs += reqs def add_pub_reqs(self, reqs): diff --git a/run_unittests.py b/run_unittests.py index f1b2249..a47f74e 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -4274,6 +4274,19 @@ endian = 'little' self.assertEqual("-r/usr/lib/libsomething.dll", str(stdo.decode('ascii')).strip()) + @skipIfNoPkgconfig + def test_pkgconfig_link_order(self): + ''' + Test that libraries are listed before their dependencies. + ''' + testdir = os.path.join(self.unit_test_dir, '50 pkgconfig static link order') + self.init(testdir) + myenv = os.environ.copy() + myenv['PKG_CONFIG_PATH'] = self.privatedir + stdo = subprocess.check_output(['pkg-config', '--libs', 'libsomething'], env=myenv) + deps = stdo.split() + self.assertTrue(deps.index(b'-lsomething') < deps.index(b'-ldependency')) + def test_deterministic_dep_order(self): ''' Test that the dependencies are always listed in a deterministic order. diff --git a/test cases/unit/50 pkgconfig static link order/meson.build b/test cases/unit/50 pkgconfig static link order/meson.build new file mode 100644 index 0000000..b61de9a --- /dev/null +++ b/test cases/unit/50 pkgconfig static link order/meson.build @@ -0,0 +1,11 @@ +project('link order test', 'c') + +dep = library('dependency', []) +lib = static_library('something', [], link_with: dep) + +import('pkgconfig').generate( + name: 'libsomething', + description: 'test library', + libraries: lib, + version: '1' +) |