aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mintro.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2019-07-19 10:34:11 -0400
committerXavier Claessens <xclaesse@gmail.com>2020-02-06 14:11:24 -0500
commit3ba0073df6014d4b594df052f8e1fa75ce17b20e (patch)
treeaac412650192c2e934c3e58241b00287bb08b6f9 /mesonbuild/mintro.py
parent0bf3c4ac4d9128154bf27649a39645b7d804582e (diff)
downloadmeson-3ba0073df6014d4b594df052f8e1fa75ce17b20e.zip
meson-3ba0073df6014d4b594df052f8e1fa75ce17b20e.tar.gz
meson-3ba0073df6014d4b594df052f8e1fa75ce17b20e.tar.bz2
Make 'default_library' per-subproject builtin option
Currently it's just like if all builtin/base/compiler options are yielding. This patch makes possible to have non-yielding builtin options. The value in is overriden in this order: - Value from parent project - Value from subproject's default_options if set - Value from subproject() default_options if set - Value from command line if set
Diffstat (limited to 'mesonbuild/mintro.py')
-rw-r--r--mesonbuild/mintro.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py
index dff5ecc..cfa4574 100644
--- a/mesonbuild/mintro.py
+++ b/mesonbuild/mintro.py
@@ -180,9 +180,10 @@ def list_targets(builddata: build.Build, installdata, backend: backends.Backend)
return tlist
def list_buildoptions_from_source(intr: IntrospectionInterpreter) -> T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]:
- return list_buildoptions(intr.coredata)
+ subprojects = [i['name'] for i in intr.project_data['subprojects']]
+ return list_buildoptions(intr.coredata, subprojects)
-def list_buildoptions(coredata: cdata.CoreData) -> T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]:
+def list_buildoptions(coredata: cdata.CoreData, subprojects: T.Optional[T.List[str]] = None) -> T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]:
optlist = [] # type: T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]
dir_option_names = ['bindir',
@@ -206,6 +207,16 @@ def list_buildoptions(coredata: cdata.CoreData) -> T.List[T.Dict[str, T.Union[st
test_options = {k: o for k, o in coredata.builtins.items() if k in test_option_names}
core_options = {k: o for k, o in coredata.builtins.items() if k in core_option_names}
+ if subprojects:
+ # Add per subproject built-in options
+ sub_core_options = {}
+ for sub in subprojects:
+ for k, o in core_options.items():
+ if o.yielding:
+ continue
+ sub_core_options[sub + ':' + k] = o
+ core_options.update(sub_core_options)
+
def add_keys(options: T.Dict[str, cdata.UserOption], section: str, machine: str = 'any') -> None:
for key in sorted(options.keys()):
opt = options[key]