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 fromdtcunless 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.cmakeintosimulation.cmake,cpio.cmakeandrootserver.cmake. - Remove
AddLegacyLibraryfunction. 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.cpiomodule withMakefileDepsToList,create_depfile_by_findandexecute_process_with_stale_checkhelpers. These helpers add mechanisms for not re-running expensiveexecute_processcommands during build configurations if inputs to the command are not stale. - Add
cmakereplscript for inline debugging of CMake scripts. - Add
debug.cmakethat addsset_break()CMake function for limited CMake variable inspection. - Add
griddletool to enable easy build scenarios:- Automatically add additional CMake initialization flags on first init.
- Present project build configuration options based on an
easy-settings.cmakefile. - Detect when
CMakeCache.txtfile is unstable and re-run cmake until it stabalizes. - Inform user about config stability.
- Provide a
--platform-heloption 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: Supportuimageformat for ArmV7 platforms.- Add scripts in
helpers/toCMAKE_MODULE_PATHand support importing on demand. cakeml.cmake: Add support for multiple CakeML libraries within a project.Holmakedoesn’t support concurrent builds of different projects, so multiple builds need to be serialized.- Add
platform_sift.pyscript 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_stringsfor converting conventional-DPLATFORMvalues to validKernelPlatformandKernelSel4Archsettings.flags.cmake: Use the runtime objects fromsel4runtimerather thanmusl.flags.cmake: Always use__aeabi_read_tpfor aarch32 by setting-mtp=soft.- Require
-C settings.cmakefor initializing CMake projects. This supports the new build structure where instead of blindly including everysettings.cmakefile in everyprojects/folder, we instead require a singlesettings.cmakefile to be passed in. - Add
check_arch_compiler.cmake. This triggers errors if the incorrect compiler is selected. - Add
nanopb.cmakefor nanopb support. rust_targets: Updatex86_64-target.jsonto new format.application_settings.cmake:ApplyData61ElfLoaderSettingsRISCV support.- Add
elf_sift.pyscript for computing ELF image loadable segment sizes. - Add
shoehorn.pyscript for computing load addresses of Elfloader, Kernel and User images in memory. - Add
make-uimagescript 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 resetto end of Qemu command for when Qemu leaves the terminal in an inconsistent state.- Remove global
ConfigurationCMake library. Each build artifact should instead control its own configuration dependencies. - Add
environment_flags.cmakemodule for use in modules that are used for defining system environment build flags. - Move
musllibcrules fromflags.cmaketoFindmusllibc.cmakeCMake module and merge remainder offlags.cmakewithbase.cmake. - Mark CMake cache variables advanced by default and allow final project configuration to explicitly show options in the
ccmakeGUI. init-build.sh: Support alternative build structure where the top-levelCMakeLists.txtproject file is not located in the top level directory.- Move
ccachesettings 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-virtplatform simulator options with hyp support.rust_targets: addaarch64-sel4-none.jsontarget file for Aarch64 rust targets.
kernel
- Add functions for querying all kernel platform names and architectures.
- Add
check_outfile_stalemacro. This checks if a file is older than other files during CMake configure phase. This is to prevent unnecessary long runningexecute_processcalls. - Style all CMake and python files.
- Add
FORCEto allINTERNALsets.INTERNALimpliesFORCEbut in some versions of CMake if a config option has been passed in via a -D option theINTERNALset doesn’t override the value when it should. See: https://gitlab.kitware.com/cmake/cmake/issues/19015 -INTERNALdoes not implyFORCEforCACHE. - Update
python2–>python3in build scripts. - Invoke verified configuration files to build kernel with verified configurations.
- Add
SEL4_CONFIG_DEFAULT_ADVANCEDCMake 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,jsonschemaandlibarchive-cto seL4 python package. Changepyamltopyyaml.- Automatically select serial and timer drivers based on device trees.
- Remove
kernel_astyle.shin favour of using style scripts insel4_tools. - Use device tree
chosennode to specify kernel devices withseL4,kernel-devicesproperty. - Add
reciprocal.pyfor calculating constants for reciprocal division used in MCS kernel. - Add
seL4Config.cmakemodule to kernel configurations folder for use in CMake-Cconfiguration scripts. This enables picking kernel platform settings before any projects are configured and also allows automatically picking the right toolchain files.