aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonmain.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2024-04-14 12:58:30 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2025-02-13 15:26:44 +0200
commit518c732ea9b0f1975f6f28accff3286be4106538 (patch)
tree2be9544828545a2f9f0676efc6eb82ac197ec4bd /mesonbuild/mesonmain.py
parentea678ed82938ceac00682b2695b57193d36b71b4 (diff)
downloadmeson-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.py20
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: