blob: f66f9d0b2c7efe3de39d9c638351a13b6bd49d8a [file] [log] [blame]
Austin Schuh208337d2022-01-01 14:29:11 -08001function(_pico_init_pioasm)
2 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PICO_SDK_PATH}/tools)
3 # todo CMAKE_CURRENT_FUNCTION_LIST_DIR ... what version?
4 find_package(Pioasm REQUIRED)
5endfunction()
6
7function(pico_generate_pio_header TARGET PIO)
8 _pico_init_pioasm()
9 cmake_parse_arguments(pico_generate_pio_header "" "OUTPUT_DIR" "" ${ARGN} )
10
11 if (pico_generate_pio_header_OUTPUT_DIR)
12 get_filename_component(HEADER_DIR ${pico_generate_pio_header_OUTPUT_DIR} ABSOLUTE)
13 else()
14 set(HEADER_DIR "${CMAKE_CURRENT_BINARY_DIR}")
15 endif()
16 get_filename_component(PIO_NAME ${PIO} NAME)
17 set(HEADER "${HEADER_DIR}/${PIO_NAME}.h")
18 #message("Will generate ${HEADER}")
19 get_filename_component(HEADER_GEN_TARGET ${PIO} NAME_WE)
20 set(HEADER_GEN_TARGET "${TARGET}_${HEADER_GEN_TARGET}_pio_h")
21
22 add_custom_target(${HEADER_GEN_TARGET} DEPENDS ${HEADER})
23
24 add_custom_command(OUTPUT ${HEADER}
25 DEPENDS ${PIO}
26 COMMAND Pioasm -o c-sdk ${PIO} ${HEADER}
27 )
28 add_dependencies(${TARGET} ${HEADER_GEN_TARGET})
29 get_target_property(target_type ${TARGET} TYPE)
30 if ("INTERFACE_LIBRARY" STREQUAL "${target_type}")
31 target_include_directories(${TARGET} INTERFACE ${HEADER_DIR})
32 else()
33 target_include_directories(${TARGET} PUBLIC ${HEADER_DIR})
34 endif()
35endfunction()
36
37function(pico_add_uf2_output TARGET)
38 if (NOT ELF2UF2_FOUND)
39 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PICO_SDK_PATH}/tools)
40 find_package(ELF2UF2)
41 endif()
42 if (ELF2UF2_FOUND)
43 add_custom_command(TARGET ${TARGET} POST_BUILD
44 COMMAND ELF2UF2 $<TARGET_FILE:${TARGET}> $<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.uf2)
45 endif()
46endfunction()