FindELF2UF2.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Finds (or builds) the ELF2UF2 executable
  2. #
  3. # This will define the following variables
  4. #
  5. # ELF2UF2_FOUND
  6. #
  7. # and the following imported targets
  8. #
  9. # ELF2UF2
  10. #
  11. if (NOT ELF2UF2_FOUND)
  12. # todo we would like to use pckgconfig to look for it first
  13. # see https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/
  14. include(ExternalProject)
  15. set(ELF2UF2_SOURCE_DIR ${PICO_SDK_PATH}/tools/elf2uf2)
  16. set(ELF2UF2_BINARY_DIR ${CMAKE_BINARY_DIR}/elf2uf2)
  17. set(ELF2UF2_BUILD_TARGET ELF2UF2Build)
  18. set(ELF2UF2_TARGET ELF2UF2)
  19. if (NOT TARGET ${ELF2UF2_BUILD_TARGET})
  20. pico_message_debug("ELF2UF2 will need to be built")
  21. ExternalProject_Add(${ELF2UF2_BUILD_TARGET}
  22. PREFIX elf2uf2
  23. SOURCE_DIR ${ELF2UF2_SOURCE_DIR}
  24. BINARY_DIR ${ELF2UF2_BINARY_DIR}
  25. CMAKE_ARGS "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}"
  26. BUILD_ALWAYS 1 # force dependency checking
  27. INSTALL_COMMAND ""
  28. )
  29. endif()
  30. set(ELF2UF2_EXECUTABLE ${ELF2UF2_BINARY_DIR}/elf2uf2)
  31. if(NOT TARGET ${ELF2UF2_TARGET})
  32. add_executable(${ELF2UF2_TARGET} IMPORTED)
  33. endif()
  34. set_property(TARGET ${ELF2UF2_TARGET} PROPERTY IMPORTED_LOCATION
  35. ${ELF2UF2_EXECUTABLE})
  36. add_dependencies(${ELF2UF2_TARGET} ${ELF2UF2_BUILD_TARGET})
  37. set(ELF2UF2_FOUND 1)
  38. endif()