11# CMakeLists.txt for building mcuboot as a Zephyr project
22#
33# Copyright (c) 2017 Open Source Foundries Limited
4+ # Copyright (c) 2022 Legrand North America, LLC.
45#
56# SPDX-License-Identifier: Apache-2.0
67
@@ -44,230 +45,10 @@ endmacro()
4445find_package (Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE} )
4546project (NONE)
4647
47- # Path to "boot" subdirectory of repository root.
48- get_filename_component (BOOT_DIR ${APPLICATION_SOURCE_DIR} DIRECTORY )
49- # Path to top-level repository root directory.
50- get_filename_component (MCUBOOT_DIR ${BOOT_DIR} DIRECTORY )
51- # Path to tinycrypt library source subdirectory of MCUBOOT_DIR.
52- set (TINYCRYPT_DIR "${MCUBOOT_DIR} /ext/tinycrypt/lib" )
53- assert_exists(TINYCRYPT_DIR)
54- set (TINYCRYPT_SHA512_DIR "${MCUBOOT_DIR} /ext/tinycrypt-sha512/lib" )
55- assert_exists(TINYCRYPT_SHA512_DIR)
56- # Path to crypto-fiat
57- set (FIAT_DIR "${MCUBOOT_DIR} /ext/fiat" )
58- assert_exists(FIAT_DIR)
59- # Path to mbed-tls' asn1 parser library.
60- set (MBEDTLS_ASN1_DIR "${MCUBOOT_DIR} /ext/mbedtls-asn1" )
61- assert_exists(MBEDTLS_ASN1_DIR)
62- set (NRF_DIR "${MCUBOOT_DIR} /ext/nrf" )
63-
64- if (CONFIG_BOOT_USE_NRF_CC310_BL)
65- set (NRFXLIB_DIR ${ZEPHYR_BASE} /../nrfxlib)
66- if (NOT EXISTS ${NRFXLIB_DIR} )
67- message (FATAL_ERROR "
68- ------------------------------------------------------------------------
69- No such file or directory: ${NRFXLIB_DIR}
70- The current configuration enables nRF CC310 crypto accelerator hardware
71- with the `CONFIG_BOOT_USE_NRF_CC310_BL` option. Please follow
72- `ext/nrf/README.md` guide to fix your setup or use tinycrypt instead of
73- the HW accelerator.
74- To use the tinycrypt set `CONFIG_BOOT_ECDSA_TINYCRYPT` to y.
75- ------------------------------------------------------------------------" )
76- endif ()
77- # Don't include this if we are using west
78- add_subdirectory (${NRFXLIB_DIR} ${PROJECT_BINARY_DIR} /nrfxlib)
79- endif ()
80-
81- zephyr_library_include_directories(
82- include
83- targets
84- )
85- if (EXISTS targets/${BOARD} .h)
86- zephyr_library_compile_definitions(MCUBOOT_TARGET_CONFIG="${BOARD} .h" )
87- endif ()
88-
89- # Zephyr port-specific sources.
90- zephyr_library_sources(
91- main.c
92- flash_map_extended.c
93- os.c
48+ target_sources (app PRIVATE
9449 keys.c
9550 )
9651
97- if (DEFINED CONFIG_ENABLE_MGMT_PERUSER)
98- zephyr_library_sources(
99- boot_serial_extensions.c
100- )
101- endif ()
102-
103- if (NOT DEFINED CONFIG_FLASH_PAGE_LAYOUT)
104- zephyr_library_sources(
105- flash_map_legacy.c
106- )
107- endif ()
108-
109- # Generic bootutil sources and includes.
110- zephyr_library_include_directories(${BOOT_DIR} /bootutil/include )
111- zephyr_library_sources(
112- ${BOOT_DIR} /bootutil/src/image_validate.c
113- ${BOOT_DIR} /bootutil/src/tlv.c
114- ${BOOT_DIR} /bootutil/src/encrypted.c
115- ${BOOT_DIR} /bootutil/src/image_rsa.c
116- ${BOOT_DIR} /bootutil/src/image_ec256.c
117- ${BOOT_DIR} /bootutil/src/image_ed25519.c
118- ${BOOT_DIR} /bootutil/src/bootutil_misc.c
119- ${BOOT_DIR} /bootutil/src/fault_injection_hardening.c
120- )
121-
122- # library which might be common source code for MCUBoot and an application
123- zephyr_link_libraries(MCUBOOT_BOOTUTIL)
124-
125- if (CONFIG_BOOT_FIH_PROFILE_HIGH)
126- zephyr_library_sources(
127- ${BOOT_DIR} /bootutil/src/fault_injection_hardening_delay_rng_mbedtls.c
128- )
129- endif ()
130-
131- if (CONFIG_SINGLE_APPLICATION_SLOT)
132- zephyr_library_sources(
133- ${BOOT_DIR} /zephyr/single_loader.c
134- )
135- zephyr_library_include_directories(${BOOT_DIR} /bootutil/src)
136- else ()
137- zephyr_library_sources(
138- ${BOOT_DIR} /bootutil/src/loader.c
139- ${BOOT_DIR} /bootutil/src/swap_misc.c
140- ${BOOT_DIR} /bootutil/src/swap_scratch.c
141- ${BOOT_DIR} /bootutil/src/swap_move.c
142- ${BOOT_DIR} /bootutil/src/caps.c
143- )
144- endif ()
145-
146- if (CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256 OR CONFIG_BOOT_ENCRYPT_EC256 OR CONFIG_BOOT_SERIAL_ENCRYPT_EC256)
147- zephyr_library_include_directories(
148- ${MBEDTLS_ASN1_DIR} /include
149- )
150- zephyr_library_sources(
151- # Additionally pull in just the ASN.1 parser from mbedTLS.
152- ${MBEDTLS_ASN1_DIR} /src/asn1parse.c
153- ${MBEDTLS_ASN1_DIR} /src/platform_util.c
154- )
155- if (CONFIG_BOOT_USE_TINYCRYPT)
156- # When using ECDSA signatures, pull in our copy of the tinycrypt library.
157- zephyr_library_include_directories(
158- ${BOOT_DIR} /zephyr/include
159- ${TINYCRYPT_DIR} /include
160- )
161- zephyr_include_directories(${TINYCRYPT_DIR} /include )
162-
163- zephyr_library_sources(
164- ${TINYCRYPT_DIR} /source /ecc.c
165- ${TINYCRYPT_DIR} /source /ecc_dsa.c
166- ${TINYCRYPT_DIR} /source /sha256.c
167- ${TINYCRYPT_DIR} /source /utils.c
168- )
169- elseif (CONFIG_BOOT_USE_NRF_CC310_BL)
170- zephyr_library_sources(${NRF_DIR} /cc310_glue.c)
171- zephyr_library_include_directories(${NRF_DIR} )
172- zephyr_link_libraries(nrfxlib_crypto)
173- endif ()
174-
175- # Since here we are not using Zephyr's mbedTLS but rather our own, we need
176- # to set MBEDTLS_CONFIG_FILE ourselves. When using Zephyr's copy, this
177- # variable is set by its Kconfig in the Zephyr codebase.
178- zephyr_library_compile_definitions(
179- MBEDTLS_CONFIG_FILE="${CMAKE_CURRENT_LIST_DIR} /include/mcuboot-mbedtls-cfg.h"
180- )
181- elseif (CONFIG_BOOT_SIGNATURE_TYPE_NONE)
182- zephyr_library_include_directories(
183- ${BOOT_DIR} /zephyr/include
184- ${TINYCRYPT_DIR} /include
185- )
186-
187- zephyr_library_sources(
188- ${TINYCRYPT_DIR} /source /sha256.c
189- ${TINYCRYPT_DIR} /source /utils.c
190- )
191- elseif (CONFIG_BOOT_SIGNATURE_TYPE_RSA)
192- # Use mbedTLS provided by Zephyr for RSA signatures. (Its config file
193- # is set using Kconfig.)
194- zephyr_include_directories(include )
195- if (CONFIG_BOOT_ENCRYPT_RSA)
196- set_source_files_properties (
197- ${BOOT_DIR} /bootutil/src/encrypted.c
198- PROPERTIES
199- INCLUDE_DIRECTORIES ${ZEPHYR_MBEDTLS_MODULE_DIR} /library
200- )
201- endif ()
202- elseif (CONFIG_BOOT_SIGNATURE_TYPE_ED25519 OR CONFIG_BOOT_ENCRYPT_X25519)
203- if (CONFIG_BOOT_USE_TINYCRYPT)
204- zephyr_library_include_directories(
205- ${MBEDTLS_ASN1_DIR} /include
206- ${BOOT_DIR} /zephyr/include
207- ${TINYCRYPT_DIR} /include
208- ${TINYCRYPT_SHA512_DIR} /include
209- )
210- zephyr_library_sources(
211- ${TINYCRYPT_DIR} /source /sha256.c
212- ${TINYCRYPT_DIR} /source /utils.c
213- ${TINYCRYPT_SHA512_DIR} /source /sha512.c
214- # Additionally pull in just the ASN.1 parser from mbedTLS.
215- ${MBEDTLS_ASN1_DIR} /src/asn1parse.c
216- ${MBEDTLS_ASN1_DIR} /src/platform_util.c
217- )
218- zephyr_library_compile_definitions(
219- MBEDTLS_CONFIG_FILE="${CMAKE_CURRENT_LIST_DIR} /include/mcuboot-mbedtls-cfg.h"
220- )
221- else ()
222- zephyr_include_directories(include )
223- endif ()
224-
225- zephyr_library_include_directories(
226- ${BOOT_DIR} /zephyr/include
227- ${FIAT_DIR} /include /
228- )
229-
230- zephyr_library_sources(
231- ${FIAT_DIR} /src/curve25519.c
232- )
233- endif ()
234-
235- if (CONFIG_BOOT_ENCRYPT_EC256 OR CONFIG_BOOT_ENCRYPT_X25519 OR CONFIG_BOOT_SERIAL_ENCRYPT_EC256)
236- zephyr_library_sources(
237- ${TINYCRYPT_DIR} /source /aes_encrypt.c
238- ${TINYCRYPT_DIR} /source /aes_decrypt.c
239- ${TINYCRYPT_DIR} /source /ctr_mode.c
240- ${TINYCRYPT_DIR} /source /hmac.c
241- ${TINYCRYPT_DIR} /source /ecc_dh.c
242- )
243- endif ()
244-
245- if (CONFIG_BOOT_ENCRYPT_EC256)
246- zephyr_library_sources(
247- ${TINYCRYPT_DIR} /source /ecc_dh.c
248- )
249- endif ()
250-
251- if (CONFIG_MCUBOOT_SERIAL)
252- zephyr_sources(${BOOT_DIR} /zephyr/serial_adapter.c)
253- zephyr_sources(${BOOT_DIR} /boot_serial/src/boot_serial.c)
254- zephyr_sources(${BOOT_DIR} /boot_serial/src/serial_recovery_cbor.c)
255- zephyr_sources(${BOOT_DIR} /boot_serial/src/zcbor_decode.c)
256- zephyr_sources(${BOOT_DIR} /boot_serial/src/zcbor_encode.c)
257- zephyr_sources(${BOOT_DIR} /boot_serial/src/zcbor_common.c)
258-
259- zephyr_sources_ifdef(CONFIG_BOOT_MGMT_ECHO ${BOOT_DIR} /boot_serial/src/serial_recovery_echo.c)
260-
261- zephyr_include_directories(${BOOT_DIR} /bootutil/include )
262- zephyr_include_directories(${BOOT_DIR} /boot_serial/include )
263- zephyr_include_directories(include )
264-
265- zephyr_include_directories_ifdef(
266- CONFIG_BOOT_ERASE_PROGRESSIVELY
267- ${BOOT_DIR} /bootutil/src
268- )
269- endif ()
270-
27152if (NOT CONFIG_BOOT_SIGNATURE_KEY_FILE STREQUAL "" )
27253 # CONF_FILE points to the KConfig configuration files of the bootloader.
27354 foreach (filepath ${CONF_FILE} )
@@ -288,7 +69,7 @@ if(NOT CONFIG_BOOT_SIGNATURE_KEY_FILE STREQUAL "")
28869 (EXISTS ${CONF_DIR} /${CONFIG_BOOT_SIGNATURE_KEY_FILE} ))
28970 set (KEY_FILE ${CONF_DIR} /${CONFIG_BOOT_SIGNATURE_KEY_FILE} )
29071 else ()
291- set (KEY_FILE ${MCUBOOT_DIR } /${CONFIG_BOOT_SIGNATURE_KEY_FILE} )
72+ set (KEY_FILE ${ZEPHYR_MCUBOOT_MODULE_DIR } /${CONFIG_BOOT_SIGNATURE_KEY_FILE} )
29273 endif ()
29374 message ("MCUBoot bootloader key file: ${KEY_FILE} " )
29475
@@ -297,7 +78,7 @@ if(NOT CONFIG_BOOT_SIGNATURE_KEY_FILE STREQUAL "")
29778 OUTPUT ${GENERATED_PUBKEY}
29879 COMMAND
29980 ${PYTHON_EXECUTABLE}
300- ${MCUBOOT_DIR } /scripts/imgtool.py
81+ ${ZEPHYR_MCUBOOT_MODULE_DIR } /scripts/imgtool.py
30182 getpub
30283 -k
30384 ${KEY_FILE}
@@ -306,49 +87,3 @@ if(NOT CONFIG_BOOT_SIGNATURE_KEY_FILE STREQUAL "")
30687 )
30788 zephyr_library_sources(${GENERATED_PUBKEY} )
30889endif ()
309-
310- if (CONFIG_BOOT_ENCRYPTION_KEY_FILE AND NOT CONFIG_BOOT_ENCRYPTION_KEY_FILE STREQUAL "" )
311- # CONF_FILE points to the KConfig configuration files of the bootloader.
312- unset (CONF_DIR)
313- foreach (filepath ${CONF_FILE} )
314- file (READ ${filepath} temp_text)
315- string (FIND "${temp_text} " ${CONFIG_BOOT_ENCRYPTION_KEY_FILE} match)
316- if (${match} GREATER_EQUAL 0)
317- if (NOT DEFINED CONF_DIR)
318- get_filename_component (CONF_DIR ${filepath} DIRECTORY )
319- else ()
320- message (FATAL_ERROR "Encryption key file defined in multiple conf files" )
321- endif ()
322- endif ()
323- endforeach ()
324-
325- if (IS_ABSOLUTE ${CONFIG_BOOT_ENCRYPTION_KEY_FILE} )
326- set (KEY_FILE ${CONFIG_BOOT_ENCRYPTION_KEY_FILE} )
327- elseif ((DEFINED CONF_DIR) AND
328- (EXISTS ${CONF_DIR} /${CONFIG_BOOT_ENCRYPTION_KEY_FILE} ))
329- set (KEY_FILE ${CONF_DIR} /${CONFIG_BOOT_ENCRYPTION_KEY_FILE} )
330- else ()
331- set (KEY_FILE ${MCUBOOT_DIR} /${CONFIG_BOOT_ENCRYPTION_KEY_FILE} )
332- endif ()
333- message ("MCUBoot bootloader encryption key file: ${KEY_FILE} " )
334-
335- set (GENERATED_ENCKEY ${ZEPHYR_BINARY_DIR} /autogen-enckey.c)
336- add_custom_command (
337- OUTPUT ${GENERATED_ENCKEY}
338- COMMAND
339- ${PYTHON_EXECUTABLE}
340- ${MCUBOOT_DIR} /scripts/imgtool.py
341- getpriv
342- -k
343- ${KEY_FILE}
344- > ${GENERATED_ENCKEY}
345- DEPENDS ${KEY_FILE}
346- )
347- zephyr_library_sources(${GENERATED_ENCKEY} )
348- endif ()
349-
350- if (CONFIG_MCUBOOT_CLEANUP_ARM_CORE)
351- zephyr_library_sources(
352- ${BOOT_DIR} /zephyr/arm_cleanup.c
353- )
354- endif ()
0 commit comments