Skip to content

Commit 0717750

Browse files
committed
Support -Dvariant that gets passed through to meson
1 parent b87c479 commit 0717750

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

mesonpy/__init__.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -622,10 +622,10 @@ def _bool(value: Any, name: str) -> bool:
622622
def _string_or_strings(value: Any, name: str) -> List[str]:
623623
return list([value,] if isinstance(value, str) else value)
624624

625-
def _variant_names(value: Any, name: str) -> VariantDescription:
625+
def _variant_names(value: Any, name: str) -> list[VariantMeta]:
626626
if isinstance(value, str):
627627
value = [value]
628-
return VariantDescription([VariantMeta.from_str(x) for x in value])
628+
return [VariantMeta.from_str(x) for x in value]
629629

630630
options = {
631631
'builddir': _string,
@@ -635,6 +635,7 @@ def _variant_names(value: Any, name: str) -> VariantDescription:
635635
'setup-args': _string_or_strings,
636636
'compile-args': _string_or_strings,
637637
'install-args': _string_or_strings,
638+
'variant': _variant_names,
638639
'variant-name': _variant_names,
639640
}
640641
assert all(f'{name}-args' in options for name in _MESON_ARGS_KEYS)
@@ -1051,12 +1052,19 @@ def _project(config_settings: Optional[Dict[Any, Any]] = None) -> Iterator[Proje
10511052
source_dir = os.path.curdir
10521053
build_dir = settings.get('build-dir')
10531054
editable_verbose = bool(settings.get('editable-verbose'))
1054-
variant = settings.get('variant-name')
1055+
variants = settings.get('variant', [])
1056+
variant_names = settings.get('variant-name', []) + variants
1057+
1058+
variant_desc = None
1059+
if variants:
1060+
variant_desc = VariantDescription(variant_names)
1061+
meson_args.setdefault('setup', [])
1062+
meson_args['setup'].append(f'-Dvariant={[x.to_str() for x in variants]!r}')
10551063

10561064
with contextlib.ExitStack() as ctx:
10571065
if build_dir is None:
10581066
build_dir = ctx.enter_context(tempfile.TemporaryDirectory(prefix='.mesonpy-', dir=source_dir))
1059-
yield Project(source_dir, build_dir, meson_args, editable_verbose, variant)
1067+
yield Project(source_dir, build_dir, meson_args, editable_verbose, variant_desc)
10601068

10611069

10621070
def _parse_version_string(string: str) -> Tuple[int, ...]:

0 commit comments

Comments
 (0)