# Finds (or builds) the pioasm executable # # This will define the following imported targets # # pioasm # if (NOT TARGET pioasm) # todo we would like to use pckgconfig to look for it first # see https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/ include(ExternalProject) set(PIOASM_SOURCE_DIR ${PICO_SDK_PATH}/tools/pioasm) set(PIOASM_BINARY_DIR ${CMAKE_BINARY_DIR}/pioasm) set(PIOASM_INSTALL_DIR ${CMAKE_BINARY_DIR}/pioasm-install CACHE PATH "Directory where pioasm has been installed" FORCE) set(pioasmBuild_TARGET pioasmBuild) set(pioasm_TARGET pioasm) if (NOT TARGET ${pioasmBuild_TARGET}) pico_message_debug("PIOASM will need to be built") # message("Adding external project ${pioasmBuild_Target} in ${CMAKE_CURRENT_LIST_DIR}}") ExternalProject_Add(${pioasmBuild_TARGET} PREFIX pioasm SOURCE_DIR ${PIOASM_SOURCE_DIR} BINARY_DIR ${PIOASM_BINARY_DIR} INSTALL_DIR ${PIOASM_INSTALL_DIR} CMAKE_ARGS "--no-warn-unused-cli" "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}" "-DPIOASM_FLAT_INSTALL=1" "-DCMAKE_INSTALL_PREFIX=${PIOASM_INSTALL_DIR}" "-DCMAKE_RULE_MESSAGES=OFF" # quieten the build "-DCMAKE_INSTALL_MESSAGE=NEVER" # quieten the install CMAKE_CACHE_ARGS "-DPIOASM_EXTRA_SOURCE_FILES:STRING=${PIOASM_EXTRA_SOURCE_FILES}" BUILD_ALWAYS 1 # force dependency checking EXCLUDE_FROM_ALL TRUE ) endif() if (CMAKE_HOST_WIN32) set(pioasm_EXECUTABLE ${PIOASM_INSTALL_DIR}/pioasm/pioasm.exe) else() set(pioasm_EXECUTABLE ${PIOASM_INSTALL_DIR}/pioasm/pioasm) endif() add_executable(${pioasm_TARGET} IMPORTED GLOBAL) set_property(TARGET ${pioasm_TARGET} PROPERTY IMPORTED_LOCATION ${pioasm_EXECUTABLE}) add_dependencies(${pioasm_TARGET} ${pioasmBuild_TARGET}) endif()