diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-02-12 14:59:37 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-02-13 11:45:56 +0200 |
commit | 1f2f01076555f943023d1fb74e4977750db5d8a3 (patch) | |
tree | 54e45dcf0c36ae83e81b8c2fa040603e20b0a2c7 | |
parent | 5973dcc25bae5c0541a778516046de08eb9860dc (diff) | |
download | meson-1f2f01076555f943023d1fb74e4977750db5d8a3.zip meson-1f2f01076555f943023d1fb74e4977750db5d8a3.tar.gz meson-1f2f01076555f943023d1fb74e4977750db5d8a3.tar.bz2 |
Detect Boost libraries primarily with the C++ compiler's find_library.
-rw-r--r-- | mesonbuild/dependencies.py | 20 | ||||
-rw-r--r-- | test cases/linuxlike/5 dependency versions/meson.build | 2 |
2 files changed, 18 insertions, 4 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py index c894b0e..9525ffa 100644 --- a/mesonbuild/dependencies.py +++ b/mesonbuild/dependencies.py @@ -1,4 +1,4 @@ -# Copyright 2013-2015 The Meson development team +# Copyright 2013-2017 The Meson development team # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -589,6 +589,9 @@ class BoostDependency(Dependency): mlog.log('Dependency Boost (%s) found:' % module_str, mlog.green('YES'), info) else: mlog.log("Dependency Boost (%s) found:" % module_str, mlog.red('NO')) + if 'cpp' not in self.environment.coredata.compilers: + raise DependencyException('Tried to use Boost but a C++ compiler is not defined.') + self.cpp_compiler = self.environment.coredata.compilers['cpp'] def detect_win_root(self): globtext = 'c:\\local\\boost_*' @@ -721,8 +724,19 @@ class BoostDependency(Dependency): args.append('-L' + os.path.join(self.boost_root, 'lib')) for module in self.requested_modules: module = BoostDependency.name2lib.get(module, module) - if module in self.lib_modules or module in self.lib_modules_mt: - linkcmd = '-lboost_' + module + libname = 'boost_' + module + # The compiler's library detector is the most reliable so use that first. + default_detect = self.cpp_compiler.find_library(libname, self.environment, []) + if default_detect is not None: + if module == 'unit_testing_framework': + emon_args = self.cpp_compiler.find_library('boost_test_exec_monitor') + else: + emon_args = None + args += default_detect + if emon_args is not None: + args += emon_args + elif module in self.lib_modules or module in self.lib_modules_mt: + linkcmd = '-l' + libname args.append(linkcmd) # FIXME a hack, but Boost's testing framework has a lot of # different options and it's hard to determine what to do diff --git a/test cases/linuxlike/5 dependency versions/meson.build b/test cases/linuxlike/5 dependency versions/meson.build index 20b3df5..1b01cd6 100644 --- a/test cases/linuxlike/5 dependency versions/meson.build +++ b/test cases/linuxlike/5 dependency versions/meson.build @@ -1,4 +1,4 @@ -project('dep versions', 'c') +project('dep versions', 'c', 'cpp') # Find external dependency without version zlib = dependency('zlib') |