summaryrefslogtreecommitdiffstats
path: root/cmake/CompilerFlags.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/CompilerFlags.cmake')
-rw-r--r--cmake/CompilerFlags.cmake58
1 files changed, 58 insertions, 0 deletions
diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake
new file mode 100644
index 0000000..fe951bb
--- /dev/null
+++ b/cmake/CompilerFlags.cmake
@@ -0,0 +1,58 @@
+include(CheckCCompilerFlag)
+
+macro (checkCFlag FLAG)
+ CHECK_C_COMPILER_FLAG("${FLAG}" CFLAG${FLAG})
+ if(CFLAG${FLAG})
+ string(APPEND CMAKE_C_FLAGS " ${FLAG}")
+ else()
+ message(WARNING "compiler does not support ${FLAG}")
+ endif()
+endmacro()
+
+option(ENABLE_WARNING_VERBOSE "enable -Weveryting (and some exceptions) for compile" ON)
+option(ENABLE_WARNING_ERROR "enable -Werror for compile" OFF)
+
+if (ENABLE_WARNING_VERBOSE)
+ if (MSVC)
+ # Remove previous warning definitions,
+ # NMake is otherwise complaining.
+ foreach (flags_var_to_scrub
+ CMAKE_C_FLAGS
+ CMAKE_C_FLAGS_DEBUG
+ CMAKE_C_FLAGS_RELEASE
+ CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_C_FLAGS_MINSIZEREL)
+ string (REGEX REPLACE "(^| )[/-]W[ ]*[1-9]" " "
+ "${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
+ endforeach()
+
+ set(C_WARNING_FLAGS
+ /W4
+ /wo4324
+ )
+ else()
+ set(C_WARNING_FLAGS
+ -Weverything
+ -Wall
+ -Wpedantic
+ -Wno-padded
+ -Wno-cast-align
+ -Wno-declaration-after-statement
+ -Wno-unsafe-buffer-usage
+ -Wno-reserved-identifier
+ -Wno-covered-switch-default
+ )
+ endif()
+
+ foreach(FLAG ${C_WARNING_FLAGS})
+ CheckCFlag(${FLAG})
+ endforeach()
+endif()
+
+
+if (ENABLE_WARNING_ERROR)
+ CheckCFlag(-Werror)
+endif()
+
+set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "default CFLAGS")
+message("Using CFLAGS ${CMAKE_C_FLAGS}")