Browse Source

Cleanup CMAKE build system

Use target-specific commands for compile flags / linking etc. only
master
Dirk Ziegelmeier 8 years ago
parent
commit
7942a3d7d1
  1. 21
      Filelists.cmake
  2. 55
      ports/CMakeCommon.cmake
  3. 10
      ports/unix/Filelists.cmake
  4. 23
      ports/unix/check/CMakeLists.txt
  5. 12
      ports/unix/example_app/CMakeLists.txt
  6. 5
      ports/win32/Filelists.cmake
  7. 14
      ports/win32/example_app/CMakeLists.txt

21
Filelists.cmake

@ -22,21 +22,23 @@ set(lwipcontribexamples_SRCS
${LWIP_CONTRIB_DIR}/examples/tftp/tftp_example.c
)
add_library(lwipcontribexamples EXCLUDE_FROM_ALL ${lwipcontribexamples_SRCS})
target_compile_options(lwipcontribexamples PRIVATE ${LWIP_COMPILER_FLAGS})
set(lwipcontribapps_SRCS
${LWIP_CONTRIB_DIR}/apps/httpserver/httpserver-netconn.c
${LWIP_CONTRIB_DIR}/apps/chargen/chargen.c
${LWIP_CONTRIB_DIR}/apps/udpecho/udpecho.c
${LWIP_CONTRIB_DIR}/apps/tcpecho/tcpecho.c
${LWIP_CONTRIB_DIR}/apps/shell/shell.c
${LWIP_CONTRIB_DIR}/apps/udpecho_raw/udpecho_raw.c
${LWIP_CONTRIB_DIR}/apps/tcpecho_raw/tcpecho_raw.c
${LWIP_CONTRIB_DIR}/apps/netio/netio.c
${LWIP_CONTRIB_DIR}/apps/ping/ping.c
${LWIP_CONTRIB_DIR}/apps/socket_examples/socket_examples.c
${LWIP_CONTRIB_DIR}/apps/chargen/chargen.c
${LWIP_CONTRIB_DIR}/apps/udpecho/udpecho.c
${LWIP_CONTRIB_DIR}/apps/tcpecho/tcpecho.c
${LWIP_CONTRIB_DIR}/apps/shell/shell.c
${LWIP_CONTRIB_DIR}/apps/udpecho_raw/udpecho_raw.c
${LWIP_CONTRIB_DIR}/apps/tcpecho_raw/tcpecho_raw.c
${LWIP_CONTRIB_DIR}/apps/netio/netio.c
${LWIP_CONTRIB_DIR}/apps/ping/ping.c
${LWIP_CONTRIB_DIR}/apps/socket_examples/socket_examples.c
${LWIP_CONTRIB_DIR}/apps/rtp/rtp.c
)
add_library(lwipcontribapps EXCLUDE_FROM_ALL ${lwipcontribapps_SRCS})
target_compile_options(lwipcontribapps PRIVATE ${LWIP_COMPILER_FLAGS})
set(lwipcontribaddons_SRCS
${LWIP_CONTRIB_DIR}/addons/tcp_isn/tcp_isn.c
@ -45,3 +47,4 @@ set(lwipcontribaddons_SRCS
# ${LWIP_CONTRIB_DIR}/addons/tcp_md5/tcp_md5.c
)
add_library(lwipcontribaddons EXCLUDE_FROM_ALL ${lwipcontribaddons_SRCS})
target_compile_options(lwipcontribaddons PRIVATE ${LWIP_COMPILER_FLAGS})

55
ports/CMakeCommon.cmake

@ -16,24 +16,67 @@ if(EXISTS ${MBEDTLSDIR}/include/mbedtls/ssl.h)
link_libraries(mbedtls mbedcrypto mbedx509)
endif()
set(LWIP_GNU_CLANG_COMMON_FLAGS "-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")
set(LWIP_COMPILER_FLAGS
-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)
set(LWIP_GNU_CLANG_COMMON_FLAGS "${LWIP_GNU_CLANG_COMMON_FLAGS} -Wredundant-decls")
list(APPEND LWIP_COMPILER_FLAGS
-Wredundant-decls
)
endif()
if(CMAKE_C_COMPILER_ID STREQUAL GNU)
set(CMAKE_C_FLAGS "${LWIP_GNU_CLANG_COMMON_FLAGS} -Wlogical-op -Wtrampolines")
list(APPEND LWIP_COMPILER_FLAGS
-Wlogical-op
-Wtrampolines
)
if (NOT LWIP_HAVE_MBEDTLS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wc90-c99-compat")
list(APPEND LWIP_COMPILER_FLAGS
-Wc90-c99-compat
)
endif()
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fstack-protector -fstack-check -fsanitize=undefined -fno-sanitize=alignment")
list(APPEND LWIP_COMPILER_FLAGS
-fsanitize=address
-fstack-protector
-fstack-check
-fsanitize=undefined
-fno-sanitize=alignment
)
endif()
endif()
if(CMAKE_C_COMPILER_ID STREQUAL Clang)
set(CMAKE_C_FLAGS "${LWIP_GNU_CLANG_COMMON_FLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -Wdocumentation -Wno-documentation-deprecated-sync")
list(APPEND LWIP_COMPILER_FLAGS
-fsanitize=address
-fsanitize=undefined
-fno-sanitize=alignment
-Wdocumentation
-Wno-documentation-deprecated-sync
)
endif()
if(CMAKE_C_COMPILER_ID STREQUAL MSVC)

10
ports/unix/Filelists.cmake

@ -20,17 +20,19 @@ set(lwipcontribportunixnetifs_SRCS
${LWIP_CONTRIB_DIR}/ports/unix/port/netif/fifo.c
)
add_library(lwipcontribportunix EXCLUDE_FROM_ALL ${lwipcontribportunix_SRCS} ${lwipcontribportunixnetifs_SRCS})
target_include_directories(lwipcontribportunix PRIVATE "${WPDPACK_DIR}/include")
target_compile_options(lwipcontribportunix PRIVATE ${LWIP_COMPILER_FLAGS})
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
find_library(LIBUTIL util)
find_library(LIBPTHREAD pthread)
find_library(LIBRT rt)
link_libraries(${LIBUTIL} ${LIBPTHREAD} ${LIBRT})
target_link_libraries(lwipcontribportunix PUBLIC ${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)
link_libraries(${LIBUTIL})
target_link_libraries(lwipcontribportunix PUBLIC ${LIBUTIL})
endif()
add_library(lwipcontribportunix EXCLUDE_FROM_ALL ${lwipcontribportunix_SRCS} ${lwipcontribportunixnetifs_SRCS})

23
ports/unix/check/CMakeLists.txt

@ -13,12 +13,12 @@ include(${LWIP_CONTRIB_DIR}/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
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-gnu-zero-variadic-macro-arguments")
list(LWIP_COMPILER_FLAGS APPEND -Wno-gnu-zero-variadic-macro-arguments)
endif()
add_definitions(-DLWIP_DEBUG -DLWIP_NOASSERT_ON_ERROR)
include_directories(
set (LWIP_INCLUDE_DIRS
"${LWIP_DIR}/test/unit"
"${LWIP_DIR}/src/include"
"${LWIP_CONTRIB_DIR}/"
@ -29,6 +29,7 @@ include_directories(
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})
find_library(LIBCHECK check)
@ -40,3 +41,21 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
find_library(LIBSUBUNIT subunit)
target_link_libraries(lwip_unittests ${LIBSUBUNIT})
endif()
target_include_directories(lwip_unittests PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcore PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipallapps PRIVATE ${LWIP_INCLUDE_DIRS})
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()

12
ports/unix/example_app/CMakeLists.txt

@ -15,7 +15,7 @@ include(${LWIP_CONTRIB_DIR}/ports/unix/Filelists.cmake)
add_definitions(-DLWIP_DEBUG)
include_directories(
set (LWIP_INCLUDE_DIRS
"${LWIP_DIR}/src/include"
"${LWIP_CONTRIB_DIR}/"
"${LWIP_CONTRIB_DIR}/ports/unix/port/include"
@ -26,3 +26,13 @@ add_executable(example_app ${LWIP_CONTRIB_DIR}/examples/example_app/test.c defau
target_link_libraries(example_app lwipcontribexamples lwipcontribapps lwipcontribaddons lwipallapps lwipcontribportunix lwipcore)
add_executable(makefsdata ${lwipmakefsdata_SRCS})
target_include_directories(example_app PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(makefsdata PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcore PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipallapps PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribaddons PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribapps PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribexamples PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribportunix PRIVATE ${LWIP_INCLUDE_DIRS})

5
ports/win32/Filelists.cmake

@ -19,7 +19,8 @@ set(lwipcontribportwindows_SRCS
set(WPDPACK_DIR ${LWIP_CONTRIB_DIR}/../WpdPack)
find_library(WPCAP wpcap HINTS ${WPDPACK_DIR}/lib)
find_library(PACKET packet HINTS ${WPDPACK_DIR}/lib)
include_directories("${WPDPACK_DIR}/include")
link_libraries(${WPCAP} ${PACKET})
add_library(lwipcontribportwindows EXCLUDE_FROM_ALL ${lwipcontribportwindows_SRCS})
target_include_directories(lwipcontribportwindows PRIVATE "${WPDPACK_DIR}/include")
target_link_libraries(lwipcontribportwindows PUBLIC ${WPCAP} ${PACKET})
target_compile_options(lwipcontribportwindows PRIVATE ${LWIP_COMPILER_FLAGS})

14
ports/win32/example_app/CMakeLists.txt

@ -15,7 +15,7 @@ include(${LWIP_CONTRIB_DIR}/ports/win32/Filelists.cmake)
add_definitions(-DLWIP_DEBUG)
include_directories(
set (LWIP_INCLUDE_DIRS
"${LWIP_DIR}/src/include"
"${LWIP_CONTRIB_DIR}/"
"${LWIP_CONTRIB_DIR}/ports/win32/include"
@ -23,7 +23,19 @@ include_directories(
)
add_executable(example_app ${LWIP_CONTRIB_DIR}/examples/example_app/test.c default_netif.c)
target_compile_options(example_app PRIVATE ${LWIP_COMPILER_FLAGS})
target_link_libraries(example_app lwipcontribexamples lwipcontribapps lwipcontribaddons lwipallapps lwipcore lwipcontribportwindows)
add_executable(makefsdata ${lwipmakefsdata_SRCS})
target_compile_options(makefsdata PRIVATE ${LWIP_COMPILER_FLAGS})
target_link_libraries(makefsdata lwipcore lwipcontribportwindows)
target_include_directories(example_app PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(makefsdata PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcore PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipallapps PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribaddons PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribapps PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribexamples PRIVATE ${LWIP_INCLUDE_DIRS})
target_include_directories(lwipcontribportwindows PRIVATE ${LWIP_INCLUDE_DIRS})

Loading…
Cancel
Save