mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-12-26 12:13:47 +00:00
58 lines
2.1 KiB
CMake
58 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.8)
|
|
|
|
project(lwipunittests C)
|
|
|
|
if (NOT CMAKE_SYSTEM_NAME STREQUAL Linux AND NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
|
|
message(FATAL_ERROR "Unit test are currently only working on Linux or Darwin")
|
|
endif()
|
|
|
|
set(LWIP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../..)
|
|
set(LWIP_USE_SANITIZERS true)
|
|
include(${LWIP_DIR}/contrib/ports/CMakeCommon.cmake)
|
|
|
|
if(CMAKE_C_COMPILER_ID STREQUAL Clang)
|
|
# check.h causes 'error: token pasting of ',' and __VA_ARGS__ is a GNU extension' with clang 9.0.0
|
|
list(LWIP_COMPILER_FLAGS APPEND -Wno-gnu-zero-variadic-macro-arguments)
|
|
endif()
|
|
|
|
set (LWIP_DEFINITIONS -DLWIP_DEBUG -DLWIP_NOASSERT_ON_ERROR)
|
|
set (LWIP_INCLUDE_DIRS
|
|
"${LWIP_DIR}/test/unit"
|
|
"${LWIP_DIR}/src/include"
|
|
"${LWIP_CONTRIB_DIR}/"
|
|
"${LWIP_CONTRIB_DIR}/ports/unix/port/include"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/"
|
|
)
|
|
|
|
include(${LWIP_CONTRIB_DIR}/ports/unix/Filelists.cmake)
|
|
include(${LWIP_DIR}/src/Filelists.cmake)
|
|
include(${LWIP_DIR}/test/unit/Filelists.cmake)
|
|
|
|
add_executable(lwip_unittests ${LWIP_TESTFILES})
|
|
target_include_directories(lwip_unittests PRIVATE ${LWIP_INCLUDE_DIRS})
|
|
target_compile_options(lwip_unittests PRIVATE ${LWIP_COMPILER_FLAGS})
|
|
target_compile_definitions(lwip_unittests PRIVATE ${LWIP_DEFINITIONS} ${LWIP_MBEDTLS_DEFINITIONS})
|
|
|
|
find_library(LIBCHECK check)
|
|
find_library(LIBM m)
|
|
target_link_libraries(lwip_unittests ${LWIP_SANITIZER_LIBS} lwipallapps lwipcore ${LIBCHECK} ${LIBM})
|
|
|
|
if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
|
|
# check installed via brew on Darwin doesn't have a separate subunit library (must be statically linked)
|
|
find_library(LIBSUBUNIT subunit)
|
|
target_link_libraries(lwip_unittests ${LIBSUBUNIT})
|
|
endif()
|
|
|
|
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
|
|
find_library(LIBUTIL util)
|
|
find_library(LIBPTHREAD pthread)
|
|
find_library(LIBRT rt)
|
|
target_link_libraries(lwip_unittests ${LIBUTIL} ${LIBPTHREAD} ${LIBRT})
|
|
endif()
|
|
|
|
if (CMAKE_SYSTEM_NAME STREQUAL Darwin)
|
|
# Darwin doesn't have pthreads or POSIX real-time extensions libs
|
|
find_library(LIBUTIL util)
|
|
target_link_libraries(lwip_unittests ${LIBUTIL})
|
|
endif()
|