diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2019-07-19 10:34:11 -0400 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2020-02-06 14:11:24 -0500 |
commit | 3ba0073df6014d4b594df052f8e1fa75ce17b20e (patch) | |
tree | aac412650192c2e934c3e58241b00287bb08b6f9 /mesonbuild/mintro.py | |
parent | 0bf3c4ac4d9128154bf27649a39645b7d804582e (diff) | |
download | meson-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.py | 15 |
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] |