| --- | |
| 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). |