summaryrefslogtreecommitdiff
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 23:57:48 +0200
commitd37d649b08b832d52fa684bc0506829fb40d5261 (patch)
treec66e1461e91d6349457b826978e866fdabb19de1 /mesonbuild/mesonmain.py
parentea678ed82938ceac00682b2695b57193d36b71b4 (diff)
downloadmeson-d37d649b08b832d52fa684bc0506829fb40d5261.tar.gz
Make all Meson level options overridable per subproject.
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 2c1ca97a3..7ec66fce7 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: