17612: pkg: add FlashDB r=benpicco a=benpicco
19332: sys/tiny_strerror: make use of flash_utils.h r=benpicco a=benpicco
Co-authored-by: Benjamin Valentin <benpicco@beuth-hochschule.de>
Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de>
18682: pkg/lwext4: add lightweight implementation of the ext2/3/4 filesystem r=benpicco a=benpicco
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
In [0] the paper concludes with
> The Knuth LCG is the most efficient general purpose generator that
> provides decent statistical quality.
> It is simple and lean enough to run on very constrained devices.
So let's select `prng_musl_lcg` to be the default PRNG instead of
`prng_tinymt32`.
This gives a good chunk of memory on e.g. `samr21-xpro`:
prng_tinymt32
-------------
text data bss dec hex filename
26452 136 2824 29412 72e4 tests/rng/bin/samr21-xpro/tests_rng.elf
prng_musl_lcg
-------------
text data bss dec hex filename
26208 136 2808 29152 71e0 tests/rng/bin/samr21-xpro/tests_rng.elf
[0] https://sci-hub.se/10.1145/3453159
Previously, external modules had to be individually added to both
EXTERNAL_MODULE_DIRS and USEMODULE. If those where not in sync, this
resulted in build errors.
With this commit, search folders for external modules are added to
EXTERNAL_MODULE_DIRS instead. So lets say the file system structure is
like this
```
└── /path/to/external/modules
├── mod_a
│ ├── Makefile
│ ├── Makefile.dep
│ ├── Makefile.include
│ ├── foo.c
│ └── include
│ └── external_module.h
└── mod_b
├── Makefile
└── bar.c
```
One now adds `/path/to/external/modules` to EXTERNAL_MODULES and only
with `USEMODULE += mod_a` the corresponding module, dependencies and
include settings are actually used. Hence, it is possible to configure
`EXTERNAL_MODULE_DIRS` from `~/.profile` or `~/.bashrc` once and never
needs to worry about them again.
This commit allows to add a Makefile.dep file in an application
directory to finely tune application dependencies, based on the
used TOOLCHAIN.
Using this mechanism, if an application has dependencies pulled-in based
on the TOOLCHAIN, info-boards-supported, will take this into account to
determine the boards supported by an application
This commit introduces a common storage backend for SUIT manifest
payloads. Different backends can be compiled into a single firmware.
Degending on the component name in the SUIT manifest, a storage backend
is selected by the parser.
For an app, a user usually uses `gnrc_ipv6_router_default` to activate
routing behavior. `gnrc_sixlowpan_router_default` is used by that to
pull in further dependencies for 6LoWPAN routers. It shouldn't pull in
`gnrc_ipv6_router_default` again, as this introduces a cyclic
dependency.
It has no real purpose other than pulling in `gnrc_ipv6_router` as a
dependency, which is already done in other places (or by pulling in its
dependencies).
Just because a user pulls in the DNS client (`sock_dns`) doesn't mean
they want to pull in RDNSS option support as well. Besides, since
`gnrc_ipv6_nib_dns` depends on `gnrc_ipv6_nib`, this forms a circular
dependency that really isn't necessary.
Support for picolibc as alternative libc implementation is added with
this commit. For now only cortex-m CPU's are supported.
Enable via PICOLIBC=1
---
v2:
squash fixes in
v3:
Remove picolibc integer printf/scanf stuff from sys/Makefile.include,
it gets set in makefiles/libc/picolibc.mk
fixup for dependency