@apavey posted RFC-4 to the RFC list but after some thought and discussion, it is apparent that there is a need to discuss how bootloaders might be supported in the seL4 build system.
The RFC proposes that an addition is made to the seL4 tools repository where there is a global CMake list called UseBootEnv
that can have a list of supported components that make a bootable image. An optional ConfigureBootEnv
CMake function then takes this list, parses it, and takes care of building the bootable image. In the ConfigureBootEnv
function more bootable environments can be supported. The reason for using a list is that in some cases more than one thing might need to be supported. The plan here is to also generate scripts to format sd cards.
The current draft of our implementation is located on a branch of ours. The current implementation shouldn’t change default behaviour except when using bbl, since the bootloader building has been extracted from the middle of the rootserver logic and added to the end to operate only on the final image.
This meets our immediate needs but does anyone have other ideas for better interfaces? Is the Boot Environment list a good idea? Are there better abstractions in CMake to handle something like this? Should it just provide a function like the simulation generation scripts, where the developer can add the function call to the end of their top level CMake script? Any other ideas?