diff options
author | Lars Persson <larper@axis.com> | 2017-05-11 18:26:16 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-05-14 19:01:14 +0300 |
commit | a1a4f66e6d915c1f6aae2ead02cf5631b10c76f1 (patch) | |
tree | 3e1a278c830ebc70dad74b54b09f2242443051d6 | |
parent | 18b11489cf43fcc251d1cc04e087d8cea191a258 (diff) | |
download | meson-a1a4f66e6d915c1f6aae2ead02cf5631b10c76f1.zip meson-a1a4f66e6d915c1f6aae2ead02cf5631b10c76f1.tar.gz meson-a1a4f66e6d915c1f6aae2ead02cf5631b10c76f1.tar.bz2 |
gtestdependency: find libraries using the compiler
Use the compiler object to find gtest libraries. Fixes following
cases:
- cross compiling looked in host library paths
- static libgtest was not supported
Change-Id: If42cdf873db38676b99adca60752f652aff097a2
-rw-r--r-- | mesonbuild/dependencies/base.py | 13 | ||||
-rw-r--r-- | mesonbuild/dependencies/dev.py | 26 |
2 files changed, 24 insertions, 15 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index b934ddf..f4ecd57 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -639,3 +639,16 @@ def find_external_dependency(name, environment, kwargs): raise pkg_exc mlog.log('Dependency', mlog.bold(name), 'found:', mlog.red('NO')) return pkgdep + +def dependency_get_compiler(language, environment, kwargs): + if 'native' in kwargs and environment.is_cross_build(): + want_cross = not kwargs['native'] + else: + want_cross = environment.is_cross_build() + + if want_cross: + compilers = environment.coredata.cross_compilers + else: + compilers = environment.coredata.compilers + + return compilers.get(language, None) diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py index 569108e..470ad1e 100644 --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -22,38 +22,34 @@ import shutil from .. import mlog from .. import mesonlib from ..mesonlib import version_compare, Popen_safe -from .base import Dependency, DependencyException, PkgConfigDependency - +from .base import Dependency, DependencyException, PkgConfigDependency, dependency_get_compiler class GTestDependency(Dependency): def __init__(self, environment, kwargs): Dependency.__init__(self, 'gtest', kwargs) + self.env = environment self.main = kwargs.get('main', False) self.name = 'gtest' - self.libname = 'libgtest.so' - self.libmain_name = 'libgtest_main.so' self.include_dir = '/usr/include' self.src_dirs = ['/usr/src/gtest/src', '/usr/src/googletest/googletest/src'] + + self.cpp_compiler = dependency_get_compiler('cpp', environment, kwargs) + if self.cpp_compiler is None: + raise DependencyException('Tried to use gtest but a C++ compiler is not defined.') self.detect() def found(self): return self.is_found def detect(self): - trial_dirs = mesonlib.get_library_dirs() - glib_found = False - gmain_found = False - for d in trial_dirs: - if os.path.isfile(os.path.join(d, self.libname)): - glib_found = True - if os.path.isfile(os.path.join(d, self.libmain_name)): - gmain_found = True - if glib_found and gmain_found: + gtest_detect = self.cpp_compiler.find_library("gtest", self.env, []) + gtest_main_detect = self.cpp_compiler.find_library("gtest_main", self.env, []) + if gtest_detect and gtest_main_detect: self.is_found = True self.compile_args = [] - self.link_args = ['-lgtest'] + self.link_args = gtest_detect if self.main: - self.link_args.append('-lgtest_main') + self.link_args += gtest_main_detect self.sources = [] mlog.log('Dependency GTest found:', mlog.green('YES'), '(prebuilt)') elif self.detect_srcdir(): |