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