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