aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/dependencies/misc.py39
1 files changed, 22 insertions, 17 deletions
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py
index e2f735f..c72cc83 100644
--- a/mesonbuild/dependencies/misc.py
+++ b/mesonbuild/dependencies/misc.py
@@ -146,19 +146,16 @@ class BoostDependency(ExternalDependency):
mlog.debug('Boost library root dir is', mlog.bold(self.boost_root))
mlog.debug('Boost include directory is', mlog.bold(self.incdir))
- # This checks if we can find BOOST headers.
- self.detect_version()
+ # 1. check if we can find BOOST headers.
+ self.detect_headers_and_version()
- self.lib_modules = {}
+ # 2. check if we can find BOOST libraries.
if self.is_found:
self.detect_lib_modules()
mlog.debug('Boost library directory is', mlog.bold(self.libdir))
- for m in self.requested_modules:
- if 'boost_' + m not in self.lib_modules:
- mlog.debug('Requested Boost library {!r} not found'.format(m))
- self.log_fail()
- self.is_found = False
- return
+
+ # 3. Report success or failure
+ if self.is_found:
self.log_success()
else:
self.log_fail()
@@ -266,7 +263,7 @@ class BoostDependency(ExternalDependency):
raise DependencyException('Boost module argument is not a string.')
return candidates
- def detect_version(self):
+ def detect_headers_and_version(self):
try:
version = self.compiler.get_define('BOOST_LIB_VERSION', '#include <boost/version.hpp>', self.env, self.get_compile_args(), [])
except mesonlib.EnvironmentException:
@@ -280,15 +277,23 @@ class BoostDependency(ExternalDependency):
self.is_found = True
def detect_lib_modules(self):
- # Try to find modules using compiler.find_library( )
- if self.find_libraries_with_abi_tags(self.abi_tags()):
- return
+ self.lib_modules = {}
- # Fall back to the old method
- if mesonlib.for_windows(self.want_cross, self.env):
- return self.detect_lib_modules_win()
+ # 1. Try to find modules using compiler.find_library( )
+ if self.find_libraries_with_abi_tags(self.abi_tags()):
+ pass
+ # 2. Fall back to the old method
else:
- return self.detect_lib_modules_nix()
+ if mesonlib.for_windows(self.want_cross, self.env):
+ self.detect_lib_modules_win()
+ else:
+ self.detect_lib_modules_nix()
+
+ # 3. Check if we can find the modules
+ for m in self.requested_modules:
+ if 'boost_' + m not in self.lib_modules:
+ mlog.debug('Requested Boost library {!r} not found'.format(m))
+ self.is_found = False
def modname_from_filename(self, filename):
modname = os.path.basename(filename)