diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/ast/introspection.py | 11 | ||||
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 10 |
2 files changed, 20 insertions, 1 deletions
diff --git a/mesonbuild/ast/introspection.py b/mesonbuild/ast/introspection.py index af29542..55c3bcc 100644 --- a/mesonbuild/ast/introspection.py +++ b/mesonbuild/ast/introspection.py @@ -27,6 +27,7 @@ from ..compilers import detect_compiler_for import typing as T import os import argparse +import copy build_target_functions = ['executable', 'jar', 'library', 'shared_library', 'shared_module', 'static_library', 'both_libraries'] @@ -163,7 +164,15 @@ class IntrospectionInterpreter(AstInterpreter): for lang in sorted(langs, key=compilers.sort_clink): lang = lang.lower() if lang not in self.coredata.compilers[for_machine]: - detect_compiler_for(self.environment, lang, for_machine) + comp = detect_compiler_for(self.environment, lang, for_machine) + if self.subproject: + options = {} + for k in comp.get_options(): + v = copy.copy(self.coredata.options[k]) + k = k.evolve(subproject=self.subproject) + options[k] = v + self.coredata.add_compiler_options(options, lang, for_machine, self.environment) + def func_dependency(self, node: BaseNode, args: T.List[TYPE_nvar], kwargs: T.Dict[str, TYPE_nvar]) -> None: args = self.flatten_args(args) diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index ecbfd7a..15d7d32 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -88,6 +88,7 @@ import collections import typing as T import textwrap import importlib +import copy if T.TYPE_CHECKING: import argparse @@ -1382,6 +1383,15 @@ external dependencies (including libraries) must go to "dependencies".''') else: raise + # Add per-subproject compiler options. They inherit value from main project. + if self.subproject: + options = {} + for k in comp.get_options(): + v = copy.copy(self.coredata.options[k]) + k = k.evolve(subproject=self.subproject) + options[k] = v + self.coredata.add_compiler_options(options, lang, for_machine, self.environment) + if for_machine == MachineChoice.HOST or self.environment.is_cross_build(): logger_fun = mlog.log else: |