@@ -56,6 +56,9 @@ if (NOT DEFINED FAMILY)
5656 list (GET BOARD_PATH 0 FAMILY)
5757endif ()
5858
59+ set (FAMILY_PATH ${TOP} /ports/${FAMILY} CACHE INTERNAL "FAMILY_PATH" )
60+ set (BOARD_PATH ${TOP} /ports/${FAMILY} /boards/${BOARD} CACHE INTERNAL "BOARD_PATH" )
61+
5962# enable LTO if supported
6063include (CheckIPOSupported)
6164check_ipo_supported(RESULT IPO_SUPPORTED)
@@ -67,8 +70,12 @@ endif ()
6770# Functions
6871#------------------------------------
6972
70- function (family_add_bin_hex TARGET )
71- # placeholder, will be override by family specific
73+ # Generate bin/hex output, can be override by family specific
74+ function (family_gen_bin_hex TARGET )
75+ add_custom_command (TARGET ${TARGET} POST_BUILD
76+ COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${TARGET} > $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .bin
77+ COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${TARGET} > $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .hex
78+ VERBATIM )
7279endfunction ()
7380
7481function (family_add_default_warnings TARGET )
@@ -122,7 +129,6 @@ function(family_add_default_warnings TARGET)
122129 endif ()
123130endfunction ()
124131
125-
126132function (family_configure_common TARGET )
127133 # Add BOARD_${BOARD} define
128134 string (TOUPPER ${BOARD} BOARD_UPPER)
@@ -167,11 +173,9 @@ function(family_configure_common TARGET)
167173 )
168174
169175 # add hex, bin and uf2 targets
170- family_add_bin_hex(${TARGET} )
171-
176+ family_gen_bin_hex(${TARGET} )
172177endfunction ()
173178
174-
175179# Add tinyusb to example
176180function (family_add_tinyusb TARGET OPT_MCU)
177181 # tinyusb's CMakeList.txt
@@ -206,33 +210,17 @@ function(family_configure_tinyuf2 TARGET OPT_MCU)
206210 )
207211endfunction ()
208212
209-
210- # Add bin/hex output
211- function (family_add_bin_hex TARGET )
213+ # generate .uf2 file from hex
214+ function (family_gen_uf2 TARGET FAMILY_ID)
212215 add_custom_command (TARGET ${TARGET} POST_BUILD
213- COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${TARGET} > $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .bin
214- COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${TARGET} > $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .hex
216+ COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} -f ${FAMILY_ID} -c -o $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .uf2 $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .hex
215217 VERBATIM )
216218endfunction ()
217219
218-
219- # Add uf2 target, optional parameter is the extension of the binary file (default is hex)
220- # If bin file is used, address is also required
221- function (family_add_uf2 TARGET FAMILY_ID)
222- set (BIN_EXT hex)
223- set (ADDR_OPT "" )
224- if (ARGC GREATER 2)
225- set (BIN_EXT ${ARGV2} )
226- if (BIN_EXT STREQUAL bin)
227- set (ADDR_OPT "-b ${ARGV3} " )
228- endif ()
229- endif ()
230-
231- set (BIN_FILE $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .${BIN_EXT} )
232-
220+ # generate .uf2 file from bin with address
221+ function (family_gen_uf2_from_bin TARGET FAMILY_ID BIN_ADDR)
233222 add_custom_command (TARGET ${TARGET} POST_BUILD
234- COMMAND echo ${Python_EXECUTABLE} ${UF2CONV_PY} -f ${FAMILY_ID} ${ADDR_OPT} -c -o $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .uf2 ${BIN_FILE}
235- COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} -f ${FAMILY_ID} ${ADDR_OPT} -c -o $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .uf2 ${BIN_FILE}
223+ COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} -f ${FAMILY_ID} -b ${BIN_ADDR} -c -o $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .uf2 $<TARGET_FILE_DIR:${TARGET} >/${TARGET} .bin
236224 VERBATIM )
237225endfunction ()
238226
0 commit comments