Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame] | 1 | function(_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) |
| 5 | endfunction() |
| 6 | |
Ravago Jones | d208ae7 | 2023-02-13 02:24:07 -0800 | [diff] [blame^] | 7 | # PICO_DEFAULT_PIOASM_OUTPUT_FORMAT, default output format used by pioasm when using pico_generate_pio_header, default=c-sdk, group=build |
Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame] | 8 | function(pico_generate_pio_header TARGET PIO) |
| 9 | _pico_init_pioasm() |
Ravago Jones | d208ae7 | 2023-02-13 02:24:07 -0800 | [diff] [blame^] | 10 | cmake_parse_arguments(pico_generate_pio_header "" "OUTPUT_FORMAT;OUTPUT_DIR" "" ${ARGN} ) |
| 11 | |
| 12 | if (pico_generate_pio_header_OUTPUT_FORMAT) |
| 13 | set(OUTPUT_FORMAT "${pico_generate_pio_header_OUTPUT_FORMAT}") |
| 14 | elseif(DEFINED PICO_DEFAULT_PIOASM_OUTPUT_FORMAT) |
| 15 | set(OUTPUT_FORMAT "${PICO_DEFAULT_PIOASM_OUTPUT_FORMAT}") |
| 16 | else() |
| 17 | set(OUTPUT_FORMAT "c-sdk") |
| 18 | endif() |
Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame] | 19 | |
| 20 | if (pico_generate_pio_header_OUTPUT_DIR) |
| 21 | get_filename_component(HEADER_DIR ${pico_generate_pio_header_OUTPUT_DIR} ABSOLUTE) |
| 22 | else() |
| 23 | set(HEADER_DIR "${CMAKE_CURRENT_BINARY_DIR}") |
| 24 | endif() |
| 25 | get_filename_component(PIO_NAME ${PIO} NAME) |
| 26 | set(HEADER "${HEADER_DIR}/${PIO_NAME}.h") |
| 27 | #message("Will generate ${HEADER}") |
| 28 | get_filename_component(HEADER_GEN_TARGET ${PIO} NAME_WE) |
| 29 | set(HEADER_GEN_TARGET "${TARGET}_${HEADER_GEN_TARGET}_pio_h") |
| 30 | |
| 31 | add_custom_target(${HEADER_GEN_TARGET} DEPENDS ${HEADER}) |
| 32 | |
| 33 | add_custom_command(OUTPUT ${HEADER} |
| 34 | DEPENDS ${PIO} |
Ravago Jones | d208ae7 | 2023-02-13 02:24:07 -0800 | [diff] [blame^] | 35 | COMMAND Pioasm -o ${OUTPUT_FORMAT} ${PIO} ${HEADER} |
Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame] | 36 | ) |
| 37 | add_dependencies(${TARGET} ${HEADER_GEN_TARGET}) |
| 38 | get_target_property(target_type ${TARGET} TYPE) |
| 39 | if ("INTERFACE_LIBRARY" STREQUAL "${target_type}") |
| 40 | target_include_directories(${TARGET} INTERFACE ${HEADER_DIR}) |
| 41 | else() |
| 42 | target_include_directories(${TARGET} PUBLIC ${HEADER_DIR}) |
| 43 | endif() |
| 44 | endfunction() |
| 45 | |
| 46 | function(pico_add_uf2_output TARGET) |
| 47 | if (NOT ELF2UF2_FOUND) |
| 48 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PICO_SDK_PATH}/tools) |
| 49 | find_package(ELF2UF2) |
| 50 | endif() |
| 51 | if (ELF2UF2_FOUND) |
| 52 | add_custom_command(TARGET ${TARGET} POST_BUILD |
| 53 | COMMAND ELF2UF2 $<TARGET_FILE:${TARGET}> $<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.uf2) |
| 54 | endif() |
| 55 | endfunction() |