1from building import * 2 3# get current directory 4cwd = GetCurrentDir() 5 6# 1. The minimum set of files needed for lwIP. 7lwipcore_SRCS = Split(""" 8src/core/init.c 9src/core/def.c 10src/core/dns.c 11src/core/inet_chksum.c 12src/core/ip.c 13src/core/memp.c 14src/core/netif.c 15src/core/pbuf.c 16src/core/raw.c 17src/core/stats.c 18src/core/sys.c 19src/core/tcp.c 20src/core/tcp_in.c 21src/core/tcp_out.c 22src/core/timeouts.c 23src/core/udp.c 24""") 25 26# 1.1 27lwipcore_altcp_SRCS = Split(""" 28src/core/altcp.c 29src/core/altcp_alloc.c 30src/core/altcp_tcp.c 31""") 32 33# 1.2 34lwipcore4_SRCS = Split(""" 35src/core/ipv4/autoip.c 36src/core/ipv4/dhcp.c 37src/core/ipv4/etharp.c 38src/core/ipv4/icmp.c 39src/core/ipv4/igmp.c 40src/core/ipv4/ip4_frag.c 41src/core/ipv4/ip4.c 42src/core/ipv4/ip4_addr.c 43""") 44 45# 1.3 46lwipcore6_SRCS = Split(""" 47src/core/ipv6/dhcp6.c 48src/core/ipv6/ethip6.c 49src/core/ipv6/icmp6.c 50src/core/ipv6/inet6.c 51src/core/ipv6/ip6.c 52src/core/ipv6/ip6_addr.c 53src/core/ipv6/ip6_frag.c 54src/core/ipv6/mld6.c 55src/core/ipv6/nd6.c 56""") 57 58# 2. APIFILES: The files which implement the sequential and socket APIs. 59lwipapi_SRCS = Split(""" 60src/api/api_lib.c 61src/api/api_msg.c 62src/api/err.c 63src/api/if_api.c 64src/api/netbuf.c 65src/api/netdb.c 66src/api/netifapi.c 67src/api/sockets.c 68src/api/tcpip.c 69""") 70 71# 3. Files implementing various generic network interface functions 72lwipnetif_SRCS = Split(""" 73src/netif/ethernet.c 74src/netif/ethernetif.c 75""") 76 77# 3.1 Files implementing an IEEE 802.1D bridge by using a multilayer netif approach 78lwipnetif_bridgeif_SRCS = Split(""" 79src/netif/bridgeif.c 80src/netif/bridgeif_fdb.c 81""") 82 83# 3.2 A generic implementation of the SLIP (Serial Line IP) protocol. 84lwipnetif_slipif_SRCS = Split(""" 85src/netif/slipif.c 86""") 87 88# 4. 6LoWPAN 89lwipsixlowpan_SRCS = Split(""" 90src/netif/lowpan6.c 91""") 92 93# 4.1 A 6LoWPAN over Bluetooth Low Energy (BLE) implementation as netif, 94# according to RFC-7668. 95lwipsixlowpan_ble_SRCS = Split(""" 96src/netif/lowpan6_ble.c 97""") 98 99# 4.2 Common 6LowPAN routines for IPv6. 100lwipsixlowpan_ipv6_SRCS = Split(""" 101src/netif/lowpan6_common.c 102""") 103 104# 4.3 A netif implementing the ZigBee Encapsulation Protocol (ZEP). 105lwipsixlowpan_zep_SRCS = Split(""" 106src/netif/zepif.c 107""") 108 109# 5. PPP 110lwipppp_SRCS = Split(""" 111src/netif/ppp/auth.c 112src/netif/ppp/ccp.c 113src/netif/ppp/chap-md5.c 114src/netif/ppp/chap_ms.c 115src/netif/ppp/chap-new.c 116src/netif/ppp/demand.c 117src/netif/ppp/eap.c 118src/netif/ppp/ecp.c 119src/netif/ppp/eui64.c 120src/netif/ppp/fsm.c 121src/netif/ppp/ipcp.c 122src/netif/ppp/ipv6cp.c 123src/netif/ppp/lcp.c 124src/netif/ppp/magic.c 125src/netif/ppp/mppe.c 126src/netif/ppp/multilink.c 127src/netif/ppp/ppp.c 128src/netif/ppp/pppapi.c 129src/netif/ppp/pppcrypt.c 130src/netif/ppp/pppoe.c 131src/netif/ppp/pppol2tp.c 132src/netif/ppp/pppos.c 133src/netif/ppp/upap.c 134src/netif/ppp/utils.c 135src/netif/ppp/vj.c 136src/netif/ppp/polarssl/arc4.c 137src/netif/ppp/polarssl/des.c 138src/netif/ppp/polarssl/md4.c 139src/netif/ppp/polarssl/md5.c 140src/netif/ppp/polarssl/sha1.c 141""") 142 143# 6. SNMPv3 agent 144lwipsnmp_SRCS = Split(""" 145src/apps/snmp/snmp_asn1.c 146src/apps/snmp/snmp_core.c 147src/apps/snmp/snmp_mib2.c 148src/apps/snmp/snmp_mib2_icmp.c 149src/apps/snmp/snmp_mib2_interfaces.c 150src/apps/snmp/snmp_mib2_ip.c 151src/apps/snmp/snmp_mib2_snmp.c 152src/apps/snmp/snmp_mib2_system.c 153src/apps/snmp/snmp_mib2_tcp.c 154src/apps/snmp/snmp_mib2_udp.c 155src/apps/snmp/snmp_snmpv2_framework.c 156src/apps/snmp/snmp_snmpv2_usm.c 157src/apps/snmp/snmp_msg.c 158src/apps/snmp/snmpv3.c 159src/apps/snmp/snmp_netconn.c 160src/apps/snmp/snmp_pbuf_stream.c 161src/apps/snmp/snmp_raw.c 162src/apps/snmp/snmp_scalar.c 163src/apps/snmp/snmp_table.c 164src/apps/snmp/snmp_threadsync.c 165src/apps/snmp/snmp_traps.c 166""") 167 168# 7. HTTP server + client 169lwiphttp_SRCS = Split(""" 170src/apps/http/altcp_proxyconnect.c 171src/apps/http/fs.c 172src/apps/http/http_client.c 173src/apps/http/httpd.c 174""") 175 176# 8. MAKEFSDATA HTTP server host utility 177lwipmakefsdata_SRCS = Split(""" 178src/apps/http/makefsdata/makefsdata.c 179""") 180 181# 9. IPERF server 182lwipiperf_SRCS = Split(""" 183src/apps/lwiperf/lwiperf.c 184""") 185 186# 10. SMTP client 187lwipsmtp_SRCS = Split(""" 188src/apps/smtp/smtp.c 189""") 190 191# 11. SNTP client 192lwipsntp_SRCS = Split(""" 193src/apps/sntp/sntp.c 194""") 195 196# 12. MDNS responder 197lwipmdns_SRCS = Split(""" 198src/apps/mdns/mdns.c 199""") 200 201# 13. NetBIOS name server 202lwipnetbios_SRCS = Split(""" 203src/apps/netbiosns/netbiosns.c 204""") 205 206# 14. TFTP server files 207lwiptftp_SRCS = Split(""" 208src/apps/tftp/tftp_server.c 209src/apps/tftp/tftp_port.c 210""") 211 212# 15. MQTT client files 213lwipmqtt_SRCS = Split(""" 214src/apps/mqtt/mqtt.c 215""") 216 217# 16. ARM MBEDTLS related files of lwIP rep 218lwipmbedtls_SRCS = Split(""" 219src/apps/altcp_tls/altcp_tls_mbedtls.c 220src/apps/altcp_tls/altcp_tls_mbedtls_mem.c 221src/apps/snmp/snmpv3_mbedtls.c 222""") 223 224# 17. ping 225lwipping_SRCS = Split(""" 226src/apps/ping/ping.c 227""") 228 229src = Split(""" 230src/arch/sys_arch.c 231""") 232 233src += lwipcore_SRCS # rm mem.c 234src += lwipcore_altcp_SRCS 235src += lwipapi_SRCS 236src += lwipnetif_SRCS 237src += lwipsixlowpan_SRCS 238 239src += lwipcore4_SRCS 240 241path = [cwd + '/src', 242 cwd + '/src/include', 243 cwd + '/src/arch/include', 244 cwd + '/src/include/netif'] 245 246if not GetDepend('RT_USING_SAL'): 247 path += [cwd + '/src/include/compat/posix'] 248 249if GetDepend(['RT_LWIP_SNMP']): 250 src += lwipsnmp_SRCS 251 path += [cwd + '/src/apps/snmp'] 252 253if GetDepend(['RT_LWIP_PPP']): 254 src += lwipppp_SRCS 255 path += [cwd + '/src/netif/ppp'] 256 257if GetDepend(['RT_USING_LWIP_IPV6']): 258 src += lwipcore6_SRCS 259 260if GetDepend(['RT_USING_NETUTILS']): 261 if GetDepend(['RT_NETUTILS_USING_TFTP']): 262 src += lwiptftp_SRCS 263 if GetDepend(['RT_NETUTILS_USING_PING']): 264 src += lwipping_SRCS 265 266group = DefineGroup('lwIP', src, depend = ['RT_USING_LWIP', 'RT_USING_LWIP210'], CPPPATH = path) 267 268Return('group') 269