@@ -85,6 +85,33 @@ if (NOT PICOTOOL_NO_LIBUSB)
8585 DEPENDS xip_ram_perms
8686 )
8787
88+ # compile enc_bootloader.elf
89+ if (NOT DEFINED USE_PRECOMPILED)
90+ set (USE_PRECOMPILED true )
91+ endif ()
92+ ExternalProject_Add (enc_bootloader
93+ PREFIX enc_bootloader
94+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} /enc_bootloader
95+ BINARY_DIR ${CMAKE_BINARY_DIR} /enc_bootloader
96+ CMAKE_ARGS
97+ "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM} "
98+ "-DPICO_SDK_PATH:FILEPATH=${PICO_SDK_PATH} "
99+ "-DUSE_PRECOMPILED:BOOL=${USE_PRECOMPILED} "
100+ "-DPICO_DEBUG_INFO_IN_RELEASE=OFF"
101+ BUILD_ALWAYS 1 # todo remove this
102+ INSTALL_COMMAND ""
103+ )
104+
105+ set (ENC_BOOTLOADER_ELF ${CMAKE_BINARY_DIR} /enc_bootloader/enc_bootloader.elf)
106+ add_executable (enc_bootloader_elf IMPORTED )
107+ add_dependencies (enc_bootloader_elf enc_bootloader )
108+ set_property (TARGET enc_bootloader_elf PROPERTY IMPORTED_LOCATION ${ENC_BOOTLOADER_ELF} )
109+ # copy enc_bootloader.elf into build directory
110+ add_custom_command (TARGET enc_bootloader
111+ COMMAND ${CMAKE_COMMAND} -E copy ${ENC_BOOTLOADER_ELF} ${CMAKE_BINARY_DIR} /enc_bootloader.elf
112+ DEPENDS enc_bootloader
113+ )
114+
88115 # compile flash_id
89116 ExternalProject_Add (flash_id
90117 PREFIX picoboot_flash_id
@@ -172,6 +199,7 @@ endif()
172199add_custom_target (binary_data DEPENDS
173200 ${CMAKE_CURRENT_BINARY_DIR} /rp2350.rom.h
174201 ${CMAKE_CURRENT_BINARY_DIR} /xip_ram_perms_elf.h
202+ ${CMAKE_CURRENT_BINARY_DIR} /enc_bootloader_elf.h
175203 ${CMAKE_CURRENT_BINARY_DIR} /flash_id_bin.h )
176204add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /rp2350.rom.h
177205 COMMAND ${CMAKE_COMMAND}
@@ -188,6 +216,14 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xip_ram_perms_elf.h
188216 DEPENDS xip_ram_perms
189217 COMMENT "Configuring xip_ram_perms_elf.h"
190218 VERBATIM )
219+ add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /enc_bootloader_elf.h
220+ COMMAND ${CMAKE_COMMAND}
221+ -D BINARY_FILE=${ENC_BOOTLOADER_ELF}
222+ -D OUTPUT_NAME =enc_bootloader_elf
223+ -P ${CMAKE_CURRENT_LIST_DIR} /cmake/binh.cmake
224+ DEPENDS enc_bootloader
225+ COMMENT "Configuring enc_bootloader_elf.h"
226+ VERBATIM )
191227add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /flash_id_bin.h
192228 COMMAND ${CMAKE_COMMAND}
193229 -D BINARY_FILE=${FLASH_ID_BIN}
@@ -233,8 +269,10 @@ target_include_directories(regs_headers INTERFACE ${PICO_SDK_PATH}/src/rp2350/ha
233269# Main picotool executable
234270add_executable (picotool
235271 data_locs.cpp
272+ enc_bootloader.cpp
236273 ${OTP_EXE}
237274 main.cpp )
275+ add_dependencies (picotool enc_bootloader_elf )
238276if (NOT PICOTOOL_NO_LIBUSB)
239277 target_sources (picotool PRIVATE xip_ram_perms.cpp )
240278 add_dependencies (picotool generate_otp_header xip_ram_perms_elf binary_data )
@@ -328,6 +366,12 @@ install(FILES
328366 DESTINATION ${INSTALL_CONFIGDIR}
329367)
330368
369+ #Install enc_bootloader.elf
370+ install (FILES
371+ ${ENC_BOOTLOADER_ELF}
372+ DESTINATION ${INSTALL_DATADIR}
373+ )
374+
331375if (NOT PICOTOOL_NO_LIBUSB)
332376 if (NOT PICOTOOL_CODE_OTP)
333377 #Install the otp json
0 commit comments