[riot-notifications] [RIOT-OS/RIOT] Makefile.include: avoid recursive expansion of USEMODULE [backport 2021.01] (#15864)
notifications at github.com
Wed Jan 27 10:20:00 CET 2021
# Backport of #15835
### Contribution description
The desired behaviour of `DEFAULT_MODULES` during the dependency resolution is to be evaluated once before the dependency resolution occurs and once after that.
Currently `USEMODULE` is appended using `+=` which makes it recursively expanded.  That means that it keeps a reference to `DEFAULT_MODULES`, during the first iteration of the process. This breaks the intended behaviour. For example, if some dependency adds a module to `DEFAULT_MODULES` during the first iteration, on a following check `USEMODULE` is updated with that module instantly.
This can be fixed by making `USEMODULE` simply expanded before the dependency resolution starts.
: According to the [GNU make documentation](https://www.gnu.org/software/make/manual/make.html):
>For the append operator ‘+=’, the right-hand side is considered immediate if the variable was previously set as a simple variable (‘:=’ or ‘::=’), and deferred otherwise.
In the particular case of `USEMODULE` it turns it into a deferred assignment.
### Testing procedure
- Green CI
- Although this is the correct behaviour, we should watch out for dependencies that may have been working because of this error
### Issues/PRs references
You can view, comment on, or merge this pull request online at:
-- Commit Summary --
* makefile.include: avoid recursive expansion of USEMODULE
* makefiles: allow boards and CPUs to define default modules
* boards/e104-bt50xxa-tb: move default module to Makefile.default
* cpu/msp430: move default module to Makefile.default
* sys/Makefile.dep: default saul_init_devs to y when saul_default is used
-- File Changes --
M Makefile.include (3)
A boards/common/e104-bt50xxa-tb/Makefile.default (2)
M boards/common/e104-bt50xxa-tb/Makefile.dep (2)
A boards/e104-bt5010a-tb/Makefile.default (1)
A boards/e104-bt5011a-tb/Makefile.default (1)
A cpu/msp430_common/Makefile.default (2)
M cpu/msp430_common/Makefile.dep (3)
A cpu/msp430fxyz/Makefile.default (1)
M makefiles/defaultmodules.inc.mk (6)
M sys/Makefile.dep (1)
-- Patch Links --
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the notifications