This page is archived and is no longer receiving updates.
It remains here because some of the content may still be useful.
Updates to the Build system from seL4 10.1.x to 11.0.x
seL4_tools/cmake-tool
dts.cmake
: Suppress output fromdtc
unless it doesn’t produce an output file.application_settings.cmake
: Disable kernel printing in release builds.dts.cmake
: Use dts files from the kernel repository.rootserver.cmake
: Support building RISC-V withgcc-8
.- Split
common.cmake
intosimulation.cmake
,cpio.cmake
androotserver.cmake
. - Remove
AddLegacyLibrary
function. This was used to wrap old build system libraries and is no longer used. cpio.cmake
: Support constructing multiple CPIO archives within the same build directory.- Style all CMake files and python scripts.
- Add
make.cpio
module withMakefileDepsToList
,create_depfile_by_find
andexecute_process_with_stale_check
helpers. These helpers add mechanisms for not re-running expensiveexecute_process
commands during build configurations if inputs to the command are not stale. - Add
cmakerepl
script for inline debugging of CMake scripts. - Add
debug.cmake
that addsset_break()
CMake function for limited CMake variable inspection. - Add
griddle
tool to enable easy build scenarios:- Automatically add additional CMake initialization flags on first init.
- Present project build configuration options based on an
easy-settings.cmake
file. - Detect when
CMakeCache.txt
file is unstable and re-run cmake until it stabalizes. - Inform user about config stability.
- Provide a
--platform-hel
option for listing all kernel supported platforms. - Handle platform toolchain configuration requirements.
init-build.sh
: tidy script and remove bash-isms to make POSIX-compliant.rootserver.cmake
: Supportuimage
format for ArmV7 platforms.- Add scripts in
helpers/
toCMAKE_MODULE_PATH
and support importing on demand. cakeml.cmake
: Add support for multiple CakeML libraries within a project.Holmake
doesn’t support concurrent builds of different projects, so multiple builds need to be serialized.- Add
platform_sift.py
script for extracting platform memory region descriptions from a YAML file outputted by kernel build. init-build.sh
: Remove multiple CMake invocations and only call CMake once.application_settings.cmake
: Addcorrect_platform_strings
for converting conventional-DPLATFORM
values to validKernelPlatform
andKernelSel4Arch
settings.flags.cmake
: Use the runtime objects fromsel4runtime
rather thanmusl
.flags.cmake
: Always use__aeabi_read_tp
for aarch32 by setting-mtp=soft
.- Require
-C settings.cmake
for initializing CMake projects. This supports the new build structure where instead of blindly including everysettings.cmake
file in everyprojects/
folder, we instead require a singlesettings.cmake
file to be passed in. - Add
check_arch_compiler.cmake
. This triggers errors if the incorrect compiler is selected. - Add
nanopb.cmake
for nanopb support. rust_targets
: Updatex86_64-target.json
to new format.application_settings.cmake
:ApplyData61ElfLoaderSettings
RISCV support.- Add
elf_sift.py
script for computing ELF image loadable segment sizes. - Add
shoehorn.py
script for computing load addresses of Elfloader, Kernel and User images in memory. - Add
make-uimage
script to extract the entry point (start symbol) of an ELF executable and wrap the object in a chain-loadable payload for use by the U-Boot boot loader. Holmakefile.in
,buildScript.sml.in
,cakeml.cmake
: Update CakeML build scripts for newer CakeML version.simulate.py
: Addtput reset
to end of Qemu command for when Qemu leaves the terminal in an inconsistent state.- Remove global
Configuration
CMake library. Each build artifact should instead control its own configuration dependencies. - Add
environment_flags.cmake
module for use in modules that are used for defining system environment build flags. - Move
musllibc
rules fromflags.cmake
toFindmusllibc.cmake
CMake module and merge remainder offlags.cmake
withbase.cmake
. - Mark CMake cache variables advanced by default and allow final project configuration to explicitly show options in the
ccmake
GUI. init-build.sh
: Support alternative build structure where the top-levelCMakeLists.txt
project file is not located in the top level directory.- Move
ccache
settings to compiler toolchain files. cpio.cmake
: Change strategy for constructing cpio archive object file to use linker instead of objcopy.simulation.cmake
: Add newqemu-arm-virt
platform simulator options with hyp support.rust_targets
: addaarch64-sel4-none.json
target file for Aarch64 rust targets.
kernel
- Add functions for querying all kernel platform names and architectures.
- Add
check_outfile_stale
macro. This checks if a file is older than other files during CMake configure phase. This is to prevent unnecessary long runningexecute_process
calls. - Style all CMake and python files.
- Add
FORCE
to allINTERNAL
sets.INTERNAL
impliesFORCE
but in some versions of CMake if a config option has been passed in via a -D option theINTERNAL
set doesn’t override the value when it should. See: https://gitlab.kitware.com/cmake/cmake/issues/19015 -INTERNAL
does not implyFORCE
forCACHE
. - Update
python2
–>python3
in build scripts. - Invoke verified configuration files to build kernel with verified configurations.
- Add
SEL4_CONFIG_DEFAULT_ADVANCED
CMake variable. If set then all cache variable declarations get marked as advanced by default. - Add device trees for every Arm and RISC-V platform.
- Use per-config device tree overlays to customize platform layouts for different build configurations.
- Auto-generate hardware headers describing Arm and RISC-V platforms. Use these headers for creating Untyped objects and Kernel device binding and export YAML memory region file for use by other projects in build system.
sel4_deps
: Addpyfdt
,cmake-format
,guardonce
,pyelftools
,autopep8
,jsonschema
andlibarchive-c
to seL4 python package. Changepyaml
topyyaml
.- Automatically select serial and timer drivers based on device trees.
- Remove
kernel_astyle.sh
in favour of using style scripts insel4_tools
. - Use device tree
chosen
node to specify kernel devices withseL4,kernel-devices
property. - Add
reciprocal.py
for calculating constants for reciprocal division used in MCS kernel. - Add
seL4Config.cmake
module to kernel configurations folder for use in CMake-C
configuration scripts. This enables picking kernel platform settings before any projects are configured and also allows automatically picking the right toolchain files.