|
|
|
---
|
|
|
|
short-description: Keyval module
|
|
|
|
authors:
|
|
|
|
- name: Mark Schulte, Paolo Bonzini
|
|
|
|
years: [2017, 2019]
|
|
|
|
has-copyright: false
|
|
|
|
...
|
|
|
|
|
|
|
|
# keyval module
|
|
|
|
|
|
|
|
This module parses files consisting of a series of `key=value` lines.
|
|
|
|
One use of this module is to load kconfig configurations in Meson
|
|
|
|
projects.
|
|
|
|
|
|
|
|
**Note**: this does not provide kconfig frontend tooling to generate a
|
|
|
|
configuration. You still need something such as kconfig frontends (see
|
|
|
|
link below) to parse your Kconfig files, and then (after you've chosen
|
|
|
|
the configuration options), output a ".config" file.
|
|
|
|
|
|
|
|
[kconfig-frontends]: http://ymorin.is-a-geek.org/projects/kconfig-frontends
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
The module may be imported as follows:
|
|
|
|
|
|
|
|
``` meson
|
|
|
|
keyval = import('keyval')
|
|
|
|
```
|
|
|
|
|
|
|
|
The following functions will then be available as methods on the object
|
|
|
|
with the name `keyval`. You can, of course, replace the name
|
|
|
|
`keyval` with anything else.
|
|
|
|
|
|
|
|
### keyval.load()
|
|
|
|
|
|
|
|
This function loads a file consisting of a series of `key=value` lines
|
|
|
|
and returns a dictionary object.
|
|
|
|
|
|
|
|
`keyval.load()` makes no attempt at parsing the values in the file. In
|
|
|
|
particular boolean and integer values will be represented as strings,
|
|
|
|
and strings will keep any quoting that is present in the input file.
|
|
|
|
It can be useful to create a
|
|
|
|
[`configuration_data()`](#configuration_data) object from the
|
|
|
|
dictionary and use methods such as `get_unquoted()`.
|
|
|
|
|
|
|
|
Kconfig frontends usually have ".config" as the default name for the
|
|
|
|
configuration file. However, placing the configuration file in the
|
|
|
|
source directory limits the user to one configuration per source
|
|
|
|
directory. In order to allow separate configurations for each build
|
|
|
|
directory, as is the Meson standard, `meson.build` should not hardcode
|
|
|
|
".config" as the argument to `kconfig.load()`, and should instead make
|
|
|
|
the argument to `kconfig.load()` a [project build
|
|
|
|
option](Build-options.md).
|
|
|
|
|
|
|
|
* The first (and only) argument is the path to the configuration file to
|
|
|
|
load (usually ".config").
|
|
|
|
|
|
|
|
**Returns**: a [dictionary object](Reference-manual.md#dictionary-object).
|