Findpioasm.cmake 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # Finds (or builds) the pioasm executable
  2. #
  3. # This will define the following imported targets
  4. #
  5. # pioasm
  6. #
  7. if (NOT TARGET pioasm)
  8. # todo we would like to use pckgconfig to look for it first
  9. # see https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/
  10. include(ExternalProject)
  11. set(PIOASM_SOURCE_DIR ${PICO_SDK_PATH}/tools/pioasm)
  12. set(PIOASM_BINARY_DIR ${CMAKE_BINARY_DIR}/pioasm)
  13. set(PIOASM_INSTALL_DIR ${CMAKE_BINARY_DIR}/pioasm-install CACHE PATH "Directory where pioasm has been installed" FORCE)
  14. set(pioasmBuild_TARGET pioasmBuild)
  15. set(pioasm_TARGET pioasm)
  16. if (NOT TARGET ${pioasmBuild_TARGET})
  17. pico_message_debug("PIOASM will need to be built")
  18. # message("Adding external project ${pioasmBuild_Target} in ${CMAKE_CURRENT_LIST_DIR}}")
  19. ExternalProject_Add(${pioasmBuild_TARGET}
  20. PREFIX pioasm
  21. SOURCE_DIR ${PIOASM_SOURCE_DIR}
  22. BINARY_DIR ${PIOASM_BINARY_DIR}
  23. INSTALL_DIR ${PIOASM_INSTALL_DIR}
  24. CMAKE_ARGS
  25. "--no-warn-unused-cli"
  26. "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}"
  27. "-DPIOASM_FLAT_INSTALL=1"
  28. "-DCMAKE_INSTALL_PREFIX=${PIOASM_INSTALL_DIR}"
  29. "-DCMAKE_RULE_MESSAGES=OFF" # quieten the build
  30. "-DCMAKE_INSTALL_MESSAGE=NEVER" # quieten the install
  31. CMAKE_CACHE_ARGS "-DPIOASM_EXTRA_SOURCE_FILES:STRING=${PIOASM_EXTRA_SOURCE_FILES}"
  32. BUILD_ALWAYS 1 # force dependency checking
  33. EXCLUDE_FROM_ALL TRUE
  34. )
  35. endif()
  36. if (CMAKE_HOST_WIN32)
  37. set(pioasm_EXECUTABLE ${PIOASM_INSTALL_DIR}/pioasm/pioasm.exe)
  38. else()
  39. set(pioasm_EXECUTABLE ${PIOASM_INSTALL_DIR}/pioasm/pioasm)
  40. endif()
  41. add_executable(${pioasm_TARGET} IMPORTED GLOBAL)
  42. set_property(TARGET ${pioasm_TARGET} PROPERTY IMPORTED_LOCATION
  43. ${pioasm_EXECUTABLE})
  44. add_dependencies(${pioasm_TARGET} ${pioasmBuild_TARGET})
  45. endif()