From 8b5286e133e6d359b07636b10383803d55171536 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Wed, 21 Feb 2018 00:23:34 +0530 Subject: [PATCH] pkgconfig deps: Add all -L args when using -l args Also don't resolve -lfoo args only when libpaths are defined. cc.find_library() also searches in the toolchain directories, and the static library might be there. --- mesonbuild/dependencies/base.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 2fbcb2ba8..bf79bc507 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -490,10 +490,9 @@ class PkgConfigDependency(ExternalDependency): if self.static: if lib.startswith('-L'): libpaths.append(lib[2:]) - print(lib) continue # FIXME: try to handle .la files in static mode too? - elif lib.startswith('-l') and libpaths: + elif lib.startswith('-l'): args = self.compiler.find_library(lib[2:], self.env, libpaths, libtype='static') if not args or len(args) < 1: if lib in static_libs_notfound: @@ -501,12 +500,6 @@ class PkgConfigDependency(ExternalDependency): mlog.warning('Static library {!r} not found for dependency {!r}, may ' 'not be statically linked'.format(lib[2:], self.name)) static_libs_notfound.append(lib) - # Preserve the -l arg since we couldn't resolve it to - # a static library. Also need all previous -L args now. - for p in libpaths: - lp = '-L' + p - if lp not in self.link_args: - self.link_args.append(lp) else: # Replace -l arg with full path to static library lib = args[0] @@ -523,6 +516,11 @@ class PkgConfigDependency(ExternalDependency): lib = shared_lib self.is_libtool = True self.link_args.append(lib) + # Add all -Lbar args if we have -lfoo args in link_args + if static_libs_notfound: + # Order of -L flags doesn't matter with ld, but it might with other + # linkers such as MSVC, so prepend them. + self.link_args = ['-L' + lp for lp in libpaths] + self.link_args def get_pkgconfig_variable(self, variable_name, kwargs): options = ['--variable=' + variable_name, self.name]