diff --git a/.travis/script.sh b/.travis/script.sh index bd39ba243..42667f96d 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -121,7 +121,7 @@ build_cc2538() { git checkout -- . || die git clean -xfd || die mkdir build && cd build || die - cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=examples/platforms/cc2538/arm-none-eabi.cmake -DOT_PLATFORM=cc2538 .. || die + cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=examples/platforms/cc2538/arm-none-eabi.cmake -DOT_PLATFORM=cc2538 -DOT_COMPILE_WARNING_AS_ERROR=ON .. || die ninja || die cd .. || die @@ -419,7 +419,7 @@ build_samr21() { git checkout -- . || die git clean -xfd || die mkdir build && cd build || die - cmake -GNinja -DOT_PLATFORM=posix .. || die + cmake -GNinja -DOT_PLATFORM=posix -DOT_COMPILE_WARNING_AS_ERROR=ON .. || die ninja || die cd .. || die @@ -586,14 +586,14 @@ build_samr21() { git checkout -- . || die git clean -xfd || die mkdir build && cd build || die - cmake -GNinja -DOT_PLATFORM=posix-host -DOT_DAEMON=ON .. || die + cmake -GNinja -DOT_PLATFORM=posix-host -DOT_DAEMON=ON -DCOMPILE_WARNING_AS_ERROR=ON .. || die ninja || die cd .. || die git checkout -- . || die git clean -xfd || die mkdir build && cd build || die - cmake -GNinja -DOT_PLATFORM=posix-host .. || die + cmake -GNinja -DOT_PLATFORM=posix-host -DCOMPILE_WARNING_AS_ERROR=ON .. || die ninja || die cd .. || die diff --git a/CMakeLists.txt b/CMakeLists.txt index e81b3fb75..61090712f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,18 @@ include("${PROJECT_SOURCE_DIR}/etc/cmake/checks.cmake") include("${PROJECT_SOURCE_DIR}/etc/cmake/options.cmake") include("${PROJECT_SOURCE_DIR}/etc/cmake/functions.cmake") +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + option(OT_COMPILE_WARNING_AS_ERROR "whether to include -Werror with gcc-compatible compilers") + if (OT_COMPILE_WARNING_AS_ERROR) + set(OT_CFLAGS -Werror) + endif() + + set(OT_CFLAGS + $<$:${OT_CFLAGS} -Wall -Wextra -Wshadow -Werror -pedantic-errors> + $<$:${OT_FLAGS} -Wall -Wextra -Wshadow -Wno-c++14-compat -fno-exceptions> + ) +endif() + file(READ .default-version OT_DEFAULT_VERSION) execute_process( COMMAND bash "-c" "third_party/nlbuild-autotools/repo/scripts/mkversion -b ${OT_DEFAULT_VERSION}" diff --git a/examples/platforms/cc2538/CMakeLists.txt b/examples/platforms/cc2538/CMakeLists.txt index 13ecedb0d..50fe9b357 100644 --- a/examples/platforms/cc2538/CMakeLists.txt +++ b/examples/platforms/cc2538/CMakeLists.txt @@ -55,12 +55,18 @@ add_library(openthread-cc2538 $ ) +set_property(TARGET openthread-cc2538 PROPERTY C_STANDARD 99) + target_link_libraries(openthread-cc2538 PRIVATE openthread-platform-utils) target_link_options(openthread-cc2538 PUBLIC -T${PROJECT_SOURCE_DIR}/examples/platforms/cc2538/cc2538.ld) target_link_options(openthread-cc2538 PUBLIC -Wl,-Map=$.map) target_compile_definitions(openthread-cc2538 PUBLIC ${OT_PLATFORM_DEFINES}) +target_compile_options(openthread-cc2538 PRIVATE + ${OT_CFLAGS} +) + target_include_directories(openthread-cc2538 PRIVATE ${OT_PUBLIC_INCLUDES} ${OT_PRIVATE_INCLUDES} diff --git a/examples/platforms/posix/CMakeLists.txt b/examples/platforms/posix/CMakeLists.txt index b4d7229e6..50301944b 100644 --- a/examples/platforms/posix/CMakeLists.txt +++ b/examples/platforms/posix/CMakeLists.txt @@ -34,6 +34,8 @@ if(NOT OT_CONFIG) endif() list(APPEND OT_PLATFORM_DEFINES + "_BSD_SOURCE=1" + "_DEFAULT_SOURCE=1" "OPENTHREAD_EXAMPLES_POSIX=1" "OPENTHREAD_POSIX=1" "OPENTHREAD_CONFIG_NCP_UART_ENABLE=1" @@ -58,6 +60,8 @@ add_library(openthread-posix $ ) +set_property(TARGET openthread-posix PROPERTY C_STANDARD 99) + find_library(LIBRT rt) if(LIBRT) target_link_libraries(openthread-posix PRIVATE ${LIBRT}) @@ -67,6 +71,10 @@ target_link_libraries(openthread-posix PRIVATE openthread-platform-utils) target_compile_definitions(openthread-posix PUBLIC ${OT_PLATFORM_DEFINES}) +target_compile_options(openthread-posix PRIVATE + ${OT_CFLAGS} +) + target_include_directories(openthread-posix PRIVATE ${OT_PUBLIC_INCLUDES} ${OT_PRIVATE_INCLUDES} diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt index 33c9d9ec5..55dc8b785 100644 --- a/src/cli/CMakeLists.txt +++ b/src/cli/CMakeLists.txt @@ -29,6 +29,13 @@ add_library(openthread-cli-ftd) add_library(openthread-cli-mtd) +set_target_properties( + openthread-cli-ftd openthread-cli-mtd + PROPERTIES + C_STANDARD 99 + CXX_STANDARD 98 +) + target_compile_definitions(openthread-cli-ftd PRIVATE ${OT_PRIVATE_DEFINES} OPENTHREAD_FTD=1 @@ -39,6 +46,14 @@ target_compile_definitions(openthread-cli-mtd PRIVATE OPENTHREAD_MTD=1 ) +target_compile_options(openthread-cli-ftd PRIVATE + ${OT_CFLAGS} +) + +target_compile_options(openthread-cli-mtd PRIVATE + ${OT_CFLAGS} +) + set(COMMON_INCLUDES ${OT_PRIVATE_INCLUDES} ${PROJECT_SOURCE_DIR}/src diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 99c58cdea..848ae7294 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -30,6 +30,13 @@ add_library(openthread-ftd) add_library(openthread-mtd) add_library(openthread-radio) +set_target_properties( + openthread-ftd openthread-mtd openthread-radio + PROPERTIES + C_STANDARD 99 + CXX_STANDARD 98 +) + target_compile_definitions(openthread-ftd PRIVATE ${OT_PRIVATE_DEFINES} OPENTHREAD_FTD=1 @@ -45,6 +52,18 @@ target_compile_definitions(openthread-radio PRIVATE OPENTHREAD_RADIO=1 ) +target_compile_options(openthread-ftd PRIVATE + ${OT_CFLAGS} +) + +target_compile_options(openthread-mtd PRIVATE + ${OT_CFLAGS} +) + +target_compile_options(openthread-radio PRIVATE + ${OT_CFLAGS} +) + set(COMMON_INCLUDES ${OT_PRIVATE_INCLUDES} ${PROJECT_SOURCE_DIR}/src/core diff --git a/src/ncp/CMakeLists.txt b/src/ncp/CMakeLists.txt index e45ffb040..7d0836bab 100644 --- a/src/ncp/CMakeLists.txt +++ b/src/ncp/CMakeLists.txt @@ -30,6 +30,14 @@ add_library(openthread-ncp-ftd) add_library(openthread-ncp-mtd) add_library(openthread-rcp) +# We depend on C++11 to validate that NCP handlers are sorted. +set_target_properties( + openthread-ncp-mtd openthread-rcp + PROPERTIES + C_STANDARD 99 + CXX_STANDARD 98 +) + target_compile_definitions(openthread-ncp-ftd PRIVATE ${OT_PRIVATE_DEFINES} OPENTHREAD_FTD=1 @@ -48,6 +56,18 @@ target_compile_definitions(openthread-rcp PRIVATE OPENTHREAD_CONFIG_NCP_UART_ENABLE=1 ) +target_compile_options(openthread-ncp-ftd PRIVATE + ${OT_CFLAGS} +) + +target_compile_options(openthread-ncp-mtd PRIVATE + ${OT_CFLAGS} +) + +target_compile_options(openthread-rcp PRIVATE + ${OT_CFLAGS} +) + set(COMMON_INCLUDES ${OT_PRIVATE_INCLUDES} ${PROJECT_SOURCE_DIR}/src diff --git a/src/posix/CMakeLists.txt b/src/posix/CMakeLists.txt index 920584f9b..446d342da 100644 --- a/src/posix/CMakeLists.txt +++ b/src/posix/CMakeLists.txt @@ -44,6 +44,10 @@ if(OT_DAEMON) OPENTHREAD_POSIX_APP_TYPE=2 ) + target_compile_options(ot-daemon PRIVATE + ${OT_CFLAGS} + ) + target_link_libraries(ot-daemon PRIVATE openthread-cli-ftd ${OT_PLATFORM_LIB} @@ -57,6 +61,10 @@ if(OT_DAEMON) client.c ) + target_compile_options(ot-ctl PRIVATE + ${OT_CFLAGS} + ) + target_include_directories(ot-ctl PRIVATE ${COMMON_INCLUDES}) else() add_executable(ot-cli @@ -69,6 +77,10 @@ else() OPENTHREAD_POSIX_APP_TYPE=2 ) + target_compile_options(ot-cli PRIVATE + ${OT_CFLAGS} + ) + target_link_libraries(ot-cli openthread-cli-ftd ${OT_PLATFORM_LIB} @@ -81,12 +93,17 @@ else() add_executable(ot-ncp main.c ) + target_include_directories(ot-ncp PRIVATE ${COMMON_INCLUDES}) target_compile_definitions(ot-ncp PRIVATE OPENTHREAD_POSIX_APP_TYPE=1 ) + target_compile_options(ot-ncp PRIVATE + ${OT_CFLAGS} + ) + target_link_libraries(ot-ncp openthread-ncp-ftd ${OT_PLATFORM_LIB} diff --git a/src/posix/platform/CMakeLists.txt b/src/posix/platform/CMakeLists.txt index 6cdc73e45..d1676b48b 100644 --- a/src/posix/platform/CMakeLists.txt +++ b/src/posix/platform/CMakeLists.txt @@ -64,6 +64,10 @@ target_link_libraries(openthread-posix PUBLIC target_compile_definitions(openthread-posix PUBLIC ${OT_PLATFORM_DEFINES}) +target_compile_options(openthread-posix PRIVATE + ${OT_CFLAGS} +) + target_include_directories(openthread-posix PRIVATE ${OT_PUBLIC_INCLUDES} ${OT_PRIVATE_INCLUDES}