[riot-devel] Upcoming `CPU` and `CPU_MODEL` definition migration.

Gaëtan Harter gaetan.harter at fu-berlin.de
Tue Jul 23 18:25:03 CEST 2019

Dear RIOT developers, board contributors,

as agreed in https://github.com/RIOT-OS/RIOT/pull/11478 `CPU` and 
`CPU_MODEL` variables will be moved from board `Makefile.include` to 
`Makefile.features` files.

This migration will start after 2019.07 release will have been finalized.
The tracking pull request following this is available at 
Some issues/board specific handling are still unresolved and will have 
to be tackled along the way. I will come to ask for help when I cannot 
chose a solution myself.

I wanted to inform you of this change that will affect open pull 
requests and current practices.
Please update your pull requests and take it into account during reviews 
after the release.

Update of `CPU_FAM`, `CPU_ARCH` and related variables should also follow 
the same migration in `cpu` in following steps.

The mid-term goal is to allow parsing dependencies in a consistent and 
independent step removing the need for the current workarounds.
The long term goal, is that having a consistent state, could help trying 
new ideas on how to define the dependencies with a way to verify 

### Reasoning

The reason behind this is that the board/cpu `Makefile.include` files 
need to allow different configuration depending on the used modules.

However, in the current parsing, `Makefile.dep` is evaluated after 
`Makefile.include` so leads to using value before being correctly defined.
The plan is to move the parsing before.

As dependencies resolution depend on the `CPU` or `CPU_MODEL` variables 
they need to have the value moved out of `Makefile.include` and it will 
be to `Makefile.features.

It will remove duplication as boards `Makefile.features` were already 
including `CPU/Makefile.features` by hardwriting the cpu value. 
`Makefie.dep` was doing it too due to the next issue.
It will fix the inconsistency that the evaluation of supported boards 
used by CI was ignoring board and cpu `Makefile.include` so led to 
ignoring dependencies defined in board and cpu `Makefile.include` and 
also the value of `CPU` and `CPU_MODEL`.
This led to hacks to filter on `BOARD` instead of `CPU_MODEL` in the 

I will do my best to prevent regressions and do a smooth transition.
As it can still happen, please notify if you find any issues caused by this.

Thank you for your comprehension

Gaëtan - @cladmi

More information about the devel mailing list