Goal:
-
Allow selection of board with build system. This will allow us to build for multiple boards without changing any source code (currently you have to change a using namespace Board =...
-
Allow specifying custom board config file, which may be outside of mp1-boot source dir. For instance, including mp1-boot in another project
-
Allowing adding new options to board config without forcing all board config files to be updated.
Proposal:
Goals 1 and 2 can be done by building with make BOARD_CONF=xxx, where xxx can be a known board (DK2 or OSD32), or a path to a custom board_conf.hh file. This has been roughly implemented in the ssbl-option branch (still needs work).
Goal 3 can be addressed by changing namespace Board to struct Board, which inherits from a struct of constexpr members with default values. A new field can be added to the default struct, and all boards will inherit the default. Thus creating new fields won't break existing board configs.
With Board as a class type, it can be passed as a template parameter, which might be useful for checks like if constexpr (requires {typename Board::SomeThing})
Goal:
Allow selection of board with build system. This will allow us to build for multiple boards without changing any source code (currently you have to change a
using namespace Board =...Allow specifying custom board config file, which may be outside of mp1-boot source dir. For instance, including mp1-boot in another project
Allowing adding new options to board config without forcing all board config files to be updated.
Proposal:
Goals 1 and 2 can be done by building with
make BOARD_CONF=xxx, where xxx can be a known board (DK2 or OSD32), or a path to a custom board_conf.hh file. This has been roughly implemented in the ssbl-option branch (still needs work).Goal 3 can be addressed by changing
namespace Boardtostruct Board, which inherits from a struct of constexpr members with default values. A new field can be added to the default struct, and all boards will inherit the default. Thus creating new fields won't break existing board configs.With Board as a class type, it can be passed as a template parameter, which might be useful for checks like
if constexpr (requires {typename Board::SomeThing})