summaryrefslogtreecommitdiff
path: root/mesonbuild/mconf.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-11-30 16:49:18 -0800
committerDylan Baker <dylan@pnwbakers.com>2021-01-04 12:15:41 -0800
commite2ef6930ff0b88beed6aeee068b4cf37037d5d9d (patch)
tree19029df136812d0e56748e4f4b08154c17fddff1 /mesonbuild/mconf.py
parentb37f0cce2c9d94223caf5730af508c463e125457 (diff)
downloadmeson-e2ef6930ff0b88beed6aeee068b4cf37037d5d9d.tar.gz
use OptionKey for coredata.user_options
Diffstat (limited to 'mesonbuild/mconf.py')
-rw-r--r--mesonbuild/mconf.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py
index 24638ebd3..9a68f7da6 100644
--- a/mesonbuild/mconf.py
+++ b/mesonbuild/mconf.py
@@ -19,6 +19,7 @@ import typing as T
if T.TYPE_CHECKING:
import argparse
+ from .coredata import OptionKey, UserOption
def add_arguments(parser: 'argparse.ArgumentParser') -> None:
coredata.register_builtin_arguments(parser)
@@ -107,7 +108,7 @@ class Conf:
else:
print('{0:{width[0]}} {1:{width[1]}} {3}'.format(*line, width=col_widths))
- def split_options_per_subproject(self, options):
+ def split_options_per_subproject(self, options: T.Dict[str, 'UserOption']) -> T.Dict[str, T.Dict[str, 'UserOption']]:
result = {}
for k, o in options.items():
subproject = ''
@@ -119,6 +120,18 @@ class Conf:
result.setdefault(subproject, {})[k] = o
return result
+ def split_options_per_subproject2(self, options: 'coredata.KeyedOptionDictType') -> T.Dict[str, T.Dict[str, 'UserOption']]:
+ result = {}
+ for k, o in options.items():
+ subproject = k.subproject
+ if k.subproject:
+ k = k.as_root()
+ if o.yielding and k in options:
+ self.yielding_options.add(k)
+ self.all_subprojects.add(subproject)
+ result.setdefault(subproject, {})[str(k)] = o
+ return result
+
def _add_line(self, name, value, choices, descr):
self.name_col.append(' ' * self.print_margin + name)
self.value_col.append(value)
@@ -211,7 +224,7 @@ class Conf:
dict(self.coredata.flatten_lang_iterator(
(insert_build_prefix(k), o)
for k, o in self.coredata.compiler_options.build.items())))
- project_options = self.split_options_per_subproject(self.coredata.user_options)
+ project_options = self.split_options_per_subproject2(self.coredata.user_options)
show_build_options = self.default_values_only or self.build.environment.is_cross_build()
self.add_section('Main project options')