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

Reply via email to