1cmake_minimum_required(VERSION 3.13)
2
3# Note: this CMakeLists.txt can be used as a top-level CMakeLists.txt for the SDK itself. For all other uses
4# it is included as a subdirectory via the pico_sdk_init() method provided by pico_sdk_init.cmake
5if (NOT TARGET _pico_sdk_inclusion_marker)
6    add_library(_pico_sdk_inclusion_marker INTERFACE)
7    # This is a no-op unless we are the top-level CMakeLists.txt
8    include(pico_sdk_init.cmake)
9
10    project(pico_sdk C CXX ASM)
11
12    message("Build type is ${CMAKE_BUILD_TYPE}")
13    if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
14        if (PICO_DEOPTIMIZED_DEBUG)
15            message("Using fully de-optimized debug build (set PICO_DEOPTIMIZED_DEBUG=0 to optimize)")
16        else()
17            message("Using regular optimized debug build (set PICO_DEOPTIMIZED_DEBUG=1 to de-optimize)")
18        endif()
19    endif()
20
21    pico_is_top_level_project(PICO_SDK_TOP_LEVEL_PROJECT)
22
23    set(CMAKE_C_STANDARD 11)
24    set(CMAKE_CXX_STANDARD 11)
25
26    if (NOT PICO_SDK_TOP_LEVEL_PROJECT)
27        set(PICO_SDK 1 PARENT_SCOPE)
28    endif()
29
30    # allow customization
31    add_sub_list_dirs(PICO_SDK_PRE_LIST_DIRS)
32    add_sub_list_files(PICO_SDK_PRE_LIST_FILES)
33
34    add_subdirectory(tools)
35    add_subdirectory(src)
36
37    # allow customization
38    add_sub_list_dirs(PICO_SDK_POST_LIST_DIRS)
39    add_sub_list_files(PICO_SDK_POST_LIST_FILES)
40
41    if (PICO_SDK_TOP_LEVEL_PROJECT AND NOT DEFINED PICO_SDK_TESTS_ENABLED)
42        set(PICO_SDK_TESTS_ENABLED 1)
43    endif()
44    if (PICO_SDK_TESTS_ENABLED)
45        add_subdirectory(test)
46    endif ()
47
48    set(PICO_SDK_TESTS_ENABLED "${PICO_SDK_TESTS_ENABLED}" CACHE INTERNAL "Enable build of SDK tests")
49
50    # add docs at the end, as we gather documentation dirs as we go
51    add_subdirectory(docs)
52
53    if (NOT PICO_SDK_TOP_LEVEL_PROJECT)
54        pico_promote_common_scope_vars()
55    endif()
56endif()
57
58