Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This patches takes the options work to it's logical conclusion: A single
flat dictionary of OptionKey: UserOptions. This allows us to simplify a
large number of cases, as we don't need to check if an option is in this
dict or that one (or any of 5 or 6, actually).
|
|
I would have prefered to do these seperatately, but they are combined in
some cases, so it was much easier to convert them together.
this eliminates the builtins_per_machine dict, as it's duplicated with
the OptionKey's machine parameter.
|
|
There's starting to be a lot of things including coredata that coredata
needs to itself include. putting it in mesonlib makes more sense
|
|
|
|
|
|
|
|
that's the only place it's used anyway.
|
|
|
|
It is much easier to not try to parse options into complicated
structures until we actually collected all options: machine files,
command line, project()'s default_options, environment.
|
|
|
|
This splits the directory options and non-directory options into two
dicts, and then merges them later to maintain API.
|
|
This is a regression introduced by #5489
|
|
A current rather untyped storage of options is one of the things that
contributes to the options code being so complex. This takes a small
step in synching down by storing the compiler options in dicts per
language.
Future work might be replacing the langauge strings with an enum, and
defaultdict with a custom struct, just like `PerMachine` and
`MachineChoice`.
|
|
- Typos were found by codespell v1.16.0
|
|
Closes: #6087
|
|
Also hide value of yielding subproject options to make it clear the
value must be set on the main project.
|
|
|
|
|
|
See the docs/ changes for details.
|
|
|
|
Which is an OrderedDict, but mconf changes to a plain dict. This will
work fine with Python 3.7+, but not with 3.5 and 3.6
|
|
|
|
|
|
Extend native files to store install path information
|
|
mconf: Use introspection to print the project default options (fixes #2543)
|
|
This allows the person running configure (either a developer, user, or
distro maintainer) to keep a configuration of where various kinds of
files should end up.
|
|
|
|
Instead use coredata.compiler_options.<machine>. This brings the cross
and native code paths closer together, since both now use that.
Command line options are interpreted just as before, for backwards
compatibility. This does introduce some funny conditionals. In the
future, I'd like to change the interpretation of command line options so
- The logic is cross-agnostic, i.e. there are no conditions affected by
`is_cross_build()`.
- Compiler args for both the build and host machines can always be
controlled by the command line.
- Compiler args for both machines can always be controlled separately.
|
|
|
|
mintro: Added `meson-info.json` introspection information about the latest meson run
|
|
Also, options are now responsible for providing a suitable printable
representation of their value instead of handling this at the caller.
|
|
|
|
mintro: Save introspection to disk and --targets modifications
|
|
|
|
|
|
|
|
|
|
Write command line options into a separate file to be able to
reconfigure from scatch in the case coredata cannot be loaded. The most
common case is when we are reconfiguring with a newer meson version.
This means that we should try as much as possible to maintain backward
compatibility for the cmd_line.txt file format.
The main difference with a normal reconfigure is it will use new
default options values and will read again environment variables like
CFLAGS, etc.
|
|
This has the adventage that "meson --help" shows a list of all commands,
making them discoverable. This also reduce the manual parsing of
arguments to the strict minimum needed for backward compatibility.
|
|
|
|
|
|
All options are now the projectoptions list, regardless of how they got
defined in the command line.
This also delays setting builtin option values until the main project()
default options are parsed to simplify the code. This is possible
because we already delayed setting the backend after parsing main
project() in a previous commit.
|
|
|
|
This ensure all option groups are printed the same way. Also ensure that
we cannot miss some builtin options by taking the list of all builtin
options and excluding only directories/testing options.
|
|
|
|
|
|
Those methods only use coredata object, so better just move them as a
coredata method.
|
|
|
|
|