@@ -32,23 +32,36 @@ cmake_print_variables(GIT_VERSION GIT_SUBMODULE_VERSIONS)
3232
3333project (tinyuf2)
3434
35- # Post build: generate bootloader_bin.c for self-update and combined.bin
36- add_custom_command (TARGET tinyuf2.elf POST_BUILD
37- COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR} /apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR} /tinyuf2.bin
38- )
35+ set (ARTIFACT_PATH ${CMAKE_CURRENT_LIST_DIR} /_bin/${BOARD} )
36+ execute_process (COMMAND mkdir -p ${ARTIFACT_PATH} )
3937
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)"
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
4459 VERBATIM
4560 )
4661
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
62+ # Post build: copy binaries for artifact
63+ add_custom_command (TARGET app POST_BUILD
5064 COMMAND ${CMAKE_COMMAND} -E echo "Copy binaries for artifact"
51- COMMAND mkdir -p ${ARTIFACT_PATH}
5265 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /bootloader/bootloader.bin ${ARTIFACT_PATH} /bootloader.bin
5366 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /ota_data_initial.bin ${ARTIFACT_PATH} /ota_data_initial.bin
5467 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR} /partition_table/partition-table.bin ${ARTIFACT_PATH} /partition-table.bin
@@ -57,21 +70,12 @@ add_custom_command(TARGET tinyuf2.elf POST_BUILD
5770 VERBATIM
5871 )
5972
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-
7473# External project for self-update
74+ # Post build: generate bootloader_bin.c for self-update and combined.bin
75+ add_custom_command (TARGET app POST_BUILD
76+ COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR} /apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR} /tinyuf2.bin
77+ )
78+
7579externalproject_add (self_update
7680 SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} /apps/self_update
7781 BINARY_DIR ${CMAKE_BINARY_DIR} /self_update
0 commit comments