@@ -206,6 +206,16 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
206206 target_link_libraries (${TARGET} _firmware boot_picobin_headers)
207207 target_link_libraries (${TARGET} _firmware_tbyb boot_picobin_headers)
208208
209+ if (PICO_RISCV)
210+ # Use pre-generated firmware elfs on Risc-V, as the compiler has issues with the assembly
211+ add_custom_command (TARGET ${TARGET} _firmware POST_BUILD
212+ COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH} /firmware.elf $<TARGET_FILE:${TARGET} _firmware>
213+ )
214+ add_custom_command (TARGET ${TARGET} _firmware_tbyb POST_BUILD
215+ COMMAND ${CMAKE_COMMAND} -E copy ${PICO_CYW43_DRIVER_CURRENT_PATH} /firmware_tbyb.elf $<TARGET_FILE:${TARGET} _firmware_tbyb>
216+ )
217+ endif ()
218+
209219 get_target_property (hasSigfile ${TARGET} PICOTOOL_SIGFILE)
210220 if (hasSigfile)
211221 pico_sign_binary(${TARGET} _firmware ${sigfile} )
@@ -221,8 +231,19 @@ if (EXISTS ${PICO_CYW43_DRIVER_PATH}/${CYW43_DRIVER_TEST_FILE})
221231 pico_package_uf2_output(${TARGET} _firmware 0x10000000)
222232 pico_package_uf2_output(${TARGET} _firmware_tbyb 0x10000000)
223233
224- pico_add_extra_outputs(${TARGET} _firmware)
225- pico_add_extra_outputs(${TARGET} _firmware_tbyb)
234+ if (PICO_RISCV)
235+ # As Arm ELFs are being used for firmware, the bin & dis output generation will fail
236+ # with a Risc-V toolchain
237+ picotool_postprocess_binary(${TARGET} _firmware)
238+ picotool_postprocess_binary(${TARGET} _firmware_tbyb)
239+ if (NOT (PICO_NO_UF2 OR PICO_NO_PICOTOOL))
240+ pico_add_uf2_output(${TARGET} _firmware)
241+ pico_add_uf2_output(${TARGET} _firmware_tbyb)
242+ endif ()
243+ else ()
244+ pico_add_extra_outputs(${TARGET} _firmware)
245+ pico_add_extra_outputs(${TARGET} _firmware_tbyb)
246+ endif ()
226247
227248 add_dependencies (${TARGET}
228249 ${TARGET} _firmware ${TARGET} _firmware_tbyb)
0 commit comments