/ software / pico_sdk_import.cmake
pico_sdk_import.cmake
 1  # This is a copy of <PICO_SDK_PATH>/external/pico_sdk_import.cmake
 2  
 3  # This can be dropped into an external project to help locate this SDK
 4  # It should be include()ed prior to project()
 5  
 6  # todo document
 7  
 8  if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH))
 9      set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
10      message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')")
11  endif ()
12  
13  if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT))
14      set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT})
15      message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')")
16  endif ()
17  
18  if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH))
19      set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH})
20      message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')")
21  endif ()
22  
23  set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the PICO SDK")
24  set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of PICO SDK from git if not otherwise locatable")
25  set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK")
26  
27  if (NOT PICO_SDK_PATH)
28      if (PICO_SDK_FETCH_FROM_GIT)
29          include(FetchContent)
30          set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR})
31          if (PICO_SDK_FETCH_FROM_GIT_PATH)
32              get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
33          endif ()
34          FetchContent_Declare(
35                  pico_sdk
36                  GIT_REPOSITORY git@asic-git.pitowers.org:projectmu/pico_sdk.git
37                  GIT_TAG master
38          )
39          if (NOT pico_sdk)
40              message("Downloading PICO SDK")
41              FetchContent_Populate(pico_sdk)
42              set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR})
43          endif ()
44          set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE})
45      else ()
46          message(FATAL_ERROR
47                  "PICO SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git."
48                  )
49      endif ()
50  endif ()
51  
52  get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
53  if (NOT EXISTS ${PICO_SDK_PATH})
54      message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found")
55  endif ()
56  
57  set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake)
58  if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE})
59      message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the PICO SDK")
60  endif ()
61  
62  set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the PICO SDK" FORCE)
63  
64  include(${PICO_SDK_INIT_CMAKE_FILE})