Skip to content

Commit 63a0ce3

Browse files
authored
Merge pull request #75 from choco-technologies/copilot/fix-local-build-module-issue
Fix cmake build silently succeeding when DMOD modules are missing after download
2 parents 852d654 + 97d5645 commit 63a0ce3

1 file changed

Lines changed: 30 additions & 12 deletions

File tree

modules/CMakeLists.txt

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,13 @@ macro(append_main_module_download_commands LIST_VAR)
8383
list(APPEND ${LIST_VAR}
8484
COMMAND ${CMAKE_COMMAND} -E echo "Downloading main module ${DMBOOT_MAIN_MODULE} (manifest: ${DMBOOT_MANIFEST_URL})..."
8585
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+
COMMAND bash -c "test -f '${DMBOOT_MODULES_OUT_DIR}/${DMBOOT_MAIN_MODULE}.dmf' || { echo 'ERROR: Main module ${DMBOOT_MAIN_MODULE}.dmf was not downloaded to ${DMBOOT_MODULES_OUT_DIR}. The manifest may not contain the module entry or dmf-get encountered an error.'; exit 1; }"
8687
)
8788
else()
8889
list(APPEND ${LIST_VAR}
8990
COMMAND ${CMAKE_COMMAND} -E echo "Downloading main module ${DMBOOT_MAIN_MODULE}..."
9091
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}"
92+
COMMAND bash -c "test -f '${DMBOOT_MODULES_OUT_DIR}/${DMBOOT_MAIN_MODULE}.dmf' || { echo 'ERROR: Main module ${DMBOOT_MAIN_MODULE}.dmf was not downloaded to ${DMBOOT_MODULES_OUT_DIR}. Check if dmf-get encountered an error.'; exit 1; }"
9193
)
9294
endif()
9395
endmacro()
@@ -230,17 +232,33 @@ if(NOT TODMP)
230232
endif()
231233
set(DMBOOT_MODULES_DMP "${CMAKE_BINARY_DIR}/modules.dmp")
232234

233-
add_custom_command(
234-
OUTPUT "${DMBOOT_MODULES_DMP}"
235-
WORKING_DIRECTORY ${DMBOOT_MODULES_OUT_DIR}
236-
COMMAND ${CMAKE_COMMAND} -E echo "Checking if modules directory contains files..."
237-
COMMAND ${CMAKE_COMMAND} -E echo "Contents of ${DMBOOT_MODULES_OUT_DIR}:"
238-
COMMAND ls -la ${DMBOOT_MODULES_OUT_DIR} || ${CMAKE_COMMAND} -E echo "Directory is empty or does not exist"
239-
COMMAND bash -c "if ls ${DMBOOT_MODULES_OUT_DIR}/*.dmf 1> /dev/null 2>&1; then ${TODMP} modules ${DMBOOT_MODULES_OUT_DIR} ${DMBOOT_MODULES_DMP} ${DMBOOT_MAIN_MODULE}; ls ${DMBOOT_MODULES_OUT_DIR}/*.dmf; else echo 'No .dmf files found'; fi"
240-
DEPENDS download_modules
241-
COMMENT "Creating modules dmp file from flash modules (if any exist)..."
242-
VERBATIM
243-
)
235+
# When a main module is expected, fail the build if no .dmf files are found
236+
# after the download step. Otherwise, just print a notice and succeed.
237+
if(DMBOOT_MAIN_MODULE)
238+
add_custom_command(
239+
OUTPUT "${DMBOOT_MODULES_DMP}"
240+
WORKING_DIRECTORY ${DMBOOT_MODULES_OUT_DIR}
241+
COMMAND ${CMAKE_COMMAND} -E echo "Checking if modules directory contains files..."
242+
COMMAND ${CMAKE_COMMAND} -E echo "Contents of ${DMBOOT_MODULES_OUT_DIR}:"
243+
COMMAND ls -la ${DMBOOT_MODULES_OUT_DIR} || ${CMAKE_COMMAND} -E echo "Directory is empty or does not exist"
244+
COMMAND bash -c "if ls ${DMBOOT_MODULES_OUT_DIR}/*.dmf 1> /dev/null 2>&1; then ${TODMP} modules ${DMBOOT_MODULES_OUT_DIR} ${DMBOOT_MODULES_DMP} ${DMBOOT_MAIN_MODULE}; ls ${DMBOOT_MODULES_OUT_DIR}/*.dmf; else echo 'ERROR: No .dmf files found in ${DMBOOT_MODULES_OUT_DIR} but main module ${DMBOOT_MAIN_MODULE} was expected. Module download may have failed.'; exit 1; fi"
245+
DEPENDS download_modules
246+
COMMENT "Creating modules dmp file from flash modules (if any exist)..."
247+
VERBATIM
248+
)
249+
else()
250+
add_custom_command(
251+
OUTPUT "${DMBOOT_MODULES_DMP}"
252+
WORKING_DIRECTORY ${DMBOOT_MODULES_OUT_DIR}
253+
COMMAND ${CMAKE_COMMAND} -E echo "Checking if modules directory contains files..."
254+
COMMAND ${CMAKE_COMMAND} -E echo "Contents of ${DMBOOT_MODULES_OUT_DIR}:"
255+
COMMAND ls -la ${DMBOOT_MODULES_OUT_DIR} || ${CMAKE_COMMAND} -E echo "Directory is empty or does not exist"
256+
COMMAND bash -c "if ls ${DMBOOT_MODULES_OUT_DIR}/*.dmf 1> /dev/null 2>&1; then ${TODMP} modules ${DMBOOT_MODULES_OUT_DIR} ${DMBOOT_MODULES_DMP}; ls ${DMBOOT_MODULES_OUT_DIR}/*.dmf; else echo 'No .dmf files found, skipping DMP creation'; fi"
257+
DEPENDS download_modules
258+
COMMENT "Creating modules dmp file from flash modules (if any exist)..."
259+
VERBATIM
260+
)
261+
endif()
244262
add_custom_target(prepare_modules_dmp ALL
245263
DEPENDS "${DMBOOT_MODULES_DMP}"
246-
)
264+
)

0 commit comments

Comments
 (0)