Squashed 'third_party/pico-sdk/' content from commit 2062372d2

Change-Id: Ic20f199d3ed0ea8d3a6a1bbf513f875ec7500cc6
git-subtree-dir: third_party/pico-sdk
git-subtree-split: 2062372d203b372849d573f252cf7c6dc2800c0a
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/tools/FindELF2UF2.cmake b/tools/FindELF2UF2.cmake
new file mode 100644
index 0000000..fb5dd97
--- /dev/null
+++ b/tools/FindELF2UF2.cmake
@@ -0,0 +1,43 @@
+# Finds (or builds) the ELF2UF2 executable
+#
+# This will define the following variables
+#
+#    ELF2UF2_FOUND
+#
+# and the following imported targets
+#
+#     ELF2UF2
+#
+
+if (NOT ELF2UF2_FOUND)
+    # 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(ELF2UF2_SOURCE_DIR ${PICO_SDK_PATH}/tools/elf2uf2)
+    set(ELF2UF2_BINARY_DIR ${CMAKE_BINARY_DIR}/elf2uf2)
+
+    set(ELF2UF2_BUILD_TARGET ELF2UF2Build)
+    set(ELF2UF2_TARGET ELF2UF2)
+
+    if (NOT TARGET ${ELF2UF2_BUILD_TARGET})
+        pico_message_debug("ELF2UF2 will need to be built")
+        ExternalProject_Add(${ELF2UF2_BUILD_TARGET}
+                PREFIX elf2uf2 SOURCE_DIR ${ELF2UF2_SOURCE_DIR}
+                BINARY_DIR ${ELF2UF2_BINARY_DIR}
+                BUILD_ALWAYS 1 # force dependency checking
+                INSTALL_COMMAND ""
+                )
+    endif()
+
+    set(ELF2UF2_EXECUTABLE ${ELF2UF2_BINARY_DIR}/elf2uf2)
+    if(NOT TARGET ${ELF2UF2_TARGET})
+        add_executable(${ELF2UF2_TARGET} IMPORTED)
+    endif()
+    set_property(TARGET ${ELF2UF2_TARGET} PROPERTY IMPORTED_LOCATION
+            ${ELF2UF2_EXECUTABLE})
+
+    add_dependencies(${ELF2UF2_TARGET} ${ELF2UF2_BUILD_TARGET})
+    set(ELF2UF2_FOUND 1)
+endif()