@@ -213,6 +213,16 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
213213 target_link_libraries (${TARGET} _firmware boot_picobin_headers)
214214 target_link_libraries (${TARGET} _firmware_tbyb boot_picobin_headers)
215215
216+ if (PICO_RISCV)
217+ # Use pre-generated firmware elfs on Risc-V, as the compiler has issues with the assembly
218+ add_custom_command (TARGET ${TARGET} _firmware POST_BUILD
219+ COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH} /firmware.elf $<TARGET_FILE:${TARGET} _firmware>
220+ )
221+ add_custom_command (TARGET ${TARGET} _firmware_tbyb POST_BUILD
222+ COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH} /firmware_tbyb.elf $<TARGET_FILE:${TARGET} _firmware_tbyb>
223+ )
224+ endif ()
225+
216226 get_target_property (hasSigfile ${TARGET} PICOTOOL_SIGFILE)
217227 if (hasSigfile)
218228 pico_sign_binary(${TARGET} _firmware ${sigfile} )
@@ -228,8 +238,19 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
228238 pico_package_uf2_output(${TARGET} _firmware 0x10000000)
229239 pico_package_uf2_output(${TARGET} _firmware_tbyb 0x10000000)
230240
231- pico_add_extra_outputs(${TARGET} _firmware)
232- pico_add_extra_outputs(${TARGET} _firmware_tbyb)
241+ if (PICO_RISCV)
242+ # As Arm ELFs are being used for firmware, the bin & dis output generation will fail
243+ # with a Risc-V toolchain
244+ picotool_postprocess_binary(${TARGET} _firmware)
245+ picotool_postprocess_binary(${TARGET} _firmware_tbyb)
246+ if (NOT (PICO_NO_UF2 OR PICO_NO_PICOTOOL))
247+ pico_add_uf2_output(${TARGET} _firmware)
248+ pico_add_uf2_output(${TARGET} _firmware_tbyb)
249+ endif ()
250+ else ()
251+ pico_add_extra_outputs(${TARGET} _firmware)
252+ pico_add_extra_outputs(${TARGET} _firmware_tbyb)
253+ endif ()
233254
234255 add_dependencies (${TARGET}
235256 ${TARGET} _firmware ${TARGET} _firmware_tbyb)
0 commit comments