If not included before, IS_USED macro from modules.h is undefined,
leading to such errors:
error: missing binary operator before token "("
Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
This lists and documents features in a machine readable form. It is
intended to be used for documentation and the build system.
Co-authored-by: mguetschow <mikolai.guetschow@tu-dresden.de>
Co-authored-by: chrysn <chrysn@fsfe.org>
Add a python script that allows having a single YAML file as source of
truth for what features are available, and also add documentation such
as help texts and grouping to them.
This utility converts such a YAML file to a Makefile with the contents
```
FEATURES_EXISTING := \
feature_a \
feature_b \
... \
features_z \
#
```
This allows the Makefile based build system to easily check if all
provided features and all requested features do actually exist.
In addition, this also converts the YAML file to a markdown file that
documents the features. This file is then intended to be used by
Doxygen to document the provided features.
Co-authored-by: mguetschow <mikolai.guetschow@tu-dresden.de>
Co-authored-by: chrysn <chrysn@fsfe.org>
Failing to provide any of the required features can provide a message
such as:
There are unsatisfied feature requirements: periph_uart|periph_lpuart
This can be confusing and may hide the actual. E.g. above message
was generated when using SPI on the `msb-430` and `stdio_uart`. However,
the MSB-430 board *does* provide `periph_uart`, so this looks like a bug
in the feature resolution. This changes the failure mode of
`FEATURES_REQUIRED_ANY` to just pick the first of the alternatives
given if none of the alternative is usable, which gives in the example
the following message instead:
The following features may conflict: periph_spi periph_uart
Rationale: Both SPI and UART are provided by the same USART
peripheral
The output is less surprising and can provide non-obvious reasons
why `FEATURES_REQUIRED_ANY` failed to pick a feature. The downside is
that the alternatives are no longer visible. However, that output
likely was so confusing this might be for the best.
Co-authored-by: mguetschow <mikolai.guetschow@tu-dresden.de>
Hauke has stopped working on RIOT for some time now and other
maintainers agreed to step up to take over the steering / contact job
during the VMA. This change replaces Hauke by benpicco and maribu as
contact as agreed upon.