.. _app_build_system: Build and configuration system ############################## .. contents:: :local: :depth: 2 The |BRIDLE| build and configuration system is based on the one from Zephyr, with some additions. Zephyr's build and configuration system *************************************** Zephyr's build and configuration system uses the following building blocks as a foundation: * CMake, the cross-platform build system generator. * Kconfig, a powerful configuration system also used in the Linux kernel. * Devicetree, a hardware description language that is used to describe the hardware that |BRIDLE| is to run on. Since the build and configuration system used by |BRIDLE| comes from Zephyr, references to the original Zephyr documentation are provided here in order to avoid duplication. See the following links for information about the different building blocks mentioned above: * :ref:`zephyr:application` is a complete guide to application development with Zephyr, including the build and configuration system. * :ref:`zephyr:cmake-details` describes in-depth the usage of CMake for Zephyr-based applications. * :ref:`zephyr:application-kconfig` contains a guide for Kconfig usage in applications. * :ref:`zephyr:set-devicetree-overlays` explains how to use devicetree and its overlays to customize an application's devicetree. |BRIDLE| additions ****************** |BRIDLE| adds some functionality on top of the Zephyr build and configuration system. Those additions are automatically included into the Zephyr build system using a :ref:`zephyr:cmake_build_config_package`. You must be aware of these additions when you start writing your own Bridle applications. * The |BRIDLE| provides an additional :file:`boilerplate.cmake` that is automatically included when using the Zephyr CMake package in the :file:`CMakeLists.txt` file of your application:: find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) * The |BRIDLE| allows you to :ref:`create custom build type files ` instead of using a single :file:`prj.conf` file. .. * The |BRIDLE| build system extends Zephyr's with support for multi-image builds. .. You can find out more about these in the :ref:`ug_multi_image` section. .. * The |BRIDLE| adds a partition manager, responsible for partitioning the available flash memory.