aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Persson <larper@axis.com>2017-05-11 18:26:16 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-05-14 19:01:14 +0300
commita1a4f66e6d915c1f6aae2ead02cf5631b10c76f1 (patch)
tree3e1a278c830ebc70dad74b54b09f2242443051d6
parent18b11489cf43fcc251d1cc04e087d8cea191a258 (diff)
downloadmeson-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.py13
-rw-r--r--mesonbuild/dependencies/dev.py26
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():