Changeset: 538effeeb53e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=538effeeb53e Modified Files: CMakeLists.txt cmake/monetdb-functions.cmake cmake/monetdb-toolchain.cmake Branch: default Log Message:
use modern cmake for compile options diffs (135 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ set(CMAKE_FIND_FRAMEWORK LAST) set(CMAKE_FIND_APPBUNDLE LAST) include(CheckCSourceCompiles REQUIRED) +include(CheckCCompilerFlag REQUIRED) include(CheckIncludeFile REQUIRED) include(CMakePushCheckState REQUIRED) include(CheckStructHasMember REQUIRED) @@ -52,6 +53,8 @@ include(monetdb-functions) include(monetdb-findpackages) include(monetdb-toolchain) monetdb_default_toolchain() +#monetdb_default_compiler_options() + include(monetdb-defines) monetdb_hg_revision() diff --git a/cmake/monetdb-functions.cmake b/cmake/monetdb-functions.cmake --- a/cmake/monetdb-functions.cmake +++ b/cmake/monetdb-functions.cmake @@ -52,6 +52,15 @@ function(MT_checkCompilerFlag Flag) endif() endfunction() +function(add_option_if_available Flag) + string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") + check_c_compiler_flag(${Flag} ${FLAG_TEST}_FOUND) + set(ISFOUND "${${FLAG_TEST}_FOUND}}") + if(ISFOUND) + add_compile_options("${Flag}") + endif() +endfunction() + function(create_include_object) cmake_parse_arguments( create_prefix @@ -150,6 +159,7 @@ function(monetdb_cmake_summary) message(STATUS "Dpkg-buildpackage: ${DPKGBUILDPACKAGE_FOUND}") message(STATUS "Reprepro: ${REPREPRO_FOUND}") message(STATUS "Semodule: ${SEMODULE_FOUND}") + message(STATUS "flags: ${CMAKE_C_FLAGS}") message(STATUS "-----------------------------------------") message(STATUS "") endfunction() diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake --- a/cmake/monetdb-toolchain.cmake +++ b/cmake/monetdb-toolchain.cmake @@ -97,3 +97,84 @@ function(monetdb_default_toolchain) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" PARENT_SCOPE) endfunction() + +function(monetdb_default_compiler_options) + if(SANITIZER) + if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") + add_compile_options("-fsanitize=address") + add_compile_options("-fno-omit-frame-pointer") + add_compile_definitions(-DNO_ATOMIC_INSTRUCTIONS) + else() + message(FATAL_ERROR "Sanitizer only supported with GCC") + endif() + endif() + + if(STRICT) + if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU|Clang|AppleClang$") + add_compile_options("-Werror") + add_compile_options("-Wall") + add_compile_options("-Wextra") + add_compile_options("-W") + + add_option_if_available("-Werror-implicit-function-declaration") + add_option_if_available("-Wpointer-arith") + add_option_if_available("-Wundef") + add_option_if_available("-Wformat=2") + add_option_if_available("-Wformat-overflow=1") + add_option_if_available("-Wno-format-truncation") + add_option_if_available("-Wno-format-nonliteral") + #add_option_if_available("-Wformat-signedness") -- numpy messes this up + add_option_if_available("-Wno-cast-function-type") + add_option_if_available("-Winit-self") + add_option_if_available("-Winvalid-pch") + add_option_if_available("-Wmissing-declarations") + add_option_if_available("-Wmissing-format-attribute") + add_option_if_available("-Wmissing-prototypes") + # need this for clang 9.1.0 on Darwin: + add_option_if_available("-Wno-missing-field-initializers") + add_option_if_available("-Wold-style-definition") + add_option_if_available("-Wpacked") + add_option_if_available("-Wunknown-pragmas") + add_option_if_available("-Wvariadic-macros") + add_option_if_available("-Wstack-protector") + add_option_if_available("-fstack-protector-all") + add_option_if_available("-Wstack-protector") + add_option_if_available("-Wpacked-bitfield-compat") + add_option_if_available("-Wsync-nand") + add_option_if_available("-Wjump-misses-init") + add_option_if_available("-Wmissing-include-dirs") + add_option_if_available("-Wlogical-op") + add_option_if_available("-Wduplicated-cond") + add_option_if_available("-Wduplicated-branches") + add_option_if_available("-Wrestrict") + add_option_if_available("-Wnested-externs") + # since we use values of type "int8_t" as subscript, + # and int8_t may be defined as plain "char", we cannot + # allow this warning (part of -Wall) + add_option_if_available("-Wno-char-subscripts") + add_option_if_available("-Wunreachable-code") + elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel") + if(WIN32) + add_compile_options("/W3") + add_compile_options("/Wcheck") + add_compile_options("/Werror-all") + add_compile_options("/${INTEL_OPTION_EXTRA}wd2259") + else() + add_compile_options("-Wall") + add_compile_options("-Wcheck") + add_compile_options("-Werror-all") + add_compile_options("-${INTEL_OPTION_EXTRA}wd2259") + endif() + elseif(MSVC) + add_compile_options("/WX") + endif() + endif() + + if(NOT MSVC) + add_option_if_available("-Wno-unreachable-code") + endif() + + if(NOT ASSERT) + add_compile_definitions("-DNDEBUG=1") + endif() +endfunction() _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list