1cmake_minimum_required(VERSION 3.8) 2project(liblwip 3 VERSION 2.2.0 4 DESCRIPTION "lwip library for linux" 5 HOMEPAGE_URL "http://wiki.virtualsquare.org" 6 LANGUAGES C) 7 8include(GNUInstallDirs) 9include(CheckIncludeFile) 10 11set (BUILD_SHARED_LIBS ON) 12 13if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") 14 message(FATAL_ERROR "Lwip shared library is only working on Linux or the Hurd") 15endif() 16 17set(LWIP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../..) 18 19find_library(LIB_VDEPLUGOK vdeplug) 20check_include_file(libvdeplug.h INCLUDE_VDEPLUGOK) 21if (LIB_VDEPLUGOK AND INCLUDE_VDEPLUGOK) 22 message(STATUS "Found libvdeplug: vde support added") 23else() 24 message(STATUS "Libvdeplug needs to be installed to add vde support") 25endif() 26 27include(${LWIP_DIR}/contrib/ports/CMakeCommon.cmake) 28 29set (LWIP_DEFINITIONS -DLWIP_DEBUG) 30set (LWIP_INCLUDE_DIRS 31 "include" 32 "${LWIP_DIR}/src/include" 33 "${LWIP_CONTRIB_DIR}/" 34 "${LWIP_CONTRIB_DIR}/ports/unix/port/include" 35 "${CMAKE_CURRENT_SOURCE_DIR}/" 36) 37 38set (LWIP_EXCLUDE_SLIPIF TRUE) 39include(${LWIP_CONTRIB_DIR}/ports/unix/Filelists.cmake) 40include(${LWIP_DIR}/src/Filelists.cmake) 41if (LIB_VDEPLUGOK AND INCLUDE_VDEPLUGOK) 42set(lwipnoapps_SRCS ${lwipnoapps_SRCS} 43 ${LWIP_DIR}/contrib/ports/unix/port/netif/vdeif.c) 44endif() 45 46add_library(lwip ${lwipnoapps_SRCS} ${lwipcontribportunix_SRCS} ${lwipcontribportunixnetifs_SRCS}) 47target_compile_options(lwip PRIVATE ${LWIP_COMPILER_FLAGS}) 48target_compile_definitions(lwip PRIVATE ${LWIP_DEFINITIONS} ${LWIP_MBEDTLS_DEFINITIONS}) 49target_include_directories(lwip PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS}) 50if (LIB_VDEPLUGOK AND INCLUDE_VDEPLUGOK) 51 target_link_libraries(lwip ${LWIP_SANITIZER_LIBS} vdeplug) 52else() 53 target_link_libraries(lwip ${LWIP_SANITIZER_LIBS}) 54endif() 55 56find_library(LIBPTHREAD pthread) 57target_link_libraries(lwip ${LIBPTHREAD}) 58 59install(TARGETS lwip 60 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) 61 62set_target_properties(lwip PROPERTIES VERSION ${PROJECT_VERSION} 63 SOVERSION ${PROJECT_VERSION_MAJOR}) 64 65install(DIRECTORY "${LWIP_DIR}/src/include/lwip" 66 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip" 67 FILES_MATCHING PATTERN "*.h" 68) 69 70install(DIRECTORY "${LWIP_DIR}/src/include/netif" 71 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip" 72 FILES_MATCHING PATTERN "*.h" 73) 74 75install(FILES lwipopts.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip") 76 77install(DIRECTORY "${LWIP_DIR}/contrib/ports/unix/port/include/arch" 78 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip" 79 FILES_MATCHING PATTERN "*.h" 80) 81 82install(DIRECTORY "${LWIP_DIR}/contrib/ports/unix/port/include/netif" 83 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip" 84 FILES_MATCHING PATTERN "*.h" 85) 86 87install(DIRECTORY "${LWIP_DIR}/contrib/ports/unix/posixlib/include/posix" 88 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lwip" 89 FILES_MATCHING PATTERN "*.h" 90) 91 92add_custom_target(uninstall 93 "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/Uninstall.cmake") 94 95