diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2018-03-15 16:19:13 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2018-04-17 11:32:26 -0700 |
commit | 1c48cc08e09b1ea860a4972b752d4f053433fa6f (patch) | |
tree | 6cbb0ccdfc73c70479da8a9900537c4a832e9aeb /mesonbuild/mconf.py | |
parent | 8120ff9cf75bf35bed049f0624314967f35bae51 (diff) | |
download | meson-1c48cc08e09b1ea860a4972b752d4f053433fa6f.zip meson-1c48cc08e09b1ea860a4972b752d4f053433fa6f.tar.gz meson-1c48cc08e09b1ea860a4972b752d4f053433fa6f.tar.bz2 |
mconf: accept -- options like `meson` does
I'm not really happy about this to be honest, I don't like having both
-- and -D options, I think it's stupid to have two ways to do exactly
the same thing, especially since we then have to validate that someone
hasn't passed the argument both ways.
However, other people want this, so here it is.
Fixes #969
Diffstat (limited to 'mesonbuild/mconf.py')
-rw-r--r-- | mesonbuild/mconf.py | 15 |
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.') |