41137a1c72
- 일반 빌드 시 build/merged.hex를 release/VesiScan-Basic_<FIRMWARE_VERSION>.hex 형식으로 자동 복사하도록 추가 - 생산용 HEX 파일을 펌웨어 버전별로 관리할 수 있게 함
107 lines
3.4 KiB
CMake
107 lines
3.4 KiB
CMake
if(SB_CONFIG_NETCORE_HCI_IPC)
|
|
set(
|
|
hci_ipc_EXTRA_CONF_FILE
|
|
"${APP_DIR}/sysbuild/hci_ipc.conf"
|
|
CACHE INTERNAL
|
|
"Extra configuration for the nRF5340 net core HCI image"
|
|
)
|
|
endif()
|
|
|
|
if(SB_CONFIG_BOOTLOADER_MCUBOOT)
|
|
list(APPEND mcuboot_EXTRA_CONF_FILE
|
|
"${APP_DIR}/sysbuild/mcuboot.conf"
|
|
)
|
|
list(REMOVE_DUPLICATES mcuboot_EXTRA_CONF_FILE)
|
|
set(
|
|
mcuboot_EXTRA_CONF_FILE
|
|
"${mcuboot_EXTRA_CONF_FILE}"
|
|
CACHE INTERNAL
|
|
"Extra configuration for the MCUboot image"
|
|
)
|
|
|
|
list(APPEND mcuboot_EXTRA_DTC_OVERLAY_FILE
|
|
"${APP_DIR}/sysbuild/mcuboot.overlay"
|
|
)
|
|
list(REMOVE_DUPLICATES mcuboot_EXTRA_DTC_OVERLAY_FILE)
|
|
set(
|
|
mcuboot_EXTRA_DTC_OVERLAY_FILE
|
|
"${mcuboot_EXTRA_DTC_OVERLAY_FILE}"
|
|
CACHE INTERNAL
|
|
"Extra devicetree overlay for the MCUboot image"
|
|
)
|
|
|
|
list(APPEND mcuboot_EXTRA_ZEPHYR_MODULES
|
|
"${APP_DIR}/sysbuild/mcuboot_power_hold_module"
|
|
)
|
|
list(REMOVE_DUPLICATES mcuboot_EXTRA_ZEPHYR_MODULES)
|
|
set(
|
|
mcuboot_EXTRA_ZEPHYR_MODULES
|
|
"${mcuboot_EXTRA_ZEPHYR_MODULES}"
|
|
CACHE INTERNAL
|
|
"Extra Zephyr modules for the MCUboot image"
|
|
)
|
|
endif()
|
|
|
|
# DFU ZIP 파일명에 MCUboot 서명 버전을 붙인 복사본 생성
|
|
set(APP_PRJ_CONF "${APP_DIR}/prj.conf")
|
|
if(EXISTS "${APP_PRJ_CONF}")
|
|
file(READ "${APP_PRJ_CONF}" APP_PRJ_CONF_TEXT)
|
|
|
|
if(APP_PRJ_CONF_TEXT MATCHES "CONFIG_MCUBOOT_IMGTOOL_SIGN_VERSION=\"([^\"]+)\"")
|
|
set(DFU_ZIP_VERSION "${CMAKE_MATCH_1}")
|
|
set(DFU_ZIP_SUFFIX "${DFU_ZIP_VERSION}")
|
|
|
|
# 0.0.1+3 형식은 사용자가 구분하기 쉽도록 1+3만 사용
|
|
if(DFU_ZIP_VERSION MATCHES "^0\\.0\\.([0-9]+\\+[^+]+)$")
|
|
set(DFU_ZIP_SUFFIX "${CMAKE_MATCH_1}")
|
|
endif()
|
|
|
|
# 파일명에 쓰기 어려운 문자는 밑줄로 치환
|
|
string(REGEX REPLACE "[^A-Za-z0-9_.+-]" "_" DFU_ZIP_SUFFIX "${DFU_ZIP_SUFFIX}")
|
|
|
|
set(DFU_ZIP_SOURCE "${CMAKE_BINARY_DIR}/dfu_application.zip")
|
|
set(DFU_ZIP_VERSIONED "${CMAKE_BINARY_DIR}/dfu_application_${DFU_ZIP_SUFFIX}.zip")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${DFU_ZIP_VERSIONED}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${DFU_ZIP_SOURCE}" "${DFU_ZIP_VERSIONED}"
|
|
DEPENDS "${DFU_ZIP_SOURCE}"
|
|
COMMENT "Generating versioned DFU ZIP ${DFU_ZIP_VERSIONED}"
|
|
VERBATIM
|
|
)
|
|
|
|
add_custom_target(dfu_application_versioned_zip ALL
|
|
DEPENDS "${DFU_ZIP_VERSIONED}"
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# Production HEX file name based on src/main.h FIRMWARE_VERSION.
|
|
set(APP_MAIN_H "${APP_DIR}/src/main.h")
|
|
if(EXISTS "${APP_MAIN_H}")
|
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${APP_MAIN_H}")
|
|
file(READ "${APP_MAIN_H}" APP_MAIN_H_TEXT)
|
|
|
|
if(APP_MAIN_H_TEXT MATCHES "#define[ \t]+FIRMWARE_VERSION[ \t]+\"([^\"]+)\"")
|
|
set(FW_HEX_VERSION "${CMAKE_MATCH_1}")
|
|
string(REGEX REPLACE "[^A-Za-z0-9_.+-]" "_" FW_HEX_VERSION "${FW_HEX_VERSION}")
|
|
|
|
set(FW_HEX_SOURCE "${CMAKE_BINARY_DIR}/merged.hex")
|
|
set(FW_HEX_RELEASE_DIR "${APP_DIR}/release")
|
|
set(FW_HEX_VERSIONED "${FW_HEX_RELEASE_DIR}/VesiScan-Basic_${FW_HEX_VERSION}.hex")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${FW_HEX_VERSIONED}"
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${FW_HEX_RELEASE_DIR}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FW_HEX_SOURCE}" "${FW_HEX_VERSIONED}"
|
|
DEPENDS "${FW_HEX_SOURCE}"
|
|
COMMENT "Generating firmware-versioned HEX ${FW_HEX_VERSIONED}"
|
|
VERBATIM
|
|
)
|
|
|
|
add_custom_target(firmware_versioned_hex ALL
|
|
DEPENDS "${FW_HEX_VERSIONED}"
|
|
)
|
|
endif()
|
|
endif()
|