blob: c04e55144ad5f7f913875ae15e7a72a1b6bac7ef [file] [log] [blame]
Austin Schuh208337d2022-01-01 14:29:11 -08001# include targets for all for PICO on device
2
3enable_language(ASM)
4
5function(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)
7endfunction()
8
9function(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)
11endfunction()
12
13function(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 )
18endfunction()
19
20function(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()
47endfunction()
48
49add_subdirectory(common)
50add_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
54set(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
57set(PICO_ON_DEVICE "1" CACHE INTERNAL "")
58
59set(CMAKE_EXECUTABLE_SUFFIX .elf PARENT_SCOPE)