lwip/contrib/ports/CMakeCommon.cmake

108 lines
2.5 KiB
CMake

set(LWIP_CONTRIB_DIR ${LWIP_DIR}/contrib)
# ARM mbedtls support https://tls.mbed.org/
set(MBEDTLSDIR ${LWIP_DIR}/../mbedtls)
if(EXISTS ${MBEDTLSDIR}/CMakeLists.txt)
set(LWIP_HAVE_MBEDTLS ON BOOL)
# Prevent building MBEDTLS programs and tests
set(ENABLE_PROGRAMS OFF CACHE BOOL "")
set(ENABLE_TESTING OFF CACHE BOOL "")
# mbedtls uses cmake. Sweet!
add_subdirectory(${MBEDTLSDIR} mbedtls)
set (LWIP_MBEDTLS_DEFINITIONS
-DLWIP_HAVE_MBEDTLS=1
)
set (LWIP_MBEDTLS_INCLUDE_DIRS
${MBEDTLSDIR}/include
)
set (LWIP_MBEDTLS_LINK_LIBRARIES
mbedtls
mbedcrypto
mbedx509
)
endif()
set(LWIP_COMPILER_FLAGS_GNU_CLANG
-g
-Wall
-pedantic
-Werror
-Wparentheses
-Wsequence-point
-Wswitch-default
-Wextra -Wundef
-Wshadow
-Wpointer-arith
-Wcast-qual
-Wc++-compat
-Wwrite-strings
-Wold-style-definition
-Wcast-align
-Wmissing-prototypes
-Wnested-externs
-Wunreachable-code
-Wuninitialized
-Wmissing-prototypes
-Waggregate-return
-Wlogical-not-parentheses
)
if (NOT LWIP_HAVE_MBEDTLS)
list(APPEND LWIP_COMPILER_FLAGS_GNU_CLANG
-Wredundant-decls
)
endif()
if(CMAKE_C_COMPILER_ID STREQUAL GNU)
list(APPEND LWIP_COMPILER_FLAGS_GNU_CLANG
-Wlogical-op
-Wtrampolines
)
if (NOT LWIP_HAVE_MBEDTLS)
list(APPEND LWIP_COMPILER_FLAGS_GNU_CLANG
-Wc90-c99-compat
)
endif()
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9)
if(LWIP_USE_SANITIZERS)
list(APPEND LWIP_COMPILER_FLAGS_GNU_CLANG
-fsanitize=address
-fsanitize=undefined
-fno-sanitize=alignment
-fstack-protector
-fstack-check
)
set(LWIP_SANITIZER_LIBS asan ubsan)
endif()
endif()
set(LWIP_COMPILER_FLAGS ${LWIP_COMPILER_FLAGS_GNU_CLANG})
endif()
if(CMAKE_C_COMPILER_ID STREQUAL Clang)
list(APPEND LWIP_COMPILER_FLAGS_GNU_CLANG
-Wdocumentation
-Wno-documentation-deprecated-sync
)
if(LWIP_USE_SANITIZERS)
list(APPEND LWIP_COMPILER_FLAGS_GNU_CLANG
-fsanitize=address
-fsanitize=undefined
-fno-sanitize=alignment
)
set(LWIP_SANITIZER_LIBS asan ubsan)
endif()
set(LWIP_COMPILER_FLAGS ${LWIP_COMPILER_FLAGS_GNU_CLANG})
endif()
if(CMAKE_C_COMPILER_ID STREQUAL MSVC)
# TODO
endif()