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