-
Notifications
You must be signed in to change notification settings - Fork 971
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Some cmake build improvements (#376)
* Change some cmake output to DEBUG level Make SDK build more consistent with other libraries (use an INTERFACE marker library for inclusion tests) Add PICO_SDK_PRE_LIST_FILES, PICO_SDK_POST_LIST_FILES build vars * fix typo * remove leftover debugging message
- Loading branch information
1 parent
929ede7
commit 18c3985
Showing
4 changed files
with
69 additions
and
53 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,63 @@ | ||
# Initialize the Raspberry Pi Pico SDK | ||
# Pre-initialize the Raspberry Pi Pico SDK, setting up the platform and toolchain and some CMake utility functions | ||
# This file must be included prior to the project() call | ||
|
||
if (_PICO_SDK_INIT) | ||
return() | ||
endif () | ||
set(_PICO_SDK_INIT 1) | ||
|
||
function(pico_is_top_level_project VAR) | ||
string(TOLOWER ${CMAKE_CURRENT_LIST_DIR} __list_dir) | ||
string(TOLOWER ${CMAKE_SOURCE_DIR} __source_dir) | ||
if (__source_dir STREQUAL __list_dir) | ||
set(${VAR} 1 PARENT_SCOPE) | ||
else() | ||
set(${VAR} 0 PARENT_SCOPE) | ||
endif() | ||
endfunction() | ||
|
||
if (NOT PICO_SDK_PATH) | ||
set(PICO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR}) | ||
endif () | ||
|
||
get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") | ||
|
||
set(PICO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE) | ||
|
||
list(APPEND CMAKE_MODULE_PATH ${PICO_SDK_PATH}/cmake) | ||
|
||
include(${CMAKE_CURRENT_LIST_DIR}/pico_sdk_version.cmake) | ||
include(pico_utils) | ||
|
||
message("PICO_SDK_PATH is ${CMAKE_CURRENT_LIST_DIR}") | ||
|
||
include(pico_pre_load_platform) | ||
|
||
# todo perhaps this should be included by the platform instead? | ||
# We want to configure correct toolchain prior to project load | ||
include(pico_pre_load_toolchain) | ||
|
||
macro(pico_sdk_init) | ||
if (NOT CMAKE_PROJECT_NAME) | ||
message(WARNING "pico_sdk_init() should be called after the project is created (and languages added)") | ||
endif() | ||
add_subdirectory(${PICO_SDK_PATH} pico-sdk) | ||
endmacro() | ||
|
||
macro(add_sub_list_dirs var) | ||
foreach(LIST_DIR IN LISTS ${var}) | ||
get_filename_component(SHORT_NAME "${LIST_DIR}" NAME) | ||
message("Including custom CMakeLists.txt ${SHORT_NAME}") | ||
add_subdirectory(${LIST_DIR} ${SHORT_NAME}) | ||
endforeach() | ||
endmacro() | ||
|
||
# Note: this file is perhaps named badly, as it provides a method pico_sdk_init which | ||
# the enclosing project calls LATER to actually "initialize" the SDK (by including the CMakeLists.txt from this | ||
# same directory) | ||
|
||
if (NOT TARGET _pico_sdk_pre_init_marker) | ||
add_library(_pico_sdk_pre_init_marker INTERFACE) | ||
|
||
function(pico_is_top_level_project VAR) | ||
string(TOLOWER ${CMAKE_CURRENT_LIST_DIR} __list_dir) | ||
string(TOLOWER ${CMAKE_SOURCE_DIR} __source_dir) | ||
if (__source_dir STREQUAL __list_dir) | ||
set(${VAR} 1 PARENT_SCOPE) | ||
else() | ||
set(${VAR} 0 PARENT_SCOPE) | ||
endif() | ||
endfunction() | ||
|
||
if (NOT PICO_SDK_PATH) | ||
set(PICO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR}) | ||
endif () | ||
|
||
get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") | ||
|
||
set(PICO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE) | ||
|
||
list(APPEND CMAKE_MODULE_PATH ${PICO_SDK_PATH}/cmake) | ||
|
||
include(${CMAKE_CURRENT_LIST_DIR}/pico_sdk_version.cmake) | ||
include(pico_utils) | ||
|
||
message("PICO_SDK_PATH is ${CMAKE_CURRENT_LIST_DIR}") | ||
|
||
include(pico_pre_load_platform) | ||
|
||
# todo perhaps this should be included by the platform instead? | ||
# We want to configure correct toolchain prior to project load | ||
include(pico_pre_load_toolchain) | ||
|
||
macro(pico_sdk_init) | ||
if (NOT CMAKE_PROJECT_NAME) | ||
message(WARNING "pico_sdk_init() should be called after the project is created (and languages added)") | ||
endif() | ||
add_subdirectory(${PICO_SDK_PATH} pico-sdk) | ||
endmacro() | ||
|
||
macro(add_sub_list_dirs var) | ||
foreach(LIST_DIR IN LISTS ${var}) | ||
get_filename_component(SHORT_NAME "${LIST_DIR}" NAME) | ||
message(DEBUG "Including custom CMakeLists.txt ${SHORT_NAME}") | ||
add_subdirectory(${LIST_DIR} ${SHORT_NAME}) | ||
endforeach() | ||
endmacro() | ||
|
||
macro(add_sub_list_files var) | ||
foreach(LIST_FILE IN LISTS ${var}) | ||
message(DEBUG "Including custom CMake file ${LIST_FILE}") | ||
include(${LIST_FILE}) | ||
endforeach() | ||
endmacro() | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters