aboutsummaryrefslogtreecommitdiffstats
path: root/meson/docs/markdown/Keyval-module.md
diff options
context:
space:
mode:
Diffstat (limited to 'meson/docs/markdown/Keyval-module.md')
-rw-r--r--meson/docs/markdown/Keyval-module.md58
1 files changed, 58 insertions, 0 deletions
diff --git a/meson/docs/markdown/Keyval-module.md b/meson/docs/markdown/Keyval-module.md
new file mode 100644
index 000000000..96d9c1566
--- /dev/null
+++ b/meson/docs/markdown/Keyval-module.md
@@ -0,0 +1,58 @@
+---
+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).