@@ -28,26 +28,71 @@ 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
35+ set (ARTIFACT_PATH ${CMAKE_CURRENT_LIST_DIR} /_bin/${BOARD} )
36+ execute_process (COMMAND mkdir -p ${ARTIFACT_PATH} )
37+
38+ # Create post-build script for combined.bin / combined-ota.bin
39+ file (WRITE ${CMAKE_BINARY_DIR} /tinyuf2.postbuild.sh
40+ "#!/bin/bash\n "
41+ "echo \" Creating combined.bin\"\n "
42+ "esptool.py --chip ${IDF_TARGET} merge_bin --output combined.bin $(tr '\\ n' ' ' < ${CMAKE_BINARY_DIR} /flash_args)\n "
43+ )
44+
45+ # check if board is 4MB flash and create combined-ota.bin
46+ file (READ ${CMAKE_CURRENT_LIST_DIR} /boards/${BOARD} /sdkconfig BOARD_SDKCONFIG_CONTENTS)
47+ string (FIND ${BOARD_SDKCONFIG_CONTENTS} "partitions-4MB-noota.csv" MATCH_INDEX)
48+ if (NOT MATCH_INDEX EQUAL -1)
49+ file (APPEND ${CMAKE_BINARY_DIR} /tinyuf2.postbuild.sh
50+ "echo \" Creating combined-ota.bin\"\n "
51+ "gen_esp32part.py ${CMAKE_CURRENT_LIST_DIR} /partitions-4MB.csv ${CMAKE_BINARY_DIR} /partition_table/partitions-table-4MB-ota.bin\n "
52+ "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')\n "
53+ "cp combined_ota.bin ${ARTIFACT_PATH} /combined_ota.bin\n "
54+ )
55+ endif ()
56+
57+ add_custom_command (TARGET app POST_BUILD
58+ COMMAND bash ${CMAKE_BINARY_DIR} /tinyuf2.postbuild.sh
59+ VERBATIM
60+ )
61+
62+ # Post build: copy binaries for artifact
63+ add_custom_command (TARGET app POST_BUILD
64+ COMMAND ${CMAKE_COMMAND} -E echo "Copy binaries for artifact"
65+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /bootloader/bootloader.bin ${ARTIFACT_PATH} /bootloader.bin
66+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /ota_data_initial.bin ${ARTIFACT_PATH} /ota_data_initial.bin
67+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /partition_table/partition-table.bin ${ARTIFACT_PATH} /partition-table.bin
68+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /tinyuf2.bin ${ARTIFACT_PATH} /tinyuf2.bin
69+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /combined.bin ${ARTIFACT_PATH} /combined.bin
70+ VERBATIM
71+ )
72+
73+ # External project for self-update
3674# Post build: generate bootloader_bin.c for self-update and combined.bin
3775add_custom_command (TARGET app POST_BUILD
3876 COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR} /apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR} /tinyuf2.bin
3977 )
4078
41- # External project for self-update
4279externalproject_add(self_update
4380 SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} /apps/self_update
4481 BINARY_DIR ${CMAKE_BINARY_DIR} /self_update
45- # Modiying the list separator for the arguments, as such, we won't need to manually
82+ # Modifying the list separator for the arguments, as such, we won't need to manually
4683 # replace the new separator by the default ';' in the subproject
4784 CMAKE_ARGS -DBOARD=${BOARD}
4885 INSTALL_COMMAND ""
4986 BUILD_ALWAYS 1
50- DEPENDS app
87+ DEPENDS tinyuf2.elf
88+ )
89+
90+ # flash combined.bin
91+ add_custom_target (combined-flash
92+ DEPENDS tinyuf2.elf
93+ COMMAND ${CMAKE_COMMAND} -E echo "Flashing combined.bin"
94+ COMMAND esptool.py --chip ${IDF_TARGET} write_flash 0x0 combined.bin
95+ VERBATIM
5196 )
5297
5398# -------------------------------------------------------------
@@ -61,7 +106,7 @@ if (0)
61106 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /bootloader/bootloader.bin ${ARDUINO_VARIANT_DIR} /bootloader-tinyuf2.bin
62107 )
63108
64- add_custom_command (TARGET app POST_BUILD
109+ add_custom_command (TARGET tinyuf2.elf POST_BUILD
65110 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /tinyuf2.bin ${ARDUINO_VARIANT_DIR} /tinyuf2.bin
66111 )
67112endif ()
0 commit comments