aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-04-29 19:26:54 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2025-05-01 22:24:00 +0300
commit6d134ef999683ce49b933b6c927c837a585855b1 (patch)
tree24666afcbe78bd0ed1f3f4157433acbd98fce33a /mesonbuild
parente22fba20dbd9010333b150be2564e70866aa3676 (diff)
downloadmeson-6d134ef999683ce49b933b6c927c837a585855b1.zip
meson-6d134ef999683ce49b933b6c927c837a585855b1.tar.gz
meson-6d134ef999683ce49b933b6c927c837a585855b1.tar.bz2
interpreter: add backend options before validating the command line options
Allow specifying e.g. -Dbackend_max_links on the command line. Fixes: #14524 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/interpreter/interpreter.py26
1 files changed, 13 insertions, 13 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index b32b8c6..abdc889 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -1201,6 +1201,19 @@ class Interpreter(InterpreterBase, HoldableObject):
self.coredata.initialized_subprojects.add(self.subproject)
if not self.is_subproject():
+ # We have to activate VS before adding languages and before calling
+ # self.set_backend() otherwise it wouldn't be able to detect which
+ # vs backend version we need. But after setting default_options in case
+ # the project sets vs backend by default.
+ backend = self.coredata.optstore.get_value_for(OptionKey('backend'))
+ assert backend is None or isinstance(backend, str), 'for mypy'
+ vsenv = self.coredata.optstore.get_value_for(OptionKey('vsenv'))
+ assert isinstance(vsenv, bool), 'for mypy'
+ force_vsenv = vsenv or backend.startswith('vs')
+ mesonlib.setup_vsenv(force_vsenv)
+ self.set_backend()
+
+ if not self.is_subproject():
self.coredata.optstore.validate_cmd_line_options(self.user_defined_options.cmd_line_options)
self.build.project_name = proj_name
self.active_projectname = proj_name
@@ -1271,22 +1284,9 @@ class Interpreter(InterpreterBase, HoldableObject):
mlog.log('Project name:', mlog.bold(proj_name))
mlog.log('Project version:', mlog.bold(self.project_version))
- if not self.is_subproject():
- # We have to activate VS before adding languages and before calling
- # self.set_backend() otherwise it wouldn't be able to detect which
- # vs backend version we need. But after setting default_options in case
- # the project sets vs backend by default.
- backend = self.coredata.optstore.get_value_for(OptionKey('backend'))
- assert backend is None or isinstance(backend, str), 'for mypy'
- vsenv = self.coredata.optstore.get_value_for(OptionKey('vsenv'))
- assert isinstance(vsenv, bool), 'for mypy'
- force_vsenv = vsenv or backend.startswith('vs')
- mesonlib.setup_vsenv(force_vsenv)
-
self.add_languages(proj_langs, True, MachineChoice.HOST)
self.add_languages(proj_langs, False, MachineChoice.BUILD)
- self.set_backend()
if not self.is_subproject():
self.check_stdlibs()