diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/coredata.py | 1 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index fdba84e..94f977f 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -1129,6 +1129,7 @@ builtin_options = OrderedDict([ ('warning_level', BuiltinOption(UserComboOption, 'Compiler warning level to use', '1', choices=['0', '1', '2', '3'])), ('werror', BuiltinOption(UserBooleanOption, 'Treat warnings as errors', False, yielding=False)), ('wrap_mode', BuiltinOption(UserComboOption, 'Wrap mode', 'default', choices=['default', 'nofallback', 'nodownload', 'forcefallback'])), + ('force_fallback_for', BuiltinOption(UserArrayOption, 'Force fallback for those subprojects', [])), ]) builtin_options_per_machine = OrderedDict([ 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.') |