You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.5 KiB
108 lines
2.5 KiB
if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") |
|
add_compile_options( |
|
-pedantic |
|
-Wall |
|
-Wcast-align |
|
-Wcast-qual |
|
-Wconversion |
|
-Wctor-dtor-privacy |
|
-Wdisabled-optimization |
|
-Werror |
|
-Wextra |
|
-Wformat=2 |
|
-Winit-self |
|
-Wmissing-include-dirs |
|
-Wnon-virtual-dtor |
|
-Wold-style-cast |
|
-Woverloaded-virtual |
|
-Wparentheses |
|
-Wredundant-decls |
|
-Wshadow |
|
-Wsign-conversion |
|
-Wsign-promo |
|
-Wstrict-aliasing |
|
-Wundef |
|
) |
|
|
|
if(${COVERAGE}) |
|
set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage") |
|
endif() |
|
endif() |
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
|
if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8) AND(NOT ${COVERAGE})) |
|
add_compile_options(-g -Og) |
|
else() # GCC 4.8 |
|
add_compile_options( |
|
-g |
|
-O0 # GCC 4.8 doesn't support -Og |
|
-Wno-shadow # allow the same name for a function parameter and a member functions |
|
-Wp,-w # Disable preprocessing warnings (see below) |
|
) |
|
# GCC 4.8 doesn't support __has_include, so we need to help him |
|
add_definitions( |
|
-DARDUINOJSON_ENABLE_STD_STRING=1 |
|
-DARDUINOJSON_ENABLE_STD_STREAM=1 |
|
) |
|
endif() |
|
|
|
add_compile_options( |
|
-Wstrict-null-sentinel |
|
-Wno-vla # Allow VLA in tests |
|
) |
|
add_definitions(-DHAS_VARIABLE_LENGTH_ARRAY) |
|
|
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.5) |
|
add_compile_options(-Wlogical-op) # the flag exists in 4.4 but is buggy |
|
endif() |
|
|
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6) |
|
add_compile_options(-Wnoexcept) |
|
endif() |
|
endif() |
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
|
add_compile_options( |
|
-Wc++11-compat |
|
-Wdeprecated-register |
|
-Wno-vla-extension # Allow VLA in tests |
|
) |
|
add_definitions( |
|
-DHAS_VARIABLE_LENGTH_ARRAY |
|
-DSUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR |
|
) |
|
endif() |
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") |
|
add_compile_options(-stdlib=libc++) |
|
link_libraries(c++ m) |
|
|
|
if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0) AND(NOT ${COVERAGE})) |
|
add_compile_options(-g -Og) |
|
else() |
|
add_compile_options(-g -O0) |
|
endif() |
|
endif() |
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") |
|
if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) AND(NOT ${COVERAGE})) |
|
add_compile_options(-g -Og) |
|
else() |
|
add_compile_options(-g -O0) |
|
endif() |
|
endif() |
|
|
|
if(MSVC) |
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS) |
|
add_compile_options( |
|
/W4 # Set warning level |
|
/WX # Treats all compiler warnings as errors. |
|
/Zc:__cplusplus # Enable updated __cplusplus macro |
|
) |
|
endif() |
|
|
|
if(MINGW) |
|
# Static link on MinGW to avoid linking with the wrong DLLs when multiple |
|
# versions are installed. |
|
add_link_options(-static) |
|
endif()
|
|
|