CMake: link TF-M for both memory partition
This patch introduces the MCUBOOT_NO_SWAP compiler switch:
- Default value is False to preserve swapping functionality to be
default
- When disabling it then TF-M is built in one instance:
- tfm_sign.bin: linked to run in XIP mode from slot 0 memory
partition
- When enabling it then TF-M is built in two instances:
- tfm_sign_0.bin: linked to run in XIP mode from slot 0 memory
partition
- tfm_sign_1.bin: linked to run in XIP mode from slot 1 memory
partition
Change-Id: I2757601295c80a42aba351a6d89c17f78dad3a0f
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Co-Authored-By: Mate Toth-Pal <mate.toth-pal@arm.com>
Co-Authored-By: Gyorgy Szing <Gyorgy.Szing@arm.com>
diff --git a/bl2/ext/mcuboot/CMakeLists.txt b/bl2/ext/mcuboot/CMakeLists.txt
index fb0d4ca..0ab7dcd 100644
--- a/bl2/ext/mcuboot/CMakeLists.txt
+++ b/bl2/ext/mcuboot/CMakeLists.txt
@@ -90,10 +90,10 @@
include(${TFM_ROOT_DIR}/BuildMbedtls.cmake)
#Setting include directories
-embedded_include_directories(PATH ${TFM_ROOT_DIR} ABSOLUTE APPEND)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/bl2/ext/mcuboot/include ABSOLUTE APPEND)
-embedded_include_directories(PATH ${TFM_ROOT_DIR}/bl2/ext/mcuboot/bootutil/include/ ABSOLUTE APPEND)
-embedded_include_directories(PATH ${MBEDTLS_INSTALL_DIR}/include ABSOLUTE APPEND)
+embedded_target_include_directories(TARGET ${PROJECT_NAME} PATH ${TFM_ROOT_DIR} ABSOLUTE APPEND)
+embedded_target_include_directories(TARGET ${PROJECT_NAME} PATH ${TFM_ROOT_DIR}/bl2/ext/mcuboot/include ABSOLUTE APPEND)
+embedded_target_include_directories(TARGET ${PROJECT_NAME} PATH ${TFM_ROOT_DIR}/bl2/ext/mcuboot/bootutil/include/ ABSOLUTE APPEND)
+embedded_target_include_directories(TARGET ${PROJECT_NAME} PATH ${MBEDTLS_INSTALL_DIR}/include ABSOLUTE APPEND)
#Define linker file
if(NOT DEFINED BL2_LINKER_CONFIG)
@@ -108,6 +108,10 @@
add_executable(${PROJECT_NAME} ${ALL_SRC_ASM_BL2} ${ALL_SRC_C} ${ALL_SRC_CXX})
+#Set common compiler and linker flags
+config_setting_shared_compiler_flags(${PROJECT_NAME})
+config_setting_shared_linker_flags(${PROJECT_NAME})
+
#Add BL2 define to linker to resolve symbols in region_defs.h
embedded_set_target_link_defines(TARGET ${PROJECT_NAME} DEFINES "BL2")
@@ -125,7 +129,25 @@
MCUBOOT_VALIDATE_SLOT0
MCUBOOT_USE_FLASH_AREA_GET_SECTORS
MBEDTLS_CONFIG_FILE="config-boot.h"
- )
+ MCUBOOT_TARGET_CONFIG="flash_layout.h")
+
+if (MCUBOOT_NO_SWAP)
+ target_compile_definitions(${PROJECT_NAME} PRIVATE MCUBOOT_NO_SWAP)
+endif()
+
+#Set install location. Keep original value to avoid overriding command line settings.
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Default install location for MCUBoot." FORCE)
+endif()
+
+#Collect executables to common location: build/install/outputs/
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.axf
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.bin
+ DESTINATION outputs/${TARGET_PLATFORM}/)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.axf
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.bin
+ DESTINATION outputs/fvp/)
#Finally let cmake system apply changes after the whole project is defined.
embedded_project_end(${PROJECT_NAME})