@@ -28,26 +28,67 @@ add_compile_definitions(
2828 UF2_VERSION_BASE= "${GIT_VERSION} "
2929 UF2_VERSION= "${GIT_VERSION} - ${GIT_SUBMODULE_VERSIONS} "
3030 )
31-
3231cmake_print_variables (GIT_VERSION GIT_SUBMODULE_VERSIONS )
3332
3433project (tinyuf2)
3534
3635# Post build: generate bootloader_bin.c for self-update and combined.bin
37- add_custom_command (TARGET app POST_BUILD
36+ add_custom_command (TARGET tinyuf2.elf POST_BUILD
3837 COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR} /apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR} /tinyuf2.bin
3938 )
4039
40+ add_custom_command (TARGET tinyuf2.elf POST_BUILD
41+ BYPRODUCTS ${CMAKE_BINARY_DIR} /combined.bin
42+ COMMAND ${CMAKE_COMMAND} -E echo "Creating combined.bin"
43+ COMMAND bash -c "esptool.py --chip ${IDF_TARGET} merge_bin --output combined.bin $(tr '\\ n' ' ' < ${CMAKE_BINARY_DIR} /flash_args)"
44+ VERBATIM
45+ )
46+
47+ ## Post build: copy binaries for artifact
48+ set (ARTIFACT_PATH ${CMAKE_CURRENT_LIST_DIR} /_bin/${BOARD} )
49+ add_custom_command (TARGET tinyuf2.elf POST_BUILD
50+ COMMAND ${CMAKE_COMMAND} -E echo "Copy binaries for artifact"
51+ COMMAND mkdir -p ${ARTIFACT_PATH}
52+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /bootloader/bootloader.bin ${ARTIFACT_PATH} /bootloader.bin
53+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /ota_data_initial.bin ${ARTIFACT_PATH} /ota_data_initial.bin
54+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /partition_table/partition-table.bin ${ARTIFACT_PATH} /partition-table.bin
55+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /tinyuf2.bin ${ARTIFACT_PATH} /tinyuf2.bin
56+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /combined.bin ${ARTIFACT_PATH} /combined.bin
57+ VERBATIM
58+ )
59+
60+ # check if board is 4MB flash and create combined-ota.bin
61+ file (READ ${CMAKE_CURRENT_LIST_DIR} /boards/${BOARD}/sdkconfig BOARD_SDKCONFIG_CONTENTS )
62+ string (FIND ${BOARD_SDKCONFIG_CONTENTS} "partitions-4MB-noota.csv" MATCH_INDEX)
63+ if (NOT MATCH_INDEX EQUAL -1)
64+ add_custom_command (TARGET tinyuf2.elf POST_BUILD
65+ BYPRODUCTS ${CMAKE_BINARY_DIR} /combined_ota.bin
66+ COMMAND ${CMAKE_COMMAND} -E echo "Creating combined_ota.bin"
67+ COMMAND gen_esp32part.py ${CMAKE_CURRENT_LIST_DIR} /partitions-4MB.csv ${CMAKE_BINARY_DIR} /partition_table/partitions-table-4MB-ota.bin
68+ COMMAND bash -c "esptool.py --chip ${IDF_TARGET} merge_bin --output combined_ota.bin $(tr '\\ n' ' ' < ${CMAKE_BINARY_DIR} /flash_args | sed 's/partition-table.bin/partitions-table-4MB-ota.bin/g')"
69+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /combined_ota.bin ${ARTIFACT_PATH} /combined_ota.bin
70+ VERBATIM
71+ )
72+ endif ()
73+
4174# External project for self-update
4275externalproject_add (self_update
4376 SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} /apps/self_update
4477 BINARY_DIR ${CMAKE_BINARY_DIR} /self_update
45- # Modiying the list separator for the arguments, as such, we won't need to manually
78+ # Modifying the list separator for the arguments, as such, we won't need to manually
4679 # replace the new separator by the default ';' in the subproject
4780 CMAKE_ARGS -DBOARD=${BOARD}
4881 INSTALL_COMMAND ""
4982 BUILD_ALWAYS 1
50- DEPENDS app
83+ DEPENDS tinyuf2.elf
84+ )
85+
86+ # flash combined.bin
87+ add_custom_target (combined-flash
88+ DEPENDS tinyuf2.elf
89+ COMMAND ${CMAKE_COMMAND} -E echo "Flashing combined.bin"
90+ COMMAND esptool.py --chip ${IDF_TARGET} write_flash 0x0 combined.bin
91+ VERBATIM
5192 )
5293
5394# -------------------------------------------------------------
@@ -61,7 +102,7 @@ if (0)
61102 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /bootloader/bootloader.bin ${ARDUINO_VARIANT_DIR} /bootloader-tinyuf2.bin
62103 )
63104
64- add_custom_command (TARGET app POST_BUILD
105+ add_custom_command (TARGET tinyuf2.elf POST_BUILD
65106 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /tinyuf2.bin ${ARDUINO_VARIANT_DIR} /tinyuf2.bin
66107 )
67108endif ()
0 commit comments