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