|
4 | 4 | # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause |
5 | 5 | # |
6 | 6 |
|
7 | | -if(CONFIG_NCS_MCUBOOT_UUID_SINGLE_VID) |
8 | | - if(CONFIG_MCUBOOT_UUID_VID OR CONFIG_MCUBOOT_UUID_CID) |
9 | | - zephyr_library_sources( |
10 | | - uuid.c |
11 | | - ) |
12 | | - endif() |
| 7 | +set(edt_pickle ${CMAKE_BINARY_DIR}/zephyr/edt.pickle) |
| 8 | +set(gen_mcuboot_config_path |
| 9 | + "${ZEPHYR_MCUBOOT_MODULE_DIR}/scripts/gen_mcuboot_config.py" |
| 10 | +) |
| 11 | +set(gen_mcuboot_config_args |
| 12 | + --edt-pickle "${edt_pickle}" |
| 13 | + --output-dir "${CMAKE_CURRENT_BINARY_DIR}" |
| 14 | +) |
13 | 15 |
|
14 | | - # Generate VID value and raw value definition |
15 | | - if(CONFIG_MCUBOOT_UUID_VID OR CONFIG_MCUBOOT_UUID_CID) |
16 | | - if("${CONFIG_NCS_MCUBOOT_UUID_VID_VALUE}" STREQUAL "" AND CONFIG_MCUBOOT_UUID_VID) |
17 | | - message(WARNING "VID value not set") |
18 | | - return() |
19 | | - endif() |
20 | | - |
21 | | - string(REGEX MATCHALL "^([0-9A-F][0-9A-F]|\-)+$" match_parts "${CONFIG_NCS_MCUBOOT_UUID_VID_VALUE}") |
22 | | - if("${match_parts}" STREQUAL "${CONFIG_NCS_MCUBOOT_UUID_VID_VALUE}") |
23 | | - set(UUID_VID ${match_parts}) |
24 | | - else() |
25 | | - set(UUID_DNS_NAMESPACE 6ba7b810-9dad-11d1-80b4-00c04fd430c8) |
26 | | - string( |
27 | | - UUID UUID_VID |
28 | | - NAMESPACE ${UUID_DNS_NAMESPACE} |
29 | | - NAME ${CONFIG_NCS_MCUBOOT_UUID_VID_VALUE} |
30 | | - TYPE SHA1 UPPER |
31 | | - ) |
32 | | - endif() |
33 | | - |
34 | | - if(CONFIG_MCUBOOT_UUID_VID) |
35 | | - # Convert UUID into C array. |
36 | | - string(REGEX REPLACE "([0-9A-F][0-9A-F])\-?" "0x\\1, " UUID_VID_RAW "${UUID_VID}") |
37 | | - zephyr_compile_definitions(NCS_MCUBOOT_UUID_VID_VALUE=${UUID_VID_RAW}) |
38 | | - endif() |
39 | | - endif() |
| 16 | +if(CONFIG_MCUBOOT_UUID_VID) |
| 17 | + list(APPEND gen_mcuboot_config_args --uuid-vid-map) |
| 18 | +endif() |
40 | 19 |
|
41 | | - # Generate VID value(s) and raw value definition(s) |
42 | | - if(CONFIG_MCUBOOT_UUID_CID) |
43 | | - set(MCUBOOT_IMAGES_COUNT ${CONFIG_UPDATEABLE_IMAGE_NUMBER}) |
44 | | - foreach(image_id RANGE ${MCUBOOT_IMAGES_COUNT}) |
45 | | - if(CONFIG_NCS_MCUBOOT_UUID_CID_IMAGE_${image_id}) |
46 | | - if("${CONFIG_NCS_MCUBOOT_UUID_CID_IMAGE_${image_id}_VALUE}" STREQUAL "") |
47 | | - message(WARNING "CID value not set for image ${image_id}") |
48 | | - return() |
49 | | - endif() |
| 20 | +if(CONFIG_MCUBOOT_UUID_CID) |
| 21 | + list(APPEND gen_mcuboot_config_args --uuid-cid-map) |
| 22 | +endif() |
50 | 23 |
|
51 | | - # Check if RAW UUID format is used |
52 | | - string(REGEX MATCHALL "^([0-9A-F][0-9A-F]|\-)+$" match_parts "${CONFIG_NCS_MCUBOOT_UUID_CID_IMAGE_${image_id}_VALUE}") |
53 | | - if("${match_parts}" STREQUAL "${CONFIG_NCS_MCUBOOT_UUID_CID_IMAGE_${image_id}_VALUE}") |
54 | | - set(UUID_CID_IMAGE_${image_id} ${match_parts}) |
55 | | - elseif(NOT "${UUID_VID}" STREQUAL "") |
56 | | - # If not - generate UUID based on VID and CID values |
57 | | - string( |
58 | | - UUID UUID_CID_IMAGE_${image_id} |
59 | | - NAMESPACE ${UUID_VID} |
60 | | - NAME ${CONFIG_NCS_MCUBOOT_UUID_CID_IMAGE_${image_id}_VALUE} |
61 | | - TYPE SHA1 UPPER |
62 | | - ) |
63 | | - else() |
64 | | - message(WARNING "VID value not set, cannot generate CID for image ${image_id}") |
65 | | - return() |
66 | | - endif() |
| 24 | +if(CONFIG_MCUBOOT_UUID_VID OR CONFIG_MCUBOOT_UUID_CID) |
| 25 | + execute_process( |
| 26 | + COMMAND ${PYTHON_EXECUTABLE} ${gen_mcuboot_config_path} ${gen_mcuboot_config_args} |
| 27 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 28 | + COMMAND_ERROR_IS_FATAL ANY |
| 29 | + ) |
| 30 | + include(${CMAKE_CURRENT_BINARY_DIR}/uuid.cmake) |
| 31 | + target_link_libraries(uuid PUBLIC zephyr_interface) |
67 | 32 |
|
68 | | - # Convert UUID into C array. |
69 | | - string(REGEX REPLACE "([0-9A-F][0-9A-F])\-?" "0x\\1, " UUID_CID_IMAGE_${image_id}_RAW "${UUID_CID_IMAGE_${image_id}}") |
70 | | - zephyr_compile_definitions(NCS_MCUBOOT_UUID_CID_IMAGE_${image_id}_VALUE=${UUID_CID_IMAGE_${image_id}_RAW}) |
71 | | - endif() |
72 | | - endforeach() |
73 | | - endif() |
| 33 | + zephyr_library_sources( |
| 34 | + uuid.c |
| 35 | + ) |
| 36 | + zephyr_library_link_libraries(uuid) |
74 | 37 | endif() |
0 commit comments