File: CMakeLists.txt

package info (click to toggle)
pico-sdk 2.1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 26,552 kB
  • sloc: ansic: 146,841; asm: 13,423; python: 2,417; cpp: 2,171; yacc: 381; lex: 270; makefile: 32; sh: 13; javascript: 13
file content (209 lines) | stat: -rw-r--r-- 7,808 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
add_library(kitchen_sink_libs INTERFACE)

set(KITCHEN_SINK_LIBS
    hardware_adc
    hardware_clocks
    hardware_divider
    hardware_dma
    hardware_exception
    hardware_flash
    hardware_gpio
    hardware_i2c
    hardware_interp
    hardware_irq
    hardware_pio
    hardware_powman
    hardware_pll
    hardware_pwm
    hardware_resets
    hardware_rtc
    hardware_spi
    hardware_sync
    hardware_ticks
    hardware_timer
    hardware_uart
    hardware_vreg
    hardware_watchdog
    hardware_xip_cache
    hardware_xosc
    pico_aon_timer
    pico_bit_ops
    pico_bootrom
    pico_bootsel_via_double_reset
    pico_divider
    pico_double
    pico_fix_rp2040_usb_device_enumeration
    pico_flash
    pico_float
    pico_i2c_slave
    pico_int64_ops
    pico_malloc
    pico_mem_ops
    pico_multicore
    pico_platform
    pico_rand
    pico_sha256
    pico_stdlib
    pico_sync
    pico_time
    pico_unique_id
    pico_util
)

foreach(LIB IN LISTS KITCHEN_SINK_LIBS)
    if (TARGET ${LIB})
        target_link_libraries(kitchen_sink_libs INTERFACE ${LIB})
    endif()
endforeach ()

add_library(kitchen_sink_options INTERFACE)

target_compile_options(kitchen_sink_options INTERFACE
        -Werror
        -Wall
        -Wextra
        #        -pedantic

        -Wnull-dereference
        -Wuninitialized
        -Wunused
        -Wcast-align
        -Wcast-qual
        -Wfloat-equal
        -Wmissing-format-attribute
        #-Wconversion
        -Wsign-compare
        $<$<COMPILE_LANGUAGE:C>:-Wstrict-prototypes>
        # todo we have some of these in usb_device_tiny to try to make it more readable.. perhaps doxygen would help here instead
        -Wredundant-decls

        -Wno-inline
        # todo not sure these are true, but investigate
        #-Wpacked

        # todo useful but fix later
        #-Wundef
        )

if (PICO_C_COMPILER_IS_CLANG)
    # todo fix up clang warnings
    target_compile_options(kitchen_sink_options INTERFACE
            -Wno-cast-qual
            -Wno-unused-function
            -Wno-format)
endif()

target_compile_definitions(kitchen_sink_libs INTERFACE
        PICO_FORBID_ARM_HEADERS_ON_RISCV=1
        PARAM_ASSERTIONS_ENABLE_ALL=1 # want to check all the assertions for compilation warnings
        PICO_AUDIO_DMA_IRQ=1
)

add_executable(kitchen_sink ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
target_link_libraries(kitchen_sink kitchen_sink_libs kitchen_sink_options)
pico_set_program_name(kitchen_sink "Wombat tentacles")
pico_add_extra_outputs(kitchen_sink)
target_compile_definitions(kitchen_sink PRIVATE KITCHEN_SINK_ID="regular binary")

add_executable(kitchen_sink_extra_stdio ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
if (COMMAND suppress_tinyusb_warnings)
    # Explicitly suppress warnings in TinyUSB files which have them (this has to be done
    # from the project that uses them per CMake "feature"). Note the function comes from
    # TinyUSB itself, so we have to guard against TinyUSB not being present with the above if
    suppress_tinyusb_warnings()
endif()
target_compile_definitions(kitchen_sink_extra_stdio PRIVATE
        TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1)
if (TARGET pico_lwip)
    set_source_files_properties(
            ${PICO_LWIP_PATH}/src/core/ipv4/ip4_frag.c
            PROPERTIES
            COMPILE_FLAGS "-Wno-null-dereference")

endif()
target_link_libraries(kitchen_sink_extra_stdio kitchen_sink_libs kitchen_sink_options)
pico_add_extra_outputs(kitchen_sink_extra_stdio)
pico_enable_stdio_usb(kitchen_sink_extra_stdio 1)
pico_enable_stdio_semihosting(kitchen_sink_extra_stdio 1)

add_executable(kitchen_sink_printf_compiler ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
target_link_libraries(kitchen_sink_printf_compiler kitchen_sink_libs kitchen_sink_options)
pico_add_extra_outputs(kitchen_sink_printf_compiler)
pico_set_printf_implementation(kitchen_sink_printf_compiler compiler)

add_executable(kitchen_sink_printf_compiler_no_shortcircuit ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
target_link_libraries(kitchen_sink_printf_compiler_no_shortcircuit kitchen_sink_libs kitchen_sink_options)
pico_add_extra_outputs(kitchen_sink_printf_compiler_no_shortcircuit)
pico_set_printf_implementation(kitchen_sink_printf_compiler_no_shortcircuit compiler)
target_compile_definitions(kitchen_sink_printf_compiler_no_shortcircuit PRIVATE PICO_STDIO_SHORT_CIRCUIT_CLIB_FUNCS=0)


add_executable(kitchen_sink_printf_none ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
target_link_libraries(kitchen_sink_printf_none kitchen_sink_libs kitchen_sink_options)
pico_add_extra_outputs(kitchen_sink_printf_none)
pico_set_printf_implementation(kitchen_sink_printf_none none)

add_executable(kitchen_sink_copy_to_ram ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
pico_set_binary_type(kitchen_sink_copy_to_ram copy_to_ram)
target_link_libraries(kitchen_sink_copy_to_ram kitchen_sink_libs kitchen_sink_options)
pico_add_extra_outputs(kitchen_sink_copy_to_ram)
target_compile_definitions(kitchen_sink_copy_to_ram PRIVATE KITCHEN_SINK_ID="copy-to-ram binary")

add_executable(kitchen_sink_no_flash ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
pico_set_binary_type(kitchen_sink_no_flash no_flash)
target_link_libraries(kitchen_sink_no_flash kitchen_sink_libs kitchen_sink_options)
pico_add_extra_outputs(kitchen_sink_no_flash)
target_compile_definitions(kitchen_sink_no_flash PRIVATE KITCHEN_SINK_ID="no-flash binary")

if (NOT PICO_RP2350)
    # RP2350 does not have blocked ram
    add_executable(kitchen_sink_blocked_ram ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
    pico_set_binary_type(kitchen_sink_blocked_ram blocked_ram)
    target_link_libraries(kitchen_sink_blocked_ram kitchen_sink_libs kitchen_sink_options)
    pico_add_extra_outputs(kitchen_sink_blocked_ram)
    target_compile_definitions(kitchen_sink_blocked_ram PRIVATE KITCHEN_SINK_ID="blocked-ram binary")
endif()

add_executable(kitchen_sink_cpp ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink_cpp.cpp)
target_link_libraries(kitchen_sink_cpp kitchen_sink_libs kitchen_sink_options)
pico_set_program_name(kitchen_sink_cpp "Wombat tentacles CPP")
pico_add_extra_outputs(kitchen_sink_cpp)

if (TARGET pico_cyw43_arch)
    # for lwipopts.h
    add_executable(kitchen_sink_lwip_poll ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
    target_link_libraries(kitchen_sink_lwip_poll kitchen_sink_libs kitchen_sink_options)
    pico_add_extra_outputs(kitchen_sink_lwip_poll)
    target_link_libraries(kitchen_sink_lwip_poll
            pico_cyw43_arch_lwip_poll)
    if (TARGET pico_btstack)
        target_link_libraries(kitchen_sink_lwip_poll
            pico_btstack_ble pico_btstack_classic pico_btstack_cyw43)
    endif()
    # for lwipopts.h and btstack_config.h.
    target_include_directories(kitchen_sink_lwip_poll PRIVATE
            ${CMAKE_CURRENT_LIST_DIR})

    add_executable(kitchen_sink_lwip_background ${CMAKE_CURRENT_LIST_DIR}/kitchen_sink.c)
    target_link_libraries(kitchen_sink_lwip_background kitchen_sink_libs kitchen_sink_options)
    pico_add_extra_outputs(kitchen_sink_lwip_background)
    target_link_libraries(kitchen_sink_lwip_background
            pico_cyw43_arch_lwip_threadsafe_background)
    # for lwipopts.h
    target_include_directories(kitchen_sink_lwip_background PRIVATE
            ${CMAKE_CURRENT_LIST_DIR})

    if (TARGET pico_lwip_mbedtls)
        target_link_libraries(kitchen_sink_lwip_poll pico_lwip_mbedtls)
        target_link_libraries(kitchen_sink_lwip_background pico_lwip_mbedtls)
    endif()
    if (TARGET pico_mbedtls)
        target_link_libraries(kitchen_sink_lwip_poll pico_mbedtls)
        target_link_libraries(kitchen_sink_lwip_background pico_mbedtls)
        suppress_mbedtls_warnings()
    endif()
endif()

if (TARGET pico_btstack_base AND COMMAND suppress_btstack_warnings)
    suppress_btstack_warnings()
endif()