Updates to the Build system from seL4 10.1.x to 11.0.x
dts.cmake: Suppress output from
dtc 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 with
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.
make.cpio module with
These helpers add mechanisms for not re-running expensive
execute_process commands during build
configurations if inputs to the command are not stale.
cmakerepl script for inline debugging of CMake scripts.
debug.cmake that adds
set_break() CMake function for limited CMake variable inspection.
griddle tool to enable easy build scenarios:
- Automatically add additional CMake initialization flags on first init.
- Present project build configuration options based on an
- 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.
uimage format for ArmV7 platforms.
- Add scripts in
CMAKE_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.
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.
correct_platform_strings for converting conventional
-DPLATFORM values to
flags.cmake: Use the runtime objects from
sel4runtime rather than
flags.cmake: Always use
__aeabi_read_tp for aarch32 by setting
-C settings.cmake for initializing CMake projects.
This supports the new build structure where instead of blindly including
settings.cmake file in every
projects/ folder, we instead require a single
settings.cmake file to be passed in.
check_arch_compiler.cmake. This triggers errors if the incorrect compiler is selected.
nanopb.cmake for nanopb support.
x86_64-target.json to new format.
ApplyData61ElfLoaderSettings RISCV support.
elf_sift.py script for computing ELF image loadable segment sizes.
shoehorn.py script for computing load addresses of Elfloader, Kernel and User images in memory.
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.
cakeml.cmake: Update CakeML build scripts for newer CakeML version.
tput 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.
environment_flags.cmake module for use in modules that are used for defining system environment build flags.
musllibc rules from
Findmusllibc.cmake CMake module and merge remainder of
- Mark CMake cache variables advanced by default and allow final project configuration to explicitly show options in the
init-build.sh: Support alternative build structure where the top-level
CMakeLists.txt project file is not located in the top level directory.
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 new
qemu-arm-virt platform simulator options with hyp support.
aarch64-sel4-none.json target file for Aarch64 rust targets.
- Add functions for querying all kernel platform names and architectures.
This checks if a file is older than other files during CMake configure
phase. This is to prevent unnecessary long running
- Style all CMake and python files.
FORCE to all
FORCE but in some versions of CMake if a config option
has been passed in via a -D option the
INTERNAL set doesn’t override the
value when it should.
See: https://gitlab.kitware.com/cmake/cmake/issues/19015 -
INTERNAL does not imply
python3 in build scripts.
- Invoke verified configuration files to build kernel with verified configurations.
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.
libarchive-c to seL4 python package. Change
- Automatically select serial and timer drivers based on device trees.
kernel_astyle.sh in favour of using style scripts in
- Use device tree
chosen node to specify kernel devices with
reciprocal.py for calculating constants for reciprocal division used in MCS kernel.
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.