1load("@pico-sdk//bazel:defs.bzl", "incompatible_with_config", "compatible_with_config")
2
3package(default_visibility = ["//visibility:public"])
4
5# Some of the LWIP sys_arch.h and the lwip headers depend circularly on one
6# another. Include them all in the same target.
7cc_library(
8    name = "pico_lwip_headers",
9    hdrs = glob(["**/*.h"]),
10    includes = [
11        "contrib/ports/freertos/include/arch",
12        "src/include",
13    ],
14    visibility = [
15        "@pico-sdk//src/rp2_common/pico_lwip:__pkg__",
16    ],
17    deps = [
18        "@pico-sdk//src/rp2_common/pico_lwip:pico_lwip_config",
19    ],
20)
21
22cc_library(
23    name = "pico_lwip_core",
24    srcs = glob(["src/core/*.c"]),
25    deps = [
26        ":pico_lwip_headers",
27        "@pico-sdk//bazel/config:PICO_LWIP_CONFIG",
28    ],
29    target_compatible_with = incompatible_with_config("@pico-sdk//bazel/constraint:pico_lwip_config_unset")
30)
31
32cc_library(
33    name = "pico_lwip_core4",
34    srcs = glob(["src/core/ipv4/*.c"]),
35    deps = [":pico_lwip_core"],
36    alwayslink = True,
37)
38
39cc_library(
40    name = "pico_lwip_core6",
41    srcs = glob(["src/core/ipv6/*.c"]),
42    deps = [":pico_lwip_core"],
43    alwayslink = True,
44)
45
46cc_library(
47    name = "pico_lwip_api",
48    srcs = glob(["src/api/*.c"]),
49    deps = [":pico_lwip_core"],
50)
51
52cc_library(
53    name = "pico_lwip_netif",
54    srcs = [
55        "src/netif/bridgeif.c",
56        "src/netif/bridgeif_fdb.c",
57        "src/netif/ethernet.c",
58        "src/netif/slipif.c",
59    ],
60    deps = [":pico_lwip_core"],
61)
62
63cc_library(
64    name = "pico_lwip_sixlowpan",
65    srcs = [
66        "src/netif/lowpan6.c",
67        "src/netif/lowpan6_ble.c",
68        "src/netif/lowpan6_common.c",
69        "src/netif/zepif.c",
70    ],
71    deps = [":pico_lwip_core"],
72)
73
74cc_library(
75    name = "pico_lwip_ppp",
76    srcs = glob(["src/netif/ppp/*/*.c"]),
77    deps = [":pico_lwip_core"],
78)
79
80cc_library(
81    name = "pico_lwip_snmp",
82    srcs = glob(
83        ["src/apps/snmp/*.c"],
84        # mbedtls is provided through pico_lwip_mbedtls.
85        exclude = ["*mbedtls.c"],
86    ),
87    deps = [":pico_lwip_core"],
88)
89
90cc_library(
91    name = "pico_lwip_http",
92    srcs = glob(["src/apps/http/*.c"]),
93    deps = [":pico_lwip_core"],
94)
95
96cc_library(
97    name = "pico_lwip_makefsdata",
98    srcs = ["src/apps/http/makefsdata/makefsdata.c"],
99    deps = [":pico_lwip_core"],
100)
101
102cc_library(
103    name = "pico_lwip_iperf",
104    srcs = ["src/apps/lwiperf/lwiperf.c"],
105    deps = [":pico_lwip_core"],
106)
107
108cc_library(
109    name = "pico_lwip_smtp",
110    srcs = ["src/apps/smtp/smtp.c"],
111    deps = [":pico_lwip_core"],
112)
113
114cc_library(
115    name = "pico_lwip_sntp",
116    srcs = ["src/apps/sntp/sntp.c"],
117    deps = [":pico_lwip_core"],
118)
119
120cc_library(
121    name = "pico_lwip_mdns",
122    srcs = glob(["src/apps/mdns/*.c"]),
123    deps = [":pico_lwip_core"],
124)
125
126cc_library(
127    name = "pico_lwip_netbios",
128    srcs = ["src/apps/netbiosns/netbiosns.c"],
129    deps = [":pico_lwip_core"],
130)
131
132cc_library(
133    name = "pico_lwip_tftp",
134    srcs = ["src/apps/tftp/tftp.c"],
135    deps = [":pico_lwip_core"],
136)
137
138cc_library(
139    name = "pico_lwip_mbedtls",
140    srcs = [
141        "src/apps/altcp_tls/altcp_tls_mbedtls.c",
142        "src/apps/altcp_tls/altcp_tls_mbedtls_mem.c",
143        "src/apps/snmp/snmpv3_mbedtls.c",
144    ],
145    deps = [":pico_lwip_core"],
146)
147
148cc_library(
149    name = "pico_lwip_mqttt",
150    srcs = ["src/apps/mqtt/mqtt.c"],
151    deps = [":pico_lwip_core"],
152)
153
154cc_library(
155    name = "pico_lwip",
156    deps = [
157        ":pico_lwip_api",
158        ":pico_lwip_core",
159        ":pico_lwip_core4",
160        ":pico_lwip_core6",
161        ":pico_lwip_netif",
162        ":pico_lwip_ppp",
163        ":pico_lwip_sixlowpan",
164    ],
165)
166
167cc_library(
168    name = "pico_lwip_contrib_freertos",
169    srcs = ["contrib/ports/freertos/sys_arch.c"],
170    includes = ["contrib/ports/freertos/include"],
171    target_compatible_with = incompatible_with_config(
172        "@pico-sdk//bazel/constraint:pico_freertos_unset",
173    ),
174    deps = [
175        ":pico_lwip_headers",
176        "@pico-sdk//bazel/config:PICO_FREERTOS_LIB",
177    ],
178)
179