1load("//bazel/util:label_flag_matches.bzl", "label_flag_matches")
2
3package(default_visibility = ["//visibility:public"])
4
5# This constraint represents the dimension that guides the Pico SDK build. This
6# constraint will only ever enumerate specific MCUs (and the host), and does NOT
7# cover the differences from board-to-board.
8constraint_setting(
9    name = "sdk_target",
10    default_constraint_value = "host",
11)
12
13# This constraint value is used to guide the host build.
14constraint_value(
15    name = "host",
16    constraint_setting = ":sdk_target",
17)
18
19# This constraint value is used to guide parts of the build that are specific
20# to the rp2040.
21constraint_value(
22    name = "rp2040",
23    constraint_setting = ":sdk_target",
24)
25
26# This constraint value is used to guide parts of the build that are specific
27# to the rp2350.
28constraint_value(
29    name = "rp2350",
30    constraint_setting = ":sdk_target",
31)
32
33constraint_setting(
34    name = "wireless_support",
35    default_constraint_value = "no_wireless",
36)
37
38constraint_value(
39    name = "no_wireless",
40    constraint_setting = ":wireless_support",
41)
42
43constraint_value(
44    name = "cyw43_wireless",
45    constraint_setting = ":wireless_support",
46)
47
48config_setting(
49    name = "is_pico_w",
50    flag_values = {"//bazel/config:PICO_BOARD": "pico_w"},
51)
52
53config_setting(
54    name = "is_pico2_w",
55    flag_values = {"//bazel/config:PICO_BOARD": "pico2_w"},
56)
57
58config_setting(
59    name = "pico_toolchain_clang_enabled",
60    flag_values = {"//bazel/config:PICO_TOOLCHAIN": "clang"},
61)
62
63config_setting(
64    name = "pico_toolchain_gcc_enabled",
65    flag_values = {"//bazel/config:PICO_TOOLCHAIN": "gcc"},
66)
67
68config_setting(
69    name = "pico_baremetal_enabled",
70    flag_values = {"//bazel/config:PICO_BARE_METAL": "True"},
71)
72
73config_setting(
74    name = "pico_no_gc_sections_enabled",
75    flag_values = {"//bazel/config:PICO_NO_GC_SECTIONS": "True"},
76)
77
78config_setting(
79    name = "pico_cxx_enable_exceptions_enabled",
80    flag_values = {"//bazel/config:PICO_CXX_ENABLE_EXCEPTIONS": "True"},
81)
82
83config_setting(
84    name = "pico_cxx_enable_rtti_enabled",
85    flag_values = {"//bazel/config:PICO_CXX_ENABLE_RTTI": "True"},
86)
87
88config_setting(
89    name = "pico_cxx_enable_cxa_atexit_enabled",
90    flag_values = {"//bazel/config:PICO_CXX_ENABLE_RTTI": "True"},
91)
92
93config_setting(
94    name = "pico_stdio_uart_enabled",
95    flag_values = {"//bazel/config:PICO_STDIO_UART": "True"},
96)
97
98config_setting(
99    name = "pico_stdio_usb_enabled",
100    flag_values = {"//bazel/config:PICO_STDIO_USB": "True"},
101)
102
103config_setting(
104    name = "pico_stdio_semihosting_enabled",
105    flag_values = {"//bazel/config:PICO_STDIO_SEMIHOSTING": "True"},
106)
107
108config_setting(
109    name = "pico_stdio_rtt_enabled",
110    flag_values = {"//bazel/config:PICO_STDIO_RTT": "True"},
111)
112
113config_setting(
114    name = "pico_multicore_enabled",
115    flag_values = {"//bazel/config:PICO_MULTICORE_ENABLED": "True"},
116)
117
118config_setting(
119    name = "pico_float_auto_enabled",
120    flag_values = {"//bazel/config:PICO_DEFAULT_FLOAT_IMPL": "auto"},
121)
122
123config_setting(
124    name = "pico_float_compiler_enabled",
125    flag_values = {"//bazel/config:PICO_DEFAULT_FLOAT_IMPL": "compiler"},
126)
127
128config_setting(
129    name = "pico_float_dcp_enabled",
130    flag_values = {"//bazel/config:PICO_DEFAULT_FLOAT_IMPL": "dcp"},
131)
132
133config_setting(
134    name = "pico_float_rp2040_enabled",
135    flag_values = {"//bazel/config:PICO_DEFAULT_FLOAT_IMPL": "rp2040"},
136)
137
138config_setting(
139    name = "pico_float_vfp_enabled",
140    flag_values = {"//bazel/config:PICO_DEFAULT_FLOAT_IMPL": "vfp"},
141)
142
143config_setting(
144    name = "pico_double_auto_enabled",
145    flag_values = {"//bazel/config:PICO_DEFAULT_DOUBLE_IMPL": "auto"},
146)
147
148config_setting(
149    name = "pico_double_compiler_enabled",
150    flag_values = {"//bazel/config:PICO_DEFAULT_DOUBLE_IMPL": "compiler"},
151)
152
153config_setting(
154    name = "pico_double_dcp_enabled",
155    flag_values = {"//bazel/config:PICO_DEFAULT_DOUBLE_IMPL": "dcp"},
156)
157
158config_setting(
159    name = "pico_double_rp2040_enabled",
160    flag_values = {"//bazel/config:PICO_DEFAULT_DOUBLE_IMPL": "rp2040"},
161)
162
163config_setting(
164    name = "pico_divider_hardware_enabled",
165    flag_values = {"//bazel/config:PICO_DEFAULT_DIVIDER_IMPL": "hardware"},
166)
167
168config_setting(
169    name = "pico_divider_auto_enabled",
170    flag_values = {"//bazel/config:PICO_DEFAULT_DIVIDER_IMPL": "auto"},
171)
172
173config_setting(
174    name = "pico_printf_pico_enabled",
175    flag_values = {"//bazel/config:PICO_DEFAULT_PRINTF_IMPL": "pico"},
176)
177
178config_setting(
179    name = "pico_printf_compiler_enabled",
180    flag_values = {"//bazel/config:PICO_DEFAULT_PRINTF_IMPL": "compiler"},
181)
182
183config_setting(
184    name = "pico_async_context_poll_enabled",
185    flag_values = {"//bazel/config:PICO_ASYNC_CONTEXT_IMPL": "poll"},
186)
187
188config_setting(
189    name = "pico_async_context_threadsafe_background_enabled",
190    flag_values = {"//bazel/config:PICO_ASYNC_CONTEXT_IMPL": "threadsafe_background"},
191)
192
193config_setting(
194    name = "pico_async_context_freertos_enabled",
195    flag_values = {"//bazel/config:PICO_ASYNC_CONTEXT_IMPL": "freertos"},
196)
197
198config_setting(
199    name = "pico_use_default_max_page_size_enabled",
200    flag_values = {"//bazel/config:PICO_USE_DEFAULT_MAX_PAGE_SIZE": "True"},
201)
202
203config_setting(
204    name = "pico_no_target_name_enabled",
205    flag_values = {"//bazel/config:PICO_NO_TARGET_NAME": "True"},
206)
207
208config_setting(
209    name = "pico_clib_llvm_libc_enabled",
210    flag_values = {"//bazel/config:PICO_CLIB": "llvm_libc"},
211)
212
213config_setting(
214    name = "pico_clib_newlib_enabled",
215    flag_values = {"//bazel/config:PICO_CLIB": "newlib"},
216)
217
218config_setting(
219    name = "pico_clib_picolibc_enabled",
220    flag_values = {"//bazel/config:PICO_CLIB": "picolibc"},
221)
222
223config_setting(
224    name = "pico_bt_enable_ble_enabled",
225    flag_values = {"//bazel/config:PICO_BT_ENABLE_BLE": "True"},
226)
227
228config_setting(
229    name = "pico_bt_enable_classic_enabled",
230    flag_values = {"//bazel/config:PICO_BT_ENABLE_CLASSIC": "True"},
231)
232
233config_setting(
234    name = "pico_bt_enable_mesh_enabled",
235    flag_values = {"//bazel/config:PICO_BT_ENABLE_MESH": "True"},
236)
237
238label_flag_matches(
239    name = "pico_lwip_config_unset",
240    flag = "//bazel/config:PICO_LWIP_CONFIG",
241    value = "//bazel:empty_cc_lib",
242)
243
244label_flag_matches(
245    name = "pico_btstack_config_unset",
246    flag = "//bazel/config:PICO_BTSTACK_CONFIG",
247    value = "//bazel:empty_cc_lib",
248)
249
250label_flag_matches(
251    name = "pico_freertos_unset",
252    flag = "//bazel/config:PICO_FREERTOS_LIB",
253    value = "//bazel:empty_cc_lib",
254)
255