Skip to content

Commit ceb74f2

Browse files
committed
Adds lwip component
1 parent 4f2af3f commit ceb74f2

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

+9827
-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.git

components/lwip/CMakeLists.txt

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
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+
endif()
116+
if(CONFIG_LWIP_PPP_SUPPORT)
117+
list(APPEND srcs
118+
"lwip/src/netif/ppp/auth.c"
119+
"lwip/src/netif/ppp/ccp.c"
120+
"lwip/src/netif/ppp/chap-md5.c"
121+
"lwip/src/netif/ppp/chap-new.c"
122+
"lwip/src/netif/ppp/chap_ms.c"
123+
"lwip/src/netif/ppp/demand.c"
124+
"lwip/src/netif/ppp/eap.c"
125+
"lwip/src/netif/ppp/ecp.c"
126+
"lwip/src/netif/ppp/eui64.c"
127+
"lwip/src/netif/ppp/fsm.c"
128+
"lwip/src/netif/ppp/ipcp.c"
129+
"lwip/src/netif/ppp/ipv6cp.c"
130+
"lwip/src/netif/ppp/lcp.c"
131+
"lwip/src/netif/ppp/magic.c"
132+
"lwip/src/netif/ppp/mppe.c"
133+
"lwip/src/netif/ppp/multilink.c"
134+
"lwip/src/netif/ppp/ppp.c"
135+
"lwip/src/netif/ppp/pppapi.c"
136+
"lwip/src/netif/ppp/pppcrypt.c"
137+
"lwip/src/netif/ppp/pppoe.c"
138+
"lwip/src/netif/ppp/pppol2tp.c"
139+
"lwip/src/netif/ppp/pppos.c"
140+
"lwip/src/netif/ppp/upap.c"
141+
"lwip/src/netif/ppp/utils.c"
142+
"lwip/src/netif/ppp/vj.c"
143+
"lwip/src/netif/ppp/polarssl/arc4.c"
144+
"lwip/src/netif/ppp/polarssl/des.c"
145+
"lwip/src/netif/ppp/polarssl/md4.c"
146+
"lwip/src/netif/ppp/polarssl/md5.c"
147+
"lwip/src/netif/ppp/polarssl/sha1.c")
148+
endif()
149+
150+
if(NOT ${target} STREQUAL "linux")
151+
# Support for vfs and linker fragments only for target builds
152+
set(priv_requires vfs)
153+
set(linker_fragments linker.lf)
154+
if(CONFIG_VFS_SUPPORT_IO)
155+
list(APPEND srcs "port/${target}/vfs_lwip.c")
156+
else()
157+
list(APPEND srcs "port/${target}/no_vfs_syscalls.c")
158+
endif()
159+
endif()
160+
161+
if(CONFIG_LWIP_ICMP)
162+
list(APPEND srcs
163+
"apps/ping/esp_ping.c"
164+
"apps/ping/ping.c"
165+
"apps/ping/ping_sock.c")
166+
endif()
167+
168+
if(CONFIG_LWIP_DHCPS)
169+
list(APPEND srcs "apps/dhcpserver/dhcpserver.c")
170+
endif()
171+
172+
if(CONFIG_LWIP_DHCP_RESTORE_LAST_IP)
173+
list(APPEND srcs "port/esp32xx/netif/dhcp_state.c")
174+
endif()
175+
176+
idf_component_register(SRCS "${srcs}"
177+
INCLUDE_DIRS ${include_dirs}
178+
LDFRAGMENTS ${linker_fragments}
179+
PRIV_REQUIRES ${priv_requires})
180+
181+
# lots of LWIP source files evaluate macros that check address of stack variables
182+
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-address)
183+
target_compile_definitions(${COMPONENT_LIB} PRIVATE ESP_LWIP_COMPONENT_BUILD)
184+
185+
set_source_files_properties(
186+
lwip/src/netif/ppp/pppos.c
187+
PROPERTIES COMPILE_FLAGS
188+
-Wno-type-limits
189+
)
190+
# "comparison is always false due to limited range of data type" warning
191+
# when setting CONFIG_LWIP_TCP_WND_DEFAULT to 65535
192+
set_source_files_properties(
193+
lwip/src/core/tcp.c
194+
PROPERTIES COMPILE_FLAGS
195+
-Wno-type-limits
196+
)
197+
198+
if (${CONFIG_LWIP_ALTCP_TLS})
199+
target_compile_definitions(${COMPONENT_LIB} PRIVATE -DLWIP_ALTCP=1
200+
-DLWIP_ALTCP_TLS=1
201+
-DLWIP_ALTCP_TLS_MBEDTLS=1
202+
-DALTCP_MBEDTLS_DEBUG=128U
203+
-DALTCP_MBEDTLS_LIB_DEBUG=128U
204+
-DALTCP_MBEDTLS_USE_SESSION_CACHE=1
205+
-DALTCP_MBEDTLS_USE_SESSION_TICKETS=1
206+
)
207+
endif()
208+
209+
# ignore some declaration mismatches
210+
set_source_files_properties(
211+
lwip/src/netif/ppp/chap_ms.c
212+
PROPERTIES COMPILE_FLAGS
213+
-Wno-array-parameter
214+
)
215+
216+
if(CONFIG_OPENTHREAD_ENABLED)
217+
idf_component_optional_requires(PRIVATE openthread)
218+
endif()
219+
220+
if(CONFIG_ETH_ENABLED)
221+
idf_component_optional_requires(PRIVATE esp_eth)
222+
endif()
223+
224+
if(CONFIG_LWIP_DHCP_RESTORE_LAST_IP)
225+
idf_component_optional_requires(PRIVATE nvs_flash)
226+
endif()
227+
228+
target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")
229+
230+
if(${target} STREQUAL "linux")
231+
set(THREADS_PREFER_PTHREAD_FLAG ON)
232+
find_package(Threads REQUIRED)
233+
target_link_libraries(${COMPONENT_LIB} PRIVATE Threads::Threads)
234+
endif()

0 commit comments

Comments
 (0)