diff options
-rw-r--r-- | docs/markdown/snippets/d-options-for-meson-setup.md | 8 | ||||
-rw-r--r-- | mesonbuild/mconf.py | 15 |
2 files changed, 19 insertions, 4 deletions
diff --git a/docs/markdown/snippets/d-options-for-meson-setup.md b/docs/markdown/snippets/d-options-for-meson-setup.md index 90dc452..37afbe0 100644 --- a/docs/markdown/snippets/d-options-for-meson-setup.md +++ b/docs/markdown/snippets/d-options-for-meson-setup.md @@ -1,6 +1,6 @@ -## Meson now accepts -D for builtin arguments at setup time like configure time +## Meson and meson configure now accept the same arguments Previously meson required that builtin arguments (like prefix) be passed as -`--prefix` to `meson` and `-Dprefix` to `meson configure`. Meson now accepts -D -form like meson configure does. `meson configure` still does not accept the -`--prefix` form. +`--prefix` to `meson` and `-Dprefix` to `meson configure`. `meson` now accepts -D +form like `meson configure` has. `meson configure` also accepts the `--prefix` +form, like `meson` has. 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.') |