cmake: zephyr: Misc. modernizations of the build scripts
Modernize and simplify the build scripts of the Zephyr
bootloader. Most notably, the new build scripts are targeting the
'zephyr_library_' API instead of the 'target_' API.
In addition to simplifying the build scripts, this permits us to be
automatically compatible with an upcoming change that will break the
'target_' API but not the 'zephyr_library_' API.
Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
diff --git a/boot/zephyr/CMakeLists.txt b/boot/zephyr/CMakeLists.txt
index 246e68b..5965f4a 100644
--- a/boot/zephyr/CMakeLists.txt
+++ b/boot/zephyr/CMakeLists.txt
@@ -70,68 +70,88 @@
# Path to mbed-tls' asn1 parser library.
set(MBEDTLS_ASN1_DIR "${MCUBOOT_DIR}/ext/mbedtls")
-target_include_directories(app PRIVATE include)
-target_include_directories(app PRIVATE targets)
-if(EXISTS "${APPLICATION_SOURCE_DIR}/targets/${BOARD}.h")
- target_compile_definitions(app PRIVATE "-DMCUBOOT_TARGET_CONFIG=\"${BOARD}.h\"")
+zephyr_library_include_directories(
+ include
+ targets
+ )
+if(EXISTS targets/${BOARD}.h)
+ zephyr_library_compile_definitions(MCUBOOT_TARGET_CONFIG="${BOARD}.h")
endif()
# Zephyr port-specific sources.
-target_sources(app PRIVATE main.c)
-target_sources(app PRIVATE flash_map_extended.c)
-target_sources(app PRIVATE os.c)
-target_sources(app PRIVATE keys.c)
+zephyr_library_sources(
+ main.c
+ flash_map_extended.c
+ os.c
+ keys.c
+ )
+
if(NOT DEFINED CONFIG_FLASH_PAGE_LAYOUT)
- target_sources(app PRIVATE flash_map_legacy.c)
+ zephyr_library_sources(
+ flash_map_legacy.c
+ )
endif()
# Generic bootutil sources and includes.
-target_include_directories(app PRIVATE "${BOOT_DIR}/bootutil/include")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/loader.c")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/bootutil_misc.c")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/image_validate.c")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/encrypted.c")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/image_rsa.c")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/image_ec256.c")
-target_sources(app PRIVATE "${BOOT_DIR}/bootutil/src/caps.c")
+zephyr_library_include_directories(${BOOT_DIR}/bootutil/include)
+zephyr_library_sources(
+ ${BOOT_DIR}/bootutil/src/loader.c
+ ${BOOT_DIR}/bootutil/src/bootutil_misc.c
+ ${BOOT_DIR}/bootutil/src/image_validate.c
+ ${BOOT_DIR}/bootutil/src/encrypted.c
+ ${BOOT_DIR}/bootutil/src/image_rsa.c
+ ${BOOT_DIR}/bootutil/src/image_ec256.c
+ ${BOOT_DIR}/bootutil/src/caps.c
+ )
if(CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256)
# When using ECDSA signatures, pull in our copy of the tinycrypt library.
- target_include_directories(app PRIVATE "${BOOT_DIR}/zephyr/include")
- target_include_directories(app PRIVATE "${TINYCRYPT_DIR}/include")
- target_include_directories(app PRIVATE "${MBEDTLS_ASN1_DIR}/include")
+ zephyr_library_include_directories(
+ ${BOOT_DIR}/zephyr/include
+ ${TINYCRYPT_DIR}/include
+ ${MBEDTLS_ASN1_DIR}/include
+ )
- target_sources(app PRIVATE "${TINYCRYPT_DIR}/source/ecc.c")
- target_sources(app PRIVATE "${TINYCRYPT_DIR}/source/ecc_dsa.c")
- target_sources(app PRIVATE "${TINYCRYPT_DIR}/source/sha256.c")
- target_sources(app PRIVATE "${TINYCRYPT_DIR}/source/utils.c")
+ zephyr_library_sources(
+ ${TINYCRYPT_DIR}/source/ecc.c
+ ${TINYCRYPT_DIR}/source/ecc_dsa.c
+ ${TINYCRYPT_DIR}/source/sha256.c
+ ${TINYCRYPT_DIR}/source/utils.c
+
+ # Additionally pull in just the ASN.1 parser from mbedTLS.
+ ${MBEDTLS_ASN1_DIR}/src/asn1parse.c
+ ${MBEDTLS_ASN1_DIR}/src/platform_util.c
+ )
# Since here we are not using Zephyr's mbedTLS but rather our own, we need
# to set MBEDTLS_CONFIG_FILE ourselves. When using Zephyr's copy, this
# variable is set by its Kconfig in the Zephyr codebase.
- target_compile_definitions(app PRIVATE MBEDTLS_CONFIG_FILE="${CMAKE_CURRENT_LIST_DIR}/include/mcuboot-mbedtls-cfg.h")
- # Additionally pull in just the ASN.1 parser from mbedTLS.
- target_sources(app PRIVATE "${MBEDTLS_ASN1_DIR}/src/asn1parse.c")
- target_sources(app PRIVATE "${MBEDTLS_ASN1_DIR}/src/platform_util.c")
+ zephyr_library_compile_definitions(
+ MBEDTLS_CONFIG_FILE="${CMAKE_CURRENT_LIST_DIR}/include/mcuboot-mbedtls-cfg.h"
+ )
elseif(CONFIG_BOOT_SIGNATURE_TYPE_RSA)
# Use mbedTLS provided by Zephyr for RSA signatures. (Its config file
# is set using Kconfig.)
zephyr_include_directories(include)
- target_include_directories(app PRIVATE $ENV{ZEPHYR_BASE}/ext/lib/crypto/mbedtls/include)
endif()
-if (CONFIG_MCUBOOT_SERIAL)
+if(CONFIG_MCUBOOT_SERIAL)
zephyr_sources(${BOOT_DIR}/zephyr/serial_adapter.c)
zephyr_sources(${BOOT_DIR}/boot_serial/src/boot_serial.c)
zephyr_include_directories(${BOOT_DIR}/bootutil/include)
zephyr_include_directories(${BOOT_DIR}/boot_serial/include)
zephyr_include_directories(include)
- zephyr_link_libraries_ifdef(CONFIG_TINYCBOR TINYCBOR)
- if (CONFIG_BOOT_ERASE_PROGRESSIVELY)
- zephyr_include_directories(${BOOT_DIR}/bootutil/src)
- endif()
+ zephyr_link_libraries_ifdef(
+ CONFIG_TINYCBOR
+ TINYCBOR
+ )
+
+ zephyr_include_directories_ifdef(
+ CONFIG_BOOT_ERASE_PROGRESSIVELY
+ ${BOOT_DIR}/bootutil/src
+ )
endif()
if(NOT CONFIG_BOOT_SIGNATURE_KEY_FILE STREQUAL "")
@@ -152,5 +172,5 @@
> ${GENERATED_PUBKEY}
DEPENDS ${KEY_FILE}
)
- target_sources(app PRIVATE "${GENERATED_PUBKEY}")
+ zephyr_library_sources(${GENERATED_PUBKEY})
endif()