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