| if (DEFINED ENV{PICO_LWIP_PATH} AND (NOT PICO_LWIP_PATH)) |
| set(PICO_LWIP_PATH $ENV{PICO_LWIP_PATH}) |
| message("Using PICO_LWIP_PATH from environment ('${PICO_LWIP_PATH}')") |
| endif () |
| |
| set(LWIP_TEST_PATH "src/Filelists.cmake") |
| if (NOT PICO_LWIP_PATH) |
| set(PICO_LWIP_PATH ${PROJECT_SOURCE_DIR}/lib/lwip) |
| if (PICO_CYW43_SUPPORTED AND NOT EXISTS ${PICO_LWIP_PATH}/${LWIP_TEST_PATH}) |
| message(WARNING "LWIP submodule has not been initialized; Pico W wireless support will be unavailable |
| #hint: try 'git submodule update --init' from your SDK directory (${PICO_SDK_PATH}).") |
| endif() |
| elseif (NOT EXISTS ${PICO_LWIP_PATH}/${LWIP_TEST_PATH}) |
| message(WARNING "PICO_LWIP_PATH specified but content not present.") |
| endif() |
| |
| if (EXISTS ${PICO_LWIP_PATH}/${LWIP_TEST_PATH}) |
| message("lwIP available at ${PICO_LWIP_PATH}") |
| |
| # argh... wanted to use this, but they dump stuff into the source tree, which breaks parallel builds |
| #set(LWIP_DIR ${PICO_LWIP_PATH}) |
| #include(${PICO_LWIP_PATH}/src/Filelists.cmake) |
| |
| pico_register_common_scope_var(PICO_LWIP_PATH) |
| |
| # The minimum set of files needed for lwIP. |
| pico_add_library(pico_lwip_core NOFLAG) |
| target_sources(pico_lwip_core INTERFACE |
| ${PICO_LWIP_PATH}/src/core/init.c |
| ${PICO_LWIP_PATH}/src/core/def.c |
| ${PICO_LWIP_PATH}/src/core/dns.c |
| ${PICO_LWIP_PATH}/src/core/inet_chksum.c |
| ${PICO_LWIP_PATH}/src/core/ip.c |
| ${PICO_LWIP_PATH}/src/core/mem.c |
| ${PICO_LWIP_PATH}/src/core/memp.c |
| ${PICO_LWIP_PATH}/src/core/netif.c |
| ${PICO_LWIP_PATH}/src/core/pbuf.c |
| ${PICO_LWIP_PATH}/src/core/raw.c |
| ${PICO_LWIP_PATH}/src/core/stats.c |
| ${PICO_LWIP_PATH}/src/core/sys.c |
| ${PICO_LWIP_PATH}/src/core/altcp.c |
| ${PICO_LWIP_PATH}/src/core/altcp_alloc.c |
| ${PICO_LWIP_PATH}/src/core/altcp_tcp.c |
| ${PICO_LWIP_PATH}/src/core/tcp.c |
| ${PICO_LWIP_PATH}/src/core/tcp_in.c |
| ${PICO_LWIP_PATH}/src/core/tcp_out.c |
| ${PICO_LWIP_PATH}/src/core/timeouts.c |
| ${PICO_LWIP_PATH}/src/core/udp.c |
| ) |
| target_include_directories(pico_lwip_core_headers SYSTEM INTERFACE |
| ${PICO_LWIP_PATH}/src/include) |
| |
| pico_add_library(pico_lwip_core4 NOFLAG) |
| target_sources(pico_lwip_core4 INTERFACE |
| ${PICO_LWIP_PATH}/src/core/ipv4/autoip.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/dhcp.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/etharp.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/icmp.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/igmp.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/ip4_frag.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/ip4.c |
| ${PICO_LWIP_PATH}/src/core/ipv4/ip4_addr.c |
| ) |
| |
| # Doesn't exists in version earlier than 2.1.3 |
| if (EXISTS ${PICO_LWIP_PATH}/src/core/ipv4/acd.c) |
| target_sources(pico_lwip_core4 INTERFACE |
| ${PICO_LWIP_PATH}/src/core/ipv4/acd.c |
| ) |
| endif() |
| |
| pico_add_library(pico_lwip_core6 NOFLAG) |
| target_sources(pico_lwip_core6 INTERFACE |
| ${PICO_LWIP_PATH}/src/core/ipv6/dhcp6.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/ethip6.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/icmp6.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/inet6.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/ip6.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/ip6_addr.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/ip6_frag.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/mld6.c |
| ${PICO_LWIP_PATH}/src/core/ipv6/nd6.c |
| ) |
| |
| # APIFILES: The files which implement the sequential and socket APIs. |
| pico_add_library(pico_lwip_api NOFLAG) |
| target_sources(pico_lwip_api INTERFACE |
| ${PICO_LWIP_PATH}/src/api/api_lib.c |
| ${PICO_LWIP_PATH}/src/api/api_msg.c |
| ${PICO_LWIP_PATH}/src/api/err.c |
| ${PICO_LWIP_PATH}/src/api/if_api.c |
| ${PICO_LWIP_PATH}/src/api/netbuf.c |
| ${PICO_LWIP_PATH}/src/api/netdb.c |
| ${PICO_LWIP_PATH}/src/api/netifapi.c |
| ${PICO_LWIP_PATH}/src/api/sockets.c |
| ${PICO_LWIP_PATH}/src/api/tcpip.c |
| ) |
| |
| # Files implementing various generic network interface functions |
| pico_add_library(pico_lwip_netif NOFLAG) |
| target_sources(pico_lwip_netif INTERFACE |
| ${PICO_LWIP_PATH}/src/netif/ethernet.c |
| ${PICO_LWIP_PATH}/src/netif/bridgeif.c |
| ${PICO_LWIP_PATH}/src/netif/bridgeif_fdb.c |
| ${PICO_LWIP_PATH}/src/netif/slipif.c |
| ) |
| |
| # 6LoWPAN |
| pico_add_library(pico_lwip_sixlowpan NOFLAG) |
| target_sources(pico_lwip_sixlowpan INTERFACE |
| ${PICO_LWIP_PATH}/src/netif/lowpan6_common.c |
| ${PICO_LWIP_PATH}/src/netif/lowpan6.c |
| ${PICO_LWIP_PATH}/src/netif/lowpan6_ble.c |
| ${PICO_LWIP_PATH}/src/netif/zepif.c |
| ) |
| |
| # PPP |
| pico_add_library(pico_lwip_ppp NOFLAG) |
| target_sources(pico_lwip_ppp INTERFACE |
| ${PICO_LWIP_PATH}/src/netif/ppp/auth.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/ccp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/chap-md5.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/chap_ms.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/chap-new.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/demand.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/eap.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/ecp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/eui64.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/fsm.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/ipcp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/ipv6cp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/lcp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/magic.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/mppe.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/multilink.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/ppp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/pppapi.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/pppcrypt.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/pppoe.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/pppol2tp.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/pppos.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/upap.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/utils.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/vj.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/polarssl/arc4.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/polarssl/des.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/polarssl/md4.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/polarssl/md5.c |
| ${PICO_LWIP_PATH}/src/netif/ppp/polarssl/sha1.c |
| ) |
| |
| # SNMPv3 agent |
| pico_add_library(pico_lwip_snmp NOFLAG) |
| target_sources(pico_lwip_snmp INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_asn1.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_core.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_icmp.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_interfaces.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_ip.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_snmp.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_system.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_tcp.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_mib2_udp.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_snmpv2_framework.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_snmpv2_usm.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_msg.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmpv3.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_netconn.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_pbuf_stream.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_raw.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_scalar.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_table.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_threadsync.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmp_traps.c |
| ) |
| |
| # HTTP server + client |
| pico_add_library(pico_lwip_http NOFLAG) |
| target_sources(pico_lwip_http INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/http/altcp_proxyconnect.c |
| ${PICO_LWIP_PATH}/src/apps/http/fs.c |
| ${PICO_LWIP_PATH}/src/apps/http/http_client.c |
| ${PICO_LWIP_PATH}/src/apps/http/httpd.c |
| ) |
| |
| # MAKEFSDATA HTTP server host utility |
| pico_add_library(pico_lwip_makefsdata NOFLAG) |
| target_sources(pico_lwip_makefsdata INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/http/makefsdata/makefsdata.c |
| ) |
| |
| # iperf |
| pico_add_library(pico_lwip_iperf NOFLAG) |
| target_sources(pico_lwip_iperf INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/lwiperf/lwiperf.c |
| ) |
| |
| # SMTP client |
| pico_add_library(pico_lwip_smtp NOFLAG) |
| target_sources(pico_lwip_smtp INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/smtp/smtp.c |
| ) |
| |
| # SNTP client |
| pico_add_library(pico_lwip_sntp NOFLAG) |
| target_sources(pico_lwip_sntp INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/sntp/sntp.c |
| ) |
| |
| # MDNS responder |
| pico_add_library(pico_lwip_mdns NOFLAG) |
| target_sources(pico_lwip_mdns INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/mdns/mdns.c |
| ) |
| |
| # Old versions of lwip had everything in mdns.c |
| if (EXISTS ${PICO_LWIP_PATH}/src/apps/mdns/mdns_out.c) |
| target_sources(pico_lwip_mdns INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/mdns/mdns_out.c |
| ${PICO_LWIP_PATH}/src/apps/mdns/mdns_domain.c |
| ) |
| endif() |
| |
| # NetBIOS name server |
| pico_add_library(pico_lwip_netbios NOFLAG) |
| target_sources(pico_lwip_netbios INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/netbiosns/netbiosns.c |
| ) |
| |
| # TFTP server files |
| pico_add_library(pico_lwip_tftp NOFLAG) |
| target_sources(pico_lwip_tftp INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/tftp/tftp.c |
| ) |
| |
| # Mbed TLS files |
| pico_add_library(pico_lwip_mbedtls NOFLAG) |
| target_sources(pico_lwip_mbedtls INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/altcp_tls/altcp_tls_mbedtls.c |
| ${PICO_LWIP_PATH}/src/apps/altcp_tls/altcp_tls_mbedtls_mem.c |
| ${PICO_LWIP_PATH}/src/apps/snmp/snmpv3_mbedtls.c |
| ) |
| |
| # MQTT client files |
| pico_add_library(pico_lwip_mqtt NOFLAG) |
| target_sources(pico_lwip_mqtt INTERFACE |
| ${PICO_LWIP_PATH}/src/apps/mqtt/mqtt.c |
| ) |
| |
| # All LWIP files without apps |
| pico_add_library(pico_lwip NOFLAG) |
| pico_mirrored_target_link_libraries(pico_lwip INTERFACE |
| pico_lwip_core |
| pico_lwip_core4 |
| pico_lwip_core6 |
| pico_lwip_api |
| pico_lwip_netif |
| pico_lwip_sixlowpan |
| pico_lwip_ppp |
| ) |
| |
| # our arch/cc.h |
| pico_add_library(pico_lwip_arch NOFLAG) |
| target_include_directories(pico_lwip_arch_headers SYSTEM INTERFACE |
| ${CMAKE_CURRENT_LIST_DIR}/include) |
| pico_mirrored_target_link_libraries(pico_lwip_arch INTERFACE pico_rand) |
| |
| # our nosys impl |
| pico_add_library(pico_lwip_nosys NOFLAG) |
| target_sources(pico_lwip_nosys INTERFACE |
| ${CMAKE_CURRENT_LIST_DIR}/lwip_nosys.c |
| ) |
| pico_mirrored_target_link_libraries(pico_lwip_nosys INTERFACE |
| pico_async_context_base |
| pico_lwip_arch |
| pico_lwip) |
| |
| if (NOT PICO_LWIP_CONTRIB_PATH) |
| set(PICO_LWIP_CONTRIB_PATH ${PICO_LWIP_PATH}/contrib) |
| endif() |
| pico_register_common_scope_var(PICO_LWIP_CONTRIB_PATH) |
| |
| # Make lwip_contrib_freertos library, with the FreeRTOS/lwIP code from lwip-contrib |
| pico_add_library(pico_lwip_contrib_freertos NOFLAG) |
| target_sources(pico_lwip_contrib_freertos INTERFACE |
| ${PICO_LWIP_CONTRIB_PATH}/ports/freertos/sys_arch.c |
| ) |
| target_include_directories(pico_lwip_contrib_freertos_headers SYSTEM INTERFACE |
| ${PICO_LWIP_CONTRIB_PATH}/ports/freertos/include |
| ) |
| pico_mirrored_target_link_libraries(pico_lwip_contrib_freertos INTERFACE |
| pico_lwip_arch) |
| |
| pico_add_library(pico_lwip_freertos NOFLAG) |
| target_sources(pico_lwip_freertos INTERFACE |
| ${CMAKE_CURRENT_LIST_DIR}/lwip_freertos.c |
| ) |
| pico_mirrored_target_link_libraries(pico_lwip_freertos INTERFACE |
| pico_async_context_base |
| pico_lwip |
| pico_lwip_contrib_freertos |
| pico_rand) |
| |
| pico_add_subdirectory(tools) |
| pico_promote_common_scope_vars() |
| endif() |