diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2024-04-14 12:58:30 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2025-02-13 15:26:44 +0200 |
commit | 518c732ea9b0f1975f6f28accff3286be4106538 (patch) | |
tree | 2be9544828545a2f9f0676efc6eb82ac197ec4bd /mesonbuild/mesonmain.py | |
parent | ea678ed82938ceac00682b2695b57193d36b71b4 (diff) | |
download | meson-optionrefactor3.zip meson-optionrefactor3.tar.gz meson-optionrefactor3.tar.bz2 |
Make all Meson level options overridable per subproject.optionrefactor3
Diffstat (limited to 'mesonbuild/mesonmain.py')
-rw-r--r-- | mesonbuild/mesonmain.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index 2c1ca97..7ec66fc 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -234,6 +234,25 @@ def set_meson_command(mainfile: str) -> None: from . import mesonlib mesonlib.set_meson_command(mainfile) +def validate_original_args(args): + import mesonbuild.options + import itertools + + def has_startswith(coll, target): + for entry in coll: + if entry.startswith(target): + return True + return False + #ds = [x for x in args if x.startswith('-D')] + #longs = [x for x in args if x.startswith('--')] + for optionkey in itertools.chain(mesonbuild.options.BUILTIN_DIR_OPTIONS, mesonbuild.options.BUILTIN_CORE_OPTIONS): + longarg = mesonbuild.options.BuiltinOption.argparse_name_to_arg(optionkey.name) + shortarg = f'-D{optionkey.name}' + if has_startswith(args, longarg) and has_startswith(args, shortarg): + sys.exit( + f'Got argument {optionkey.name} as both {shortarg} and {longarg}. Pick one.') + + def run(original_args: T.List[str], mainfile: str) -> int: if os.environ.get('MESON_SHOW_DEPRECATIONS'): # workaround for https://bugs.python.org/issue34624 @@ -281,6 +300,7 @@ def run(original_args: T.List[str], mainfile: str) -> int: return run_script_command(args[1], args[2:]) set_meson_command(mainfile) + validate_original_args(args) return CommandLineParser().run(args) def main() -> int: |