Filelists.cmake 8.7 KB

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