summaryrefslogtreecommitdiff
path: root/mesonbuild/optinterpreter.py
AgeCommit message (Collapse)Author
2020-02-28Adjust all the other places MesonException file attribute is setJon Turney
A MesonException has file, lineno and colno attributes, which get formatted as a location in mlog.exception(). The file attribute got changed from a path relative to the root source directory to a pathname (absolute or relative to cwd) in one place in commit b8fbbf59. Adjust all the other places the file attribute is set to match. Also: Setting MesonException.file seems to be missing in the case where Parser returned a non-CodeBlockNode object. Fortunately, that looks like it's unreachable, but add it just in case.
2020-02-12Refactor UserIntegerOption to work with BuiltinOption.Jussi Pakkanen
2020-01-08types: import typing as T (fixes #6333)Daniel Mensinger
2019-07-15No need to reserve build_ because we use build. instead.Jussi Pakkanen
2019-05-20Reserve build_ prefix in option names.Jussi Pakkanen
2019-05-15UserOption no longer has a name field.John Ericson
This avoids the duplication where the option is stored in a dict at its name, and also contains its own name. In general, the maxim in programming is things shouldn't know their own name, so removed the name field just leaving the option's position in the dictionary as its name.
2019-04-05optinterpreter: Add a log argument to is_invalid_nameDylan Baker
Since we're adding arguments that use the cross_ prefix but are valid we don't want to print "warning invalid argument name!", as that will confuse people by virtue of being wrong.
2019-04-05optinterpreter: Add type annotations to is_invalid_nameDylan Baker
2019-04-04coredata: remove get_builtin_optionsDylan Baker
This returns a list out of th keys of a dict. In both cases of use remaining though it's used for checking membership, checking for list membership, lists are O(n) lookup, while dicts are O(1), so removing the abstraction reduces typing and improves performance.
2019-03-19Reserve cross_ option prefix for Meson.Jussi Pakkanen
2018-07-25UserFeatureOption: Default to 'auto' when no value specifiedXavier Claessens
Closes #3938.
2018-07-02FeatureNew: Make all checks subproject-specificNirbheek Chauhan
We now pass the current subproject to every FeatureNew and FeatureDeprecated call. This requires a bunch of rework to: 1. Ensure that we have access to the subproject in the list of arguments when used as a decorator (see _get_callee_args). 2. Pass the subproject to .use() when it's called manually. 3. We also can't do feature checks for new features in meson_options.txt because that's parsed before we know the meson_version from project()
2018-06-18Add UserFeatureOption typeXavier Claessens
This is a special type of option to be passed to most 'required' keyword arguments. It adds a 3rd state to the traditional boolean value to cause those methods to always return not-found even if the dependency could be found. Since integrators doesn't want enabled features to be a surprise there is a global option "auto_features" to enable or disable all automatic features.
2018-06-06Convert args.projectoptions into a dictXavier Claessens
This simplifies a lot of code, and centralize "key=value" parsing in a single place. Unknown command line options becomes an hard error instead of merely printing warning message. It has been warning it would become an hard error for a while now. This has exceptions though, any unknown option starting with "<lang>_" or "b_" are ignored because they depend on which languages gets added and which compiler gets selected. Also any option for unknown subproject are ignored because they depend on which subproject actually gets built. Also write more command line parsing tests. "19 bad command line options" is removed because bad cmd line option became hard error and it's covered with new tests in "30 command line".
2018-06-06optinterpreter: Remove duplicated list of languagesXavier Claessens
It is important to keep the list of languages up to date in optinterpreter, otherwise we could have conflicting options when adding new languages.
2018-06-01Add 0.45.0 featuresSalamandar
2018-06-01Add 0.44.0 featuresSalamandar
2018-03-20options: s/yiel/yield/ typoThibault Saunier
Making the option unusable with Invalid kwargs for option use_orc: "yield"
2018-02-16Fix subproject prefix handling when checking subproject option validity.Hemmo Nieminen
2018-02-08User options can "yield to" a user option of the same name in superproject. ↵Jussi Pakkanen
Closes ##2853.
2018-02-07Expose integer options to build option files.Jussi Pakkanen
2017-12-19Warn on unknown command line argumentsDylan Baker
I have a tendency to typo things. Humans in general are bad at spotting spelling mistakes, computers are not. This patches prints the bad options and provides the generic meson "This will be a hard error someday" message.
2017-12-07Renamed UserStringArrayOption to UserArrayOption for short.Jussi Pakkanen
2017-12-03String arguments can permit arbitrary string valuesJussi Pakkanen
by leaving out the choices keyword.
2017-11-29Add new array type optionDylan Baker
This exposes the already existing UserStringArrayOption class through the meson_options.txt. The intention is to provide a way for projects to take list/array type arguments and validate that all of the elements in that array are valid without using complex looping constructrs.
2017-11-06coredata: Remove parse_string() methodXavier Claessens
set_value() already does a better job at parsing strings, such as accepting "True" for a boolean. This fixes issue #2544
2017-10-04options: Add a permitted_kwargs functionDylan Baker
I've typo'd "value" for the last time, options needs a kwargs validator. This validator is slightly different than the one used by the main parser, since it operates on a much simpler representation than the other one does, and they are not interchangeable. This also changes the optinterpreter to use pop on 'type' and 'description' so that they're not passed to the validator as kwargs.
2017-08-05Add option to limit maximum number of concurrent link processes.Jussi Pakkanen
2017-04-04Allow option values to contain ':'Nirbheek Chauhan
Instead, check that option keys don't contain ':'. Also change the failing option test to look for this. Closes https://github.com/mesonbuild/meson/issues/1454
2017-01-18cleanup: Remove redundant parenthesesMike Sinkovsky
2017-01-03Merge pull request #1260 from mesonbuild/subproj_defaultsJussi Pakkanen
Can set subproject option defaults from command line and master project
2017-01-01style: fix E124 violationsIgor Gnatenko
E124: closing bracket does not match visual indentation Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2016-12-31Fix space before :.Jussi Pakkanen
2016-12-29Can set project options (but not global options) in subproject default options.Jussi Pakkanen
2016-12-21Raise clearer error if -Doption is invalid.Elliott Sales de Andrade
2016-12-19tree-wide: use proper 'not in' notationIgor Gnatenko
Let's be more pythonic and 'not is' seems really weird. Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2016-12-04Store subdir information for each node so we can remove files set in other ↵Jussi Pakkanen
subdirectories.
2016-08-27Use context manager for file I/O.Elliott Sales de Andrade
There are a few cases where a context manager cannot be used, such as the logger.
2016-08-27Flatten isinstance calls. (#715)Elliott Sales de Andrade
That is, isinstance(x, y) or isinstance(x, z) can be flattened with a tuple to isinstance(x, (y, z)).
2016-08-19Implement D supportMatthias Klumpp
This patch adds support for the D programming language[1] to Meson. The following compilers are supported: * LDC * GDC * DMD [1]: http://dlang.org/
2016-04-04coredata: Centralize builtin option descriptions and definitions.Hemmo Nieminen
2016-04-01Move MesonException from coredata to mesonlib.Hemmo Nieminen
2016-03-20Merge branch 'base_options'.Jussi Pakkanen
2016-03-20Open Meson and option files explicitly as utf-8. Closes #467.Jussi Pakkanen
2016-03-20Preserve b_ prefix for base option names.Jussi Pakkanen
2016-01-16Renamed meson package to mesonbuild so that we can have a script named meson ↵Jussi Pakkanen
in the same toplevel dir.