aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mconf.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/mconf.py')
-rw-r--r--mesonbuild/mconf.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py
index cadd306..9a11332 100644
--- a/mesonbuild/mconf.py
+++ b/mesonbuild/mconf.py
@@ -19,6 +19,7 @@ from . import (coredata, mesonlib, build)
def buildparser():
parser = argparse.ArgumentParser(prog='meson configure')
+ coredata.register_builtin_arguments(parser)
parser.add_argument('-D', action='append', default=[], dest='sets',
help='Set an option to the given value.')
@@ -28,6 +29,19 @@ def buildparser():
return parser
+def filter_builtin_options(args, original_args):
+ """Filter out any args passed with -- instead of -D."""
+ for arg in original_args:
+ if not arg.startswith('--') or arg == '--clearcache':
+ continue
+ name = arg.lstrip('--').split('=', 1)[0]
+ if any([a.startswith(name + '=') for a in args.sets]):
+ raise mesonlib.MesonException(
+ 'Got argument {0} as both -D{0} and --{0}. Pick one.'.format(name))
+ args.sets.append('{}={}'.format(name, getattr(args, name)))
+ delattr(args, name)
+
+
class ConfException(mesonlib.MesonException):
pass
@@ -229,6 +243,7 @@ def run(args):
if not args:
args = [os.getcwd()]
options = buildparser().parse_args(args)
+ filter_builtin_options(options, args)
if len(options.directory) > 1:
print('%s <build directory>' % args[0])
print('If you omit the build directory, the current directory is substituted.')