@@ -622,10 +622,10 @@ def _bool(value: Any, name: str) -> bool:
622
622
def _string_or_strings (value : Any , name : str ) -> List [str ]:
623
623
return list ([value ,] if isinstance (value , str ) else value )
624
624
625
- def _variant_names (value : Any , name : str ) -> VariantDescription :
625
+ def _variant_names (value : Any , name : str ) -> list [ VariantMeta ] :
626
626
if isinstance (value , str ):
627
627
value = [value ]
628
- return VariantDescription ( [VariantMeta .from_str (x ) for x in value ])
628
+ return [VariantMeta .from_str (x ) for x in value ]
629
629
630
630
options = {
631
631
'builddir' : _string ,
@@ -635,6 +635,7 @@ def _variant_names(value: Any, name: str) -> VariantDescription:
635
635
'setup-args' : _string_or_strings ,
636
636
'compile-args' : _string_or_strings ,
637
637
'install-args' : _string_or_strings ,
638
+ 'variant' : _variant_names ,
638
639
'variant-name' : _variant_names ,
639
640
}
640
641
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
1051
1052
source_dir = os .path .curdir
1052
1053
build_dir = settings .get ('build-dir' )
1053
1054
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} ' )
1055
1063
1056
1064
with contextlib .ExitStack () as ctx :
1057
1065
if build_dir is None :
1058
1066
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 )
1060
1068
1061
1069
1062
1070
def _parse_version_string (string : str ) -> Tuple [int , ...]:
0 commit comments