Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame] | 1 | # include targets for all for PICO on device |
| 2 | |
| 3 | enable_language(ASM) |
| 4 | |
| 5 | function(pico_add_hex_output TARGET) |
| 6 | add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${TARGET}> $<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.hex) |
| 7 | endfunction() |
| 8 | |
| 9 | function(pico_add_bin_output TARGET) |
| 10 | add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${TARGET}> $<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.bin) |
| 11 | endfunction() |
| 12 | |
| 13 | function(pico_add_dis_output TARGET) |
| 14 | add_custom_command(TARGET ${TARGET} POST_BUILD |
| 15 | COMMAND ${CMAKE_OBJDUMP} -h $<TARGET_FILE:${TARGET}> >$<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.dis |
| 16 | COMMAND ${CMAKE_OBJDUMP} -d $<TARGET_FILE:${TARGET}> >>$<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.dis |
| 17 | ) |
| 18 | endfunction() |
| 19 | |
| 20 | function(pico_add_extra_outputs TARGET) |
| 21 | pico_add_hex_output(${TARGET}) |
| 22 | pico_add_bin_output(${TARGET}) |
| 23 | pico_add_dis_output(${TARGET}) |
| 24 | |
| 25 | # PICO_CMAKE_CONFIG: PICO_NO_TARGET_NAME, Don't defined PICO_TARGET_NAME, type=bool, default=0, group=build |
| 26 | # PICO_BUILD_DEFINE: PICO_TARGET_NAME, The name of the build target being compiled (unless PICO_NO_TARGET_NAME set in build), type=string, default=target name, group=build |
| 27 | if (NOT PICO_NO_TARGET_NAME) |
| 28 | target_compile_definitions(${TARGET} PRIVATE |
| 29 | PICO_TARGET_NAME="${TARGET}" |
| 30 | ) |
| 31 | endif() |
| 32 | |
| 33 | if (PICO_SYMLINK_ELF_AS_FILENAME) |
| 34 | add_custom_target(${TARGET}_symlinked) |
| 35 | add_dependencies(${TARGET}_symlinked ${TARGET}) |
| 36 | |
| 37 | add_custom_command(TARGET ${TARGET}_symlinked POST_BUILD |
| 38 | COMMAND rm -f "${PICO_SYMLINK_ELF_AS_FILENAME}" |
| 39 | COMMAND ln -s -r $<TARGET_FILE:${TARGET}> "${PICO_SYMLINK_ELF_AS_FILENAME}" |
| 40 | COMMENT "Symlinking from ${PICO_SYMLINK_ELF_AS_FILENAME} to ${TARGET}" |
| 41 | ) |
| 42 | endif () |
| 43 | # PICO_CMAKE_CONFIG: PICO_NO_UF2, Disable UF2 output, type=bool, default=0, group=build |
| 44 | if (NOT PICO_NO_UF2) |
| 45 | pico_add_uf2_output(${TARGET}) |
| 46 | endif() |
| 47 | endfunction() |
| 48 | |
| 49 | add_subdirectory(common) |
| 50 | add_subdirectory(rp2_common) |
| 51 | |
| 52 | # PICO_CMAKE_CONFIG: PICO_NO_HARDWARE, OPTION: Whether the build is not targeting an RP2040 device, type=bool, default=1 for PICO_PLATFORM=host 0 otherwise, group=build |
| 53 | # PICO_BUILD_DEFINE: PICO_NO_HARDWARE, Whether the build is not targeting an RP2040 device, type=bool, default=1 for PICO_PLATFORM=host 0 otherwise, group=build |
| 54 | set(PICO_NO_HARDWARE "0" CACHE INTERNAL "") |
| 55 | # PICO_CMAKE_CONFIG: PICO_ON_DEVICE, OPTION: Whether the build is targeting an RP2040 device, type=bool, default=0 for PICO_PLATFORM=host 1 otherwise, group=build |
| 56 | # PICO_BUILD_DEFIN: PICO_ON_DEVICE, Whether the build is targeting an RP2040 device, type=bool, default=0 for PICO_PLATFORM=host 1 otherwise, group=build |
| 57 | set(PICO_ON_DEVICE "1" CACHE INTERNAL "") |
| 58 | |
| 59 | set(CMAKE_EXECUTABLE_SUFFIX .elf PARENT_SCOPE) |