CMakeLists.txt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. function(pico_generate_pio_header TARGET PIO)
  7. _pico_init_pioasm()
  8. cmake_parse_arguments(pico_generate_pio_header "" "OUTPUT_DIR" "" ${ARGN} )
  9. if (pico_generate_pio_header_OUTPUT_DIR)
  10. get_filename_component(HEADER_DIR ${pico_generate_pio_header_OUTPUT_DIR} ABSOLUTE)
  11. else()
  12. set(HEADER_DIR "${CMAKE_CURRENT_BINARY_DIR}")
  13. endif()
  14. get_filename_component(PIO_NAME ${PIO} NAME)
  15. set(HEADER "${HEADER_DIR}/${PIO_NAME}.h")
  16. #message("Will generate ${HEADER}")
  17. get_filename_component(HEADER_GEN_TARGET ${PIO} NAME_WE)
  18. set(HEADER_GEN_TARGET "${TARGET}_${HEADER_GEN_TARGET}_pio_h")
  19. add_custom_target(${HEADER_GEN_TARGET} DEPENDS ${HEADER} Pioasm)
  20. add_custom_command(OUTPUT ${HEADER}
  21. DEPENDS ${PIO}
  22. COMMAND Pioasm -o c-sdk ${PIO} ${HEADER}
  23. )
  24. add_dependencies(${TARGET} ${HEADER_GEN_TARGET})
  25. get_target_property(target_type ${TARGET} TYPE)
  26. if ("EXECUTABLE" STREQUAL "${target_type}")
  27. target_include_directories(${TARGET} PRIVATE ${HEADER_DIR})
  28. else()
  29. target_include_directories(${TARGET} INTERFACE ${HEADER_DIR})
  30. endif()
  31. endfunction()
  32. function(pico_add_uf2_output TARGET)
  33. if (NOT ELF2UF2_FOUND)
  34. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PICO_SDK_PATH}/tools)
  35. find_package(ELF2UF2)
  36. endif()
  37. if (ELF2UF2_FOUND)
  38. add_custom_command(TARGET ${TARGET} POST_BUILD
  39. COMMAND ELF2UF2 ${TARGET}${CMAKE_EXECUTABLE_SUFFIX} ${TARGET}.uf2)
  40. endif()
  41. endfunction()
  42. if (NOT DEFINED PICO_BUILD_PICOFLASH)
  43. if (DEFINED ENV{PICO_BUILD_PICOFLASH})
  44. set(PICO_BUILD_PICOFLASH $ENV{PICO_BUILD_PICOFLASH})
  45. else()
  46. # for now
  47. set(PICO_BUILD_PICOFLASH 1)
  48. endif()
  49. endif()
  50. if (PICO_BUILD_PICOTOOL)
  51. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PICO_SDK_PATH}/tools)
  52. find_package(Picotool REQUIRED)
  53. endif()