aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2020-06-02 23:29:33 +0200
committerXavier Claessens <xclaesse@gmail.com>2020-06-16 13:45:40 -0400
commit20709af4d2a2f7f4ece3ecd3a9c65da3075be891 (patch)
tree6049dc6e0d08d558330885dbb2d773cc7a27fd83 /mesonbuild/interpreter.py
parentf40e1567f5b38000b47bfbdf307f843c07645f19 (diff)
downloadmeson-20709af4d2a2f7f4ece3ecd3a9c65da3075be891.zip
meson-20709af4d2a2f7f4ece3ecd3a9c65da3075be891.tar.gz
meson-20709af4d2a2f7f4ece3ecd3a9c65da3075be891.tar.bz2
interpreter: add support for --force-fallback-for
This new command line option allows specifying dependencies for which to force fallback. See the documentation for more information Fixes: #7218
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 76dbebd..bfbb189 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -3568,7 +3568,8 @@ external dependencies (including libraries) must go to "dependencies".''')
return self.get_subproject_dep(name, display_name, dirname, varname, kwargs)
wrap_mode = self.coredata.get_builtin_option('wrap_mode')
- forcefallback = wrap_mode == WrapMode.forcefallback and has_fallback
+ force_fallback_for = self.coredata.get_builtin_option('force_fallback_for')
+ forcefallback = (wrap_mode == WrapMode.forcefallback or name in force_fallback_for) and has_fallback
if name != '' and not forcefallback:
self._handle_featurenew_dependencies(name)
kwargs['required'] = required and not has_fallback
@@ -3622,7 +3623,13 @@ external dependencies (including libraries) must go to "dependencies".''')
def dependency_fallback(self, name, display_name, kwargs):
required = kwargs.get('required', True)
- if self.coredata.get_builtin_option('wrap_mode') == WrapMode.nofallback:
+
+ # Explicitly listed fallback preferences for specific subprojects
+ # take precedence over wrap-mode
+ if name in self.coredata.get_builtin_option('force_fallback_for'):
+ mlog.log('Looking for a fallback subproject for the dependency',
+ mlog.bold(display_name), 'because:\nUse of fallback was forced for that specific subproject')
+ elif self.coredata.get_builtin_option('wrap_mode') == WrapMode.nofallback:
mlog.log('Not looking for a fallback subproject for the dependency',
mlog.bold(display_name), 'because:\nUse of fallback '
'dependencies is disabled.')