@@ -77,6 +77,21 @@ endif()
7777set (DMBOOT_MODULES_OUT_DIR "${CMAKE_BINARY_DIR} /dmf" )
7878set (DMBOOT_MODULES_MARKER_FILE "${DMBOOT_MODULES_OUT_DIR} /.download_complete" )
7979
80+ # Helper macro to append main module download commands to a list
81+ macro (append_main_module_download_commands LIST_VAR )
82+ if (DMBOOT_MANIFEST_URL)
83+ list (APPEND ${LIST_VAR}
84+ COMMAND ${CMAKE_COMMAND} -E echo "Downloading main module ${DMBOOT_MAIN_MODULE} (manifest: ${DMBOOT_MANIFEST_URL} )..."
85+ COMMAND ${DMF_GET} ${DMBOOT_MAIN_MODULE} -m "${DMBOOT_MANIFEST_URL} " -o "${DMBOOT_MODULES_OUT_DIR} " -t "${DMOD_TOOLS_NAME} " --cpu-family "${DMBOOT_MCU_SERIES} " -y --type dmf --config-dir "${DMBOOT_CONFIG_DIR} "
86+ )
87+ else ()
88+ list (APPEND ${LIST_VAR}
89+ COMMAND ${CMAKE_COMMAND} -E echo "Downloading main module ${DMBOOT_MAIN_MODULE} ..."
90+ COMMAND ${DMF_GET} ${DMBOOT_MAIN_MODULE} -o "${DMBOOT_MODULES_OUT_DIR} " -t "${DMOD_TOOLS_NAME} " --cpu-family "${DMBOOT_MCU_SERIES} " -y --type dmf --config-dir "${DMBOOT_CONFIG_DIR} "
91+ )
92+ endif ()
93+ endmacro ()
94+
8095if (DMBOOT_FLASH_DMD_FILES)
8196 # Build a sequence of download commands, one per flash.dmd file
8297 set (_FLASH_DOWNLOAD_COMMANDS
@@ -96,6 +111,12 @@ if(DMBOOT_FLASH_DMD_FILES)
96111 )
97112 endif ()
98113 endforeach ()
114+
115+ # Download main module if specified (at the end of installation)
116+ if (DMBOOT_MAIN_MODULE)
117+ append_main_module_download_commands (_FLASH_DOWNLOAD_COMMANDS )
118+ endif ()
119+
99120 list (APPEND _FLASH_DOWNLOAD_COMMANDS
100121 COMMAND ${CMAKE_COMMAND} -E touch "${DMBOOT_MODULES_MARKER_FILE} "
101122 )
@@ -111,6 +132,25 @@ if(DMBOOT_FLASH_DMD_FILES)
111132 DEPENDS "${DMBOOT_MODULES_MARKER_FILE} "
112133 )
113134 message (STATUS "Flash DMD files: ${DMBOOT_FLASH_DMD_FILES} " )
135+ elseif (DMBOOT_MAIN_MODULE)
136+ # No flash.dmd files configured. Downloading main module only.
137+ message (STATUS "No flash.dmd files configured. Downloading main module only: ${DMBOOT_MAIN_MODULE} " )
138+ set (_MAIN_MODULE_COMMANDS
139+ COMMAND ${CMAKE_COMMAND} -E make_directory "${DMBOOT_MODULES_OUT_DIR} "
140+ )
141+ append_main_module_download_commands (_MAIN_MODULE_COMMANDS )
142+ list (APPEND _MAIN_MODULE_COMMANDS
143+ COMMAND ${CMAKE_COMMAND} -E touch "${DMBOOT_MODULES_MARKER_FILE} "
144+ )
145+ add_custom_command (
146+ OUTPUT "${DMBOOT_MODULES_MARKER_FILE} "
147+ ${_MAIN_MODULE_COMMANDS}
148+ COMMENT "Downloading main module: ${DMBOOT_MAIN_MODULE} "
149+ VERBATIM
150+ )
151+ add_custom_target (download_modules ALL
152+ DEPENDS "${DMBOOT_MODULES_MARKER_FILE} "
153+ )
114154else ()
115155 message (WARNING "No flash.dmd files found. Skipping flash module download." )
116156 add_custom_target (download_modules ALL )
0 commit comments