Skip to content

Commit 3658478

Browse files
committed
use postbuild script to generate combined/ota.bin to workaround $ escape with ninja target
1 parent 61b051a commit 3658478

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

ports/espressif/CMakeLists.txt

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,32 @@ cmake_print_variables(GIT_VERSION GIT_SUBMODULE_VERSIONS)
3232

3333
project(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+
# Create post-build script for combined.bin / combined-ota.bin
36+
file(WRITE ${CMAKE_BINARY_DIR}/tinyuf2.postbuild.sh
37+
"#!/bin/bash\n"
38+
"echo \"Creating combined.bin\"\n"
39+
"esptool.py --chip ${IDF_TARGET} merge_bin --output combined.bin $(tr '\\n' ' ' < ${CMAKE_BINARY_DIR}/flash_args)\n"
40+
)
3941

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)"
42+
# check if board is 4MB flash and create combined-ota.bin
43+
file(READ ${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/sdkconfig BOARD_SDKCONFIG_CONTENTS)
44+
string(FIND ${BOARD_SDKCONFIG_CONTENTS} "partitions-4MB-noota.csv" MATCH_INDEX)
45+
if(NOT MATCH_INDEX EQUAL -1)
46+
file(APPEND ${CMAKE_BINARY_DIR}/tinyuf2.postbuild.sh
47+
"echo \"Creating combined-ota.bin\"\n"
48+
"gen_esp32part.py ${CMAKE_CURRENT_LIST_DIR}/partitions-4MB.csv ${CMAKE_BINARY_DIR}/partition_table/partitions-table-4MB-ota.bin\n"
49+
"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"
50+
)
51+
endif()
52+
53+
add_custom_command(TARGET app POST_BUILD
54+
COMMAND bash ${CMAKE_BINARY_DIR}/tinyuf2.postbuild.sh
4455
VERBATIM
4556
)
4657

47-
## Post build: copy binaries for artifact
58+
# Post build: copy binaries for artifact
4859
set(ARTIFACT_PATH ${CMAKE_CURRENT_LIST_DIR}/_bin/${BOARD})
49-
add_custom_command(TARGET tinyuf2.elf POST_BUILD
60+
add_custom_command(TARGET app POST_BUILD
5061
COMMAND ${CMAKE_COMMAND} -E echo "Copy binaries for artifact"
5162
COMMAND mkdir -p ${ARTIFACT_PATH}
5263
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bootloader/bootloader.bin ${ARTIFACT_PATH}/bootloader.bin
@@ -57,21 +68,12 @@ add_custom_command(TARGET tinyuf2.elf POST_BUILD
5768
VERBATIM
5869
)
5970

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-
7471
# External project for self-update
72+
# Post build: generate bootloader_bin.c for self-update and combined.bin
73+
add_custom_command(TARGET app POST_BUILD
74+
COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR}/apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR}/tinyuf2.bin
75+
)
76+
7577
externalproject_add(self_update
7678
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/apps/self_update
7779
BINARY_DIR ${CMAKE_BINARY_DIR}/self_update

0 commit comments

Comments
 (0)