Skip to content

Commit 129ec66

Browse files
committed
Add support for configuring examples individually
This adds the ability to configure examples individually, so you can either build all of pico examples, or you can just cd into a single example and build that.
1 parent abcd62a commit 129ec66

File tree

132 files changed

+1103
-44
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+1103
-44
lines changed

CMakeLists.txt

Lines changed: 55 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
cmake_minimum_required(VERSION 3.12)
22

3-
# Pull in SDK (must be before project)
4-
include(pico_sdk_import.cmake)
5-
include(pico_extras_import_optional.cmake)
3+
if (NOT CMAKE_PROJECT_NAME)
4+
# Pull in SDK (must be before project)
5+
include(${CMAKE_CURRENT_LIST_DIR}/pico_sdk_import.cmake)
6+
include(${CMAKE_CURRENT_LIST_DIR}/pico_extras_import_optional.cmake)
67

7-
project(pico_examples C CXX ASM)
8+
pico_is_top_level_project(PICO_EXAMPLES_TOP_LEVEL_PROJECT)
9+
10+
if (PICO_EXAMPLES_TOP_LEVEL_PROJECT)
11+
project(pico_examples C CXX ASM)
12+
else()
13+
# Go back to individual example for project
14+
return()
15+
endif()
16+
endif()
817

918
set(CMAKE_C_STANDARD 11)
1019
set(CMAKE_CXX_STANDARD 17)
@@ -13,7 +22,7 @@ if (PICO_SDK_VERSION_STRING VERSION_LESS "2.1.0")
1322
message(FATAL_ERROR "Raspberry Pi Pico SDK version 2.1.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING}")
1423
endif()
1524

16-
set(PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR})
25+
set(PICO_EXAMPLES_PATH ${CMAKE_CURRENT_LIST_DIR})
1726

1827
# If you want debug output from USB (pass -DPICO_STDIO_USB=1) this ensures you don't lose any debug output while USB is set up
1928
if (NOT DEFINED PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS)
@@ -23,7 +32,7 @@ endif()
2332
# Initialize the SDK
2433
pico_sdk_init()
2534

26-
include(example_auto_set_url.cmake)
35+
include(${CMAKE_CURRENT_LIST_DIR}/example_auto_set_url.cmake)
2736

2837
function(add_subdirectory_exclude_platforms NAME)
2938
if (ARGN)
@@ -42,13 +51,6 @@ function(add_subdirectory_exclude_platforms NAME)
4251
add_subdirectory(${NAME})
4352
endfunction()
4453

45-
# Add blink example
46-
add_subdirectory_exclude_platforms(blink)
47-
add_subdirectory_exclude_platforms(blink_simple)
48-
49-
# Add hello world example
50-
add_subdirectory_exclude_platforms(hello_world)
51-
5254
add_compile_options(-Wall
5355
-Wno-format # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int
5456
-Wno-unused-function # we have some for the docs that aren't called
@@ -57,34 +59,43 @@ if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
5759
add_compile_options(-Wno-maybe-uninitialized)
5860
endif()
5961

60-
# Hardware-specific examples in subdirectories:
61-
add_subdirectory(adc)
62-
add_subdirectory(binary_info)
63-
add_subdirectory(bootloaders)
64-
add_subdirectory(clocks)
65-
add_subdirectory(cmake)
66-
add_subdirectory(dcp)
67-
add_subdirectory(divider)
68-
add_subdirectory(dma)
69-
add_subdirectory(flash)
70-
add_subdirectory(gpio)
71-
add_subdirectory(hstx)
72-
add_subdirectory(i2c)
73-
add_subdirectory(interp)
74-
add_subdirectory(multicore)
75-
add_subdirectory(otp)
76-
add_subdirectory(picoboard)
77-
add_subdirectory(pico_w)
78-
add_subdirectory(pio)
79-
add_subdirectory(pwm)
80-
add_subdirectory(reset)
81-
add_subdirectory(rtc)
82-
add_subdirectory(spi)
83-
add_subdirectory(system)
84-
add_subdirectory(timer)
85-
add_subdirectory(uart)
86-
add_subdirectory(universal)
87-
add_subdirectory(usb)
88-
add_subdirectory(watchdog)
89-
add_subdirectory(sha)
90-
add_subdirectory(freertos)
62+
if (PICO_EXAMPLES_TOP_LEVEL_PROJECT)
63+
# Add blink example
64+
add_subdirectory_exclude_platforms(blink)
65+
add_subdirectory_exclude_platforms(blink_simple)
66+
67+
# Add hello world example
68+
add_subdirectory_exclude_platforms(hello_world)
69+
70+
# Hardware-specific examples in subdirectories:
71+
add_subdirectory(adc)
72+
add_subdirectory(binary_info)
73+
add_subdirectory(bootloaders)
74+
add_subdirectory(clocks)
75+
add_subdirectory(cmake)
76+
add_subdirectory(dcp)
77+
add_subdirectory(divider)
78+
add_subdirectory(dma)
79+
add_subdirectory(flash)
80+
add_subdirectory(gpio)
81+
add_subdirectory(hstx)
82+
add_subdirectory(i2c)
83+
add_subdirectory(interp)
84+
add_subdirectory(multicore)
85+
add_subdirectory(otp)
86+
add_subdirectory(picoboard)
87+
add_subdirectory(pico_w)
88+
add_subdirectory(pio)
89+
add_subdirectory(pwm)
90+
add_subdirectory(reset)
91+
add_subdirectory(rtc)
92+
add_subdirectory(spi)
93+
add_subdirectory(system)
94+
add_subdirectory(timer)
95+
add_subdirectory(uart)
96+
add_subdirectory(universal)
97+
add_subdirectory(usb)
98+
add_subdirectory(watchdog)
99+
add_subdirectory(sha)
100+
add_subdirectory(freertos)
101+
endif()

adc/adc_console/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(adc_console C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_executable(adc_console
210
adc_console.c
311
)

adc/dma_capture/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(dma_capture C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_executable(adc_dma_capture
210
dma_capture.c
311
)

adc/hello_adc/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(hello_adc C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_executable(hello_adc
210
hello_adc.c
311
)

adc/joystick_display/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(joystick_display C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_executable(joystick_display
210
joystick_display.c
311
)

adc/microphone_adc/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(microphone_adc C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_executable(microphone_adc
210
microphone_adc.c
311
)

adc/onboard_temperature/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(onboard_temperature C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_executable(onboard_temperature onboard_temperature.c)
210

311
target_link_libraries(onboard_temperature pico_stdlib hardware_adc)

adc/read_vsys/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(read_vsys C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
add_library(power_status_adc INTERFACE)
210
target_sources(power_status_adc INTERFACE
311
${CMAKE_CURRENT_LIST_DIR}/power_status.c

binary_info/blink_any/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(blink_any C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
if (NOT PICO_CYW43_SUPPORTED)
210
message("Only building blink_any for non W boards as PICO_CYW43_SUPPORTED is not set")
311
endif()

binary_info/hello_anything/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
3+
if (NOT CMAKE_PROJECT_NAME)
4+
include(../../CMakeLists.txt)
5+
project(hello_anything C CXX ASM)
6+
include(../../CMakeLists.txt)
7+
endif()
8+
19
if (TARGET tinyusb_device)
210
add_executable(hello_anything
311
hello_anything.c

0 commit comments

Comments
 (0)