• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file is indended to be included in end-user CMakeLists.txt
2# include(/path/to/Filelists.cmake)
3# It assumes the variable LWIP_DIR is defined pointing to the
4# root path of lwIP sources.
5#
6# This file is NOT designed (on purpose) to be used as cmake
7# subdir via add_subdirectory()
8# The intention is to provide greater flexibility to users to
9# create their own targets using the *_SRCS variables.
10
11if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
12    include_guard(GLOBAL)
13endif()
14
15set(LWIP_VERSION_MAJOR    "2")
16set(LWIP_VERSION_MINOR    "2")
17set(LWIP_VERSION_REVISION "1")
18# LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases
19# LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for Git versions
20# Numbers 1..31 are reserved for release candidates
21set(LWIP_VERSION_RC       "LWIP_RC_RELEASE")
22
23if ("${LWIP_VERSION_RC}" STREQUAL "LWIP_RC_RELEASE")
24    set(LWIP_VERSION_STRING
25        "${LWIP_VERSION_MAJOR}.${LWIP_VERSION_MINOR}.${LWIP_VERSION_REVISION}"
26    )
27elseif ("${LWIP_VERSION_RC}" STREQUAL "LWIP_RC_DEVELOPMENT")
28    set(LWIP_VERSION_STRING
29        "${LWIP_VERSION_MAJOR}.${LWIP_VERSION_MINOR}.${LWIP_VERSION_REVISION}.dev"
30    )
31else()
32    set(LWIP_VERSION_STRING
33        "${LWIP_VERSION_MAJOR}.${LWIP_VERSION_MINOR}.${LWIP_VERSION_REVISION}.rc${LWIP_VERSION_RC}"
34    )
35endif()
36
37# The minimum set of files needed for lwIP.
38set(lwipcore_SRCS
39    ${LWIP_DIR}/src/core/init.c
40    ${LWIP_DIR}/src/core/def.c
41    ${LWIP_DIR}/src/core/dns.c
42    ${LWIP_DIR}/src/core/inet_chksum.c
43    ${LWIP_DIR}/src/core/ip.c
44    ${LWIP_DIR}/src/core/mem.c
45    ${LWIP_DIR}/src/core/memp.c
46    ${LWIP_DIR}/src/core/netif.c
47    ${LWIP_DIR}/src/core/pbuf.c
48    ${LWIP_DIR}/src/core/raw.c
49    ${LWIP_DIR}/src/core/stats.c
50    ${LWIP_DIR}/src/core/sys.c
51    ${LWIP_DIR}/src/core/altcp.c
52    ${LWIP_DIR}/src/core/altcp_alloc.c
53    ${LWIP_DIR}/src/core/altcp_tcp.c
54    ${LWIP_DIR}/src/core/tcp.c
55    ${LWIP_DIR}/src/core/tcp_in.c
56    ${LWIP_DIR}/src/core/tcp_out.c
57    ${LWIP_DIR}/src/core/timeouts.c
58    ${LWIP_DIR}/src/core/udp.c
59    ${LWIP_DIR}/src/core/net_group.c
60    ${LWIP_DIR}/src/core/lowpower.c
61)
62set(lwipcore4_SRCS
63    ${LWIP_DIR}/src/core/ipv4/acd.c
64    ${LWIP_DIR}/src/core/ipv4/autoip.c
65    ${LWIP_DIR}/src/core/ipv4/dhcp.c
66    ${LWIP_DIR}/src/core/ipv4/etharp.c
67    ${LWIP_DIR}/src/core/ipv4/icmp.c
68    ${LWIP_DIR}/src/core/ipv4/igmp.c
69    ${LWIP_DIR}/src/core/ipv4/ip4_frag.c
70    ${LWIP_DIR}/src/core/ipv4/ip4.c
71    ${LWIP_DIR}/src/core/ipv4/ip4_addr.c
72)
73set(lwipcore6_SRCS
74    ${LWIP_DIR}/src/core/ipv6/dhcp6.c
75    ${LWIP_DIR}/src/core/ipv6/ethip6.c
76    ${LWIP_DIR}/src/core/ipv6/icmp6.c
77    ${LWIP_DIR}/src/core/ipv6/inet6.c
78    ${LWIP_DIR}/src/core/ipv6/ip6.c
79    ${LWIP_DIR}/src/core/ipv6/ip6_addr.c
80    ${LWIP_DIR}/src/core/ipv6/ip6_frag.c
81    ${LWIP_DIR}/src/core/ipv6/mld6.c
82    ${LWIP_DIR}/src/core/ipv6/nd6.c
83)
84
85# APIFILES: The files which implement the sequential and socket APIs.
86set(lwipapi_SRCS
87    ${LWIP_DIR}/src/api/api_lib.c
88    ${LWIP_DIR}/src/api/api_msg.c
89    ${LWIP_DIR}/src/api/err.c
90    ${LWIP_DIR}/src/api/if_api.c
91    ${LWIP_DIR}/src/api/netbuf.c
92    ${LWIP_DIR}/src/api/netdb.c
93    ${LWIP_DIR}/src/api/netifapi.c
94    ${LWIP_DIR}/src/api/sockets.c
95    ${LWIP_DIR}/src/api/tcpip.c
96)
97
98# Files implementing various generic network interface functions
99set(lwipnetif_SRCS
100    ${LWIP_DIR}/src/netif/ethernet.c
101    ${LWIP_DIR}/src/netif/bridgeif.c
102    ${LWIP_DIR}/src/netif/bridgeif_fdb.c
103)
104
105if (NOT ${LWIP_EXCLUDE_SLIPIF})
106	list(APPEND lwipnetif_SRCS ${LWIP_DIR}/src/netif/slipif.c)
107endif()
108
109# 6LoWPAN
110set(lwipsixlowpan_SRCS
111    ${LWIP_DIR}/src/netif/lowpan6_common.c
112    ${LWIP_DIR}/src/netif/lowpan6.c
113    ${LWIP_DIR}/src/netif/lowpan6_ble.c
114    ${LWIP_DIR}/src/netif/zepif.c
115)
116
117# PPP
118set(lwipppp_SRCS
119    ${LWIP_DIR}/src/netif/ppp/auth.c
120    ${LWIP_DIR}/src/netif/ppp/ccp.c
121    ${LWIP_DIR}/src/netif/ppp/chap-md5.c
122    ${LWIP_DIR}/src/netif/ppp/chap_ms.c
123    ${LWIP_DIR}/src/netif/ppp/chap-new.c
124    ${LWIP_DIR}/src/netif/ppp/demand.c
125    ${LWIP_DIR}/src/netif/ppp/eap.c
126    ${LWIP_DIR}/src/netif/ppp/ecp.c
127    ${LWIP_DIR}/src/netif/ppp/eui64.c
128    ${LWIP_DIR}/src/netif/ppp/fsm.c
129    ${LWIP_DIR}/src/netif/ppp/ipcp.c
130    ${LWIP_DIR}/src/netif/ppp/ipv6cp.c
131    ${LWIP_DIR}/src/netif/ppp/lcp.c
132    ${LWIP_DIR}/src/netif/ppp/magic.c
133    ${LWIP_DIR}/src/netif/ppp/mppe.c
134    ${LWIP_DIR}/src/netif/ppp/multilink.c
135    ${LWIP_DIR}/src/netif/ppp/ppp.c
136    ${LWIP_DIR}/src/netif/ppp/pppapi.c
137    ${LWIP_DIR}/src/netif/ppp/pppcrypt.c
138    ${LWIP_DIR}/src/netif/ppp/pppoe.c
139    ${LWIP_DIR}/src/netif/ppp/pppol2tp.c
140    ${LWIP_DIR}/src/netif/ppp/pppos.c
141    ${LWIP_DIR}/src/netif/ppp/upap.c
142    ${LWIP_DIR}/src/netif/ppp/utils.c
143    ${LWIP_DIR}/src/netif/ppp/vj.c
144    ${LWIP_DIR}/src/netif/ppp/polarssl/arc4.c
145    ${LWIP_DIR}/src/netif/ppp/polarssl/des.c
146    ${LWIP_DIR}/src/netif/ppp/polarssl/md4.c
147    ${LWIP_DIR}/src/netif/ppp/polarssl/md5.c
148    ${LWIP_DIR}/src/netif/ppp/polarssl/sha1.c
149)
150
151# SNMPv3 agent
152set(lwipsnmp_SRCS
153    ${LWIP_DIR}/src/apps/snmp/snmp_asn1.c
154    ${LWIP_DIR}/src/apps/snmp/snmp_core.c
155    ${LWIP_DIR}/src/apps/snmp/snmp_mib2.c
156    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_icmp.c
157    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_interfaces.c
158    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_ip.c
159    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_snmp.c
160    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_system.c
161    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_tcp.c
162    ${LWIP_DIR}/src/apps/snmp/snmp_mib2_udp.c
163    ${LWIP_DIR}/src/apps/snmp/snmp_snmpv2_framework.c
164    ${LWIP_DIR}/src/apps/snmp/snmp_snmpv2_usm.c
165    ${LWIP_DIR}/src/apps/snmp/snmp_msg.c
166    ${LWIP_DIR}/src/apps/snmp/snmpv3.c
167    ${LWIP_DIR}/src/apps/snmp/snmp_netconn.c
168    ${LWIP_DIR}/src/apps/snmp/snmp_pbuf_stream.c
169    ${LWIP_DIR}/src/apps/snmp/snmp_raw.c
170    ${LWIP_DIR}/src/apps/snmp/snmp_scalar.c
171    ${LWIP_DIR}/src/apps/snmp/snmp_table.c
172    ${LWIP_DIR}/src/apps/snmp/snmp_threadsync.c
173    ${LWIP_DIR}/src/apps/snmp/snmp_traps.c
174)
175
176# HTTP server + client
177set(lwiphttp_SRCS
178    ${LWIP_DIR}/src/apps/http/altcp_proxyconnect.c
179    ${LWIP_DIR}/src/apps/http/fs.c
180    ${LWIP_DIR}/src/apps/http/http_client.c
181    ${LWIP_DIR}/src/apps/http/httpd.c
182)
183
184# MAKEFSDATA HTTP server host utility
185set(lwipmakefsdata_SRCS
186    ${LWIP_DIR}/src/apps/http/makefsdata/makefsdata.c
187)
188
189# IPERF server
190set(lwipiperf_SRCS
191    ${LWIP_DIR}/src/apps/lwiperf/lwiperf.c
192)
193
194# SMTP client
195set(lwipsmtp_SRCS
196    ${LWIP_DIR}/src/apps/smtp/smtp.c
197)
198
199# SNTP client
200set(lwipsntp_SRCS
201    ${LWIP_DIR}/src/apps/sntp/sntp.c
202)
203
204# MDNS responder
205set(lwipmdns_SRCS
206    ${LWIP_DIR}/src/apps/mdns/mdns.c
207    ${LWIP_DIR}/src/apps/mdns/mdns_out.c
208    ${LWIP_DIR}/src/apps/mdns/mdns_domain.c
209)
210
211# NetBIOS name server
212set(lwipnetbios_SRCS
213    ${LWIP_DIR}/src/apps/netbiosns/netbiosns.c
214)
215
216# TFTP server files
217set(lwiptftp_SRCS
218    ${LWIP_DIR}/src/apps/tftp/tftp.c
219)
220
221# MQTT client files
222set(lwipmqtt_SRCS
223    ${LWIP_DIR}/src/apps/mqtt/mqtt.c
224)
225
226# ARM MBEDTLS related files of lwIP rep
227set(lwipmbedtls_SRCS
228    ${LWIP_DIR}/src/apps/altcp_tls/altcp_tls_mbedtls.c
229    ${LWIP_DIR}/src/apps/altcp_tls/altcp_tls_mbedtls_mem.c
230    ${LWIP_DIR}/src/apps/snmp/snmpv3_mbedtls.c
231)
232
233# All LWIP files without apps
234set(lwipnoapps_SRCS
235    ${lwipcore_SRCS}
236    ${lwipcore4_SRCS}
237    ${lwipcore6_SRCS}
238    ${lwipapi_SRCS}
239    ${lwipnetif_SRCS}
240    ${lwipsixlowpan_SRCS}
241    ${lwipppp_SRCS}
242)
243
244# LWIPAPPFILES: All LWIP APPs
245set(lwipallapps_SRCS
246    ${lwipsnmp_SRCS}
247    ${lwiphttp_SRCS}
248    ${lwipiperf_SRCS}
249    ${lwipsmtp_SRCS}
250    ${lwipsntp_SRCS}
251    ${lwipmdns_SRCS}
252    ${lwipnetbios_SRCS}
253    ${lwiptftp_SRCS}
254    ${lwipmqtt_SRCS}
255)
256
257# Generate lwip/init.h (version info)
258configure_file(${LWIP_DIR}/src/include/lwip/init.h.cmake.in ${LWIP_DIR}/src/include/lwip/init.h)
259
260# Documentation
261set(DOXYGEN_DIR ${LWIP_DIR}/doc/doxygen)
262set(DOXYGEN_OUTPUT_DIR output)
263set(DOXYGEN_IN  ${LWIP_DIR}/doc/doxygen/lwip.Doxyfile.cmake.in)
264set(DOXYGEN_OUT ${LWIP_DIR}/doc/doxygen/lwip.Doxyfile)
265configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT})
266
267find_package(Doxygen)
268if (DOXYGEN_FOUND)
269    message(STATUS "Doxygen build started")
270
271    add_custom_target(lwipdocs
272        COMMAND ${CMAKE_COMMAND} -E remove_directory ${DOXYGEN_DIR}/${DOXYGEN_OUTPUT_DIR}/html
273        COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
274        WORKING_DIRECTORY ${DOXYGEN_DIR}
275        COMMENT "Generating API documentation with Doxygen"
276        VERBATIM)
277else (DOXYGEN_FOUND)
278    message(STATUS "Doxygen needs to be installed to generate the doxygen documentation")
279endif (DOXYGEN_FOUND)
280
281# lwIP libraries
282add_library(lwipcore EXCLUDE_FROM_ALL ${lwipnoapps_SRCS})
283target_compile_options(lwipcore PRIVATE ${LWIP_COMPILER_FLAGS})
284target_compile_definitions(lwipcore PRIVATE ${LWIP_DEFINITIONS}  ${LWIP_MBEDTLS_DEFINITIONS})
285target_include_directories(lwipcore PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
286
287add_library(lwipallapps EXCLUDE_FROM_ALL ${lwipallapps_SRCS})
288target_compile_options(lwipallapps PRIVATE ${LWIP_COMPILER_FLAGS})
289target_compile_definitions(lwipallapps PRIVATE ${LWIP_DEFINITIONS}  ${LWIP_MBEDTLS_DEFINITIONS})
290target_include_directories(lwipallapps PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
291
292add_library(lwipmbedtls EXCLUDE_FROM_ALL ${lwipmbedtls_SRCS})
293target_compile_options(lwipmbedtls PRIVATE ${LWIP_COMPILER_FLAGS})
294target_compile_definitions(lwipmbedtls PRIVATE ${LWIP_DEFINITIONS}  ${LWIP_MBEDTLS_DEFINITIONS})
295target_include_directories(lwipmbedtls PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
296