Skip to content

Commit 6f10075

Browse files
committed
Adds lwip component
1 parent f7cf4b4 commit 6f10075

Some content is hidden

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

62 files changed

+9830
-0
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "components/lwip/lwip"]
2+
path = components/lwip/lwip
3+
url = https://github.com/hamzahajeir/esp-lwip

components/lwip/CMakeLists.txt

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
idf_build_get_property(target IDF_TARGET)
2+
set(CONFIG_LWIP_ALTCP_TLS 1)
3+
4+
if(NOT ${target} STREQUAL "linux")
5+
# ESP platform targets share the same port folder
6+
set(target esp32xx)
7+
endif()
8+
9+
set(include_dirs
10+
include
11+
include/apps
12+
include/apps/sntp
13+
lwip/src/include
14+
port/include
15+
port/freertos/include/
16+
port/${target}/include
17+
port/${target}/include/arch
18+
)
19+
20+
set(srcs
21+
"apps/sntp/sntp.c"
22+
"lwip/src/api/api_lib.c"
23+
"lwip/src/api/api_msg.c"
24+
"lwip/src/api/err.c"
25+
"lwip/src/api/if_api.c"
26+
"lwip/src/api/netbuf.c"
27+
"lwip/src/api/netdb.c"
28+
"lwip/src/api/netifapi.c"
29+
"lwip/src/api/sockets.c"
30+
"lwip/src/api/tcpip.c"
31+
"lwip/src/apps/sntp/sntp.c"
32+
"lwip/src/apps/netbiosns/netbiosns.c"
33+
"lwip/src/core/def.c"
34+
"lwip/src/core/dns.c"
35+
"lwip/src/core/inet_chksum.c"
36+
"lwip/src/core/init.c"
37+
"lwip/src/core/ip.c"
38+
"lwip/src/core/mem.c"
39+
"lwip/src/core/memp.c"
40+
"lwip/src/core/netif.c"
41+
"lwip/src/core/pbuf.c"
42+
"lwip/src/core/raw.c"
43+
"lwip/src/core/stats.c"
44+
"lwip/src/core/sys.c"
45+
"lwip/src/core/tcp.c"
46+
"lwip/src/core/tcp_in.c"
47+
"lwip/src/core/tcp_out.c"
48+
"lwip/src/core/timeouts.c"
49+
"lwip/src/core/udp.c"
50+
"lwip/src/core/ipv4/autoip.c"
51+
"lwip/src/core/ipv4/dhcp.c"
52+
"lwip/src/core/ipv4/etharp.c"
53+
"lwip/src/core/ipv4/icmp.c"
54+
"lwip/src/core/ipv4/igmp.c"
55+
"lwip/src/core/ipv4/ip4.c"
56+
"lwip/src/core/ipv4/ip4_napt.c"
57+
"lwip/src/core/ipv4/ip4_addr.c"
58+
"lwip/src/core/ipv4/ip4_frag.c"
59+
"lwip/src/core/ipv6/dhcp6.c"
60+
"lwip/src/core/ipv6/ethip6.c"
61+
"lwip/src/core/ipv6/icmp6.c"
62+
"lwip/src/core/ipv6/inet6.c"
63+
"lwip/src/core/ipv6/ip6.c"
64+
"lwip/src/core/ipv6/ip6_addr.c"
65+
"lwip/src/core/ipv6/ip6_frag.c"
66+
"lwip/src/core/ipv6/mld6.c"
67+
"lwip/src/core/ipv6/nd6.c"
68+
"lwip/src/netif/ethernet.c"
69+
"lwip/src/netif/bridgeif.c"
70+
"lwip/src/netif/bridgeif_fdb.c"
71+
"lwip/src/netif/slipif.c"
72+
"lwip/src/netif/slipif.c"
73+
"lwip/src/netif/ppp/auth.c"
74+
"lwip/src/netif/ppp/ccp.c"
75+
"lwip/src/netif/ppp/chap-md5.c"
76+
"lwip/src/netif/ppp/chap-new.c"
77+
"lwip/src/netif/ppp/chap_ms.c"
78+
"lwip/src/netif/ppp/demand.c"
79+
"lwip/src/netif/ppp/eap.c"
80+
"lwip/src/netif/ppp/ecp.c"
81+
"lwip/src/netif/ppp/eui64.c"
82+
"lwip/src/netif/ppp/fsm.c"
83+
"lwip/src/netif/ppp/ipcp.c"
84+
"lwip/src/netif/ppp/ipv6cp.c"
85+
"lwip/src/netif/ppp/lcp.c"
86+
"lwip/src/netif/ppp/magic.c"
87+
"lwip/src/netif/ppp/mppe.c"
88+
"lwip/src/netif/ppp/multilink.c"
89+
"lwip/src/netif/ppp/ppp.c"
90+
"lwip/src/netif/ppp/pppapi.c"
91+
"lwip/src/netif/ppp/pppcrypt.c"
92+
"lwip/src/netif/ppp/pppoe.c"
93+
"lwip/src/netif/ppp/pppol2tp.c"
94+
"lwip/src/netif/ppp/pppos.c"
95+
"lwip/src/netif/ppp/upap.c"
96+
"lwip/src/netif/ppp/utils.c"
97+
"lwip/src/netif/ppp/vj.c"
98+
"port/hooks/tcp_isn_default.c"
99+
"port/hooks/lwip_default_hooks.c"
100+
"port/debug/lwip_debug.c"
101+
"port/sockets_ext.c"
102+
"port/freertos/sys_arch.c")
103+
if (${CONFIG_LWIP_ALTCP_TLS})
104+
105+
list(APPEND srcs
106+
"lwip/src/core/altcp_alloc.c"
107+
"lwip/src/core/altcp_tcp.c"
108+
"lwip/src/core/altcp.c"
109+
"lwip/src/apps/altcp_tls/altcp_tls_mbedtls_mem.c"
110+
"lwip/src/apps/altcp_tls/altcp_tls_mbedtls.c")
111+
112+
list(APPEND include_dirs lwip/src/apps/altcp_tls)
113+
# add_compile_definitions(LWIP_ALTCP=1)
114+
# add_compile_definitions(LWIP_ALTCP_TLS=1)
115+
116+
set(requires mbedtls)
117+
endif()
118+
if(CONFIG_LWIP_PPP_SUPPORT)
119+
list(APPEND srcs
120+
"lwip/src/netif/ppp/auth.c"
121+
"lwip/src/netif/ppp/ccp.c"
122+
"lwip/src/netif/ppp/chap-md5.c"
123+
"lwip/src/netif/ppp/chap-new.c"
124+
"lwip/src/netif/ppp/chap_ms.c"
125+
"lwip/src/netif/ppp/demand.c"
126+
"lwip/src/netif/ppp/eap.c"
127+
"lwip/src/netif/ppp/ecp.c"
128+
"lwip/src/netif/ppp/eui64.c"
129+
"lwip/src/netif/ppp/fsm.c"
130+
"lwip/src/netif/ppp/ipcp.c"
131+
"lwip/src/netif/ppp/ipv6cp.c"
132+
"lwip/src/netif/ppp/lcp.c"
133+
"lwip/src/netif/ppp/magic.c"
134+
"lwip/src/netif/ppp/mppe.c"
135+
"lwip/src/netif/ppp/multilink.c"
136+
"lwip/src/netif/ppp/ppp.c"
137+
"lwip/src/netif/ppp/pppapi.c"
138+
"lwip/src/netif/ppp/pppcrypt.c"
139+
"lwip/src/netif/ppp/pppoe.c"
140+
"lwip/src/netif/ppp/pppol2tp.c"
141+
"lwip/src/netif/ppp/pppos.c"
142+
"lwip/src/netif/ppp/upap.c"
143+
"lwip/src/netif/ppp/utils.c"
144+
"lwip/src/netif/ppp/vj.c"
145+
"lwip/src/netif/ppp/polarssl/arc4.c"
146+
"lwip/src/netif/ppp/polarssl/des.c"
147+
"lwip/src/netif/ppp/polarssl/md4.c"
148+
"lwip/src/netif/ppp/polarssl/md5.c"
149+
"lwip/src/netif/ppp/polarssl/sha1.c")
150+
endif()
151+
152+
if(NOT ${target} STREQUAL "linux")
153+
# Support for vfs and linker fragments only for target builds
154+
set(priv_requires vfs)
155+
set(linker_fragments linker.lf)
156+
if(CONFIG_VFS_SUPPORT_IO)
157+
list(APPEND srcs "port/${target}/vfs_lwip.c")
158+
else()
159+
list(APPEND srcs "port/${target}/no_vfs_syscalls.c")
160+
endif()
161+
endif()
162+
163+
if(CONFIG_LWIP_ICMP)
164+
list(APPEND srcs
165+
"apps/ping/esp_ping.c"
166+
"apps/ping/ping.c"
167+
"apps/ping/ping_sock.c")
168+
endif()
169+
170+
if(CONFIG_LWIP_DHCPS)
171+
list(APPEND srcs "apps/dhcpserver/dhcpserver.c")
172+
endif()
173+
174+
if(CONFIG_LWIP_DHCP_RESTORE_LAST_IP)
175+
list(APPEND srcs "port/esp32xx/netif/dhcp_state.c")
176+
endif()
177+
178+
idf_component_register(SRCS "${srcs}"
179+
INCLUDE_DIRS ${include_dirs}
180+
LDFRAGMENTS ${linker_fragments}
181+
REQUIRES ${requires}
182+
PRIV_REQUIRES ${priv_requires})
183+
184+
# lots of LWIP source files evaluate macros that check address of stack variables
185+
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-address)
186+
target_compile_definitions(${COMPONENT_LIB} PRIVATE ESP_LWIP_COMPONENT_BUILD)
187+
188+
set_source_files_properties(
189+
lwip/src/netif/ppp/pppos.c
190+
PROPERTIES COMPILE_FLAGS
191+
-Wno-type-limits
192+
)
193+
# "comparison is always false due to limited range of data type" warning
194+
# when setting CONFIG_LWIP_TCP_WND_DEFAULT to 65535
195+
set_source_files_properties(
196+
lwip/src/core/tcp.c
197+
PROPERTIES COMPILE_FLAGS
198+
-Wno-type-limits
199+
)
200+
201+
if (${CONFIG_LWIP_ALTCP_TLS})
202+
target_compile_definitions(${COMPONENT_LIB} PRIVATE -DLWIP_ALTCP=1
203+
-DLWIP_ALTCP_TLS=1
204+
-DLWIP_ALTCP_TLS_MBEDTLS=1
205+
-DALTCP_MBEDTLS_DEBUG=128U
206+
-DALTCP_MBEDTLS_LIB_DEBUG=128U
207+
-DALTCP_MBEDTLS_USE_SESSION_CACHE=1
208+
-DALTCP_MBEDTLS_USE_SESSION_TICKETS=1
209+
)
210+
endif()
211+
212+
# ignore some declaration mismatches
213+
set_source_files_properties(
214+
lwip/src/netif/ppp/chap_ms.c
215+
PROPERTIES COMPILE_FLAGS
216+
-Wno-array-parameter
217+
)
218+
219+
if(CONFIG_OPENTHREAD_ENABLED)
220+
idf_component_optional_requires(PRIVATE openthread)
221+
endif()
222+
223+
if(CONFIG_ETH_ENABLED)
224+
idf_component_optional_requires(PRIVATE esp_eth)
225+
endif()
226+
227+
if(CONFIG_LWIP_DHCP_RESTORE_LAST_IP)
228+
idf_component_optional_requires(PRIVATE nvs_flash)
229+
endif()
230+
231+
target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")
232+
233+
if(${target} STREQUAL "linux")
234+
set(THREADS_PREFER_PTHREAD_FLAG ON)
235+
find_package(Threads REQUIRED)
236+
target_link_libraries(${COMPONENT_LIB} PRIVATE Threads::Threads)
237+
endif()

0 commit comments

Comments
 (0)