blob: fb5dd978557c5d0ad954d41a216961fd2bc2ad6f [file] [log] [blame]
Austin Schuh208337d2022-01-01 14:29:11 -08001# 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
12if (NOT ELF2UF2_FOUND)
13 # todo we would like to use pckgconfig to look for it first
14 # see https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/
15
16 include(ExternalProject)
17
18 set(ELF2UF2_SOURCE_DIR ${PICO_SDK_PATH}/tools/elf2uf2)
19 set(ELF2UF2_BINARY_DIR ${CMAKE_BINARY_DIR}/elf2uf2)
20
21 set(ELF2UF2_BUILD_TARGET ELF2UF2Build)
22 set(ELF2UF2_TARGET ELF2UF2)
23
24 if (NOT TARGET ${ELF2UF2_BUILD_TARGET})
25 pico_message_debug("ELF2UF2 will need to be built")
26 ExternalProject_Add(${ELF2UF2_BUILD_TARGET}
27 PREFIX elf2uf2 SOURCE_DIR ${ELF2UF2_SOURCE_DIR}
28 BINARY_DIR ${ELF2UF2_BINARY_DIR}
29 BUILD_ALWAYS 1 # force dependency checking
30 INSTALL_COMMAND ""
31 )
32 endif()
33
34 set(ELF2UF2_EXECUTABLE ${ELF2UF2_BINARY_DIR}/elf2uf2)
35 if(NOT TARGET ${ELF2UF2_TARGET})
36 add_executable(${ELF2UF2_TARGET} IMPORTED)
37 endif()
38 set_property(TARGET ${ELF2UF2_TARGET} PROPERTY IMPORTED_LOCATION
39 ${ELF2UF2_EXECUTABLE})
40
41 add_dependencies(${ELF2UF2_TARGET} ${ELF2UF2_BUILD_TARGET})
42 set(ELF2UF2_FOUND 1)
43endif()