Changeset: 5c5ef163f05a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5c5ef163f05a
Modified Files:
        CMakeLists.txt
Branch: cmake-fun
Log Message:

Do compiler flags checks later to avoid conflicts with libraries tests.


diffs (truncated from 606 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -330,45 +330,6 @@ if(NOT NAN_CAN_BE_USED_AS_INITIALIZER)
        set(NAN_CANNOT_BE_USED_AS_INITIALIZER ON)
 endif()
 
-# Iconv - Check before adding any new compiler flag
-set(ICONV_INCLUDE_DIR "")
-set(ICONV_LIBRARIES "")
-include(FindIconv)
-if(Iconv_FOUND)
-       set(HAVE_ICONV ON)
-       set(HAVE_ICONV_H ON)
-       cmake_push_check_state()
-       if(NOT Iconv_IS_BUILT_IN)
-               set(ICONV_INCLUDE_DIR "${Iconv_INCLUDE_DIR}")
-               set(ICONV_LIBRARIES "${Iconv_LIBRARY}")
-               set(CMAKE_REQUIRED_LIBRARIES 
"${CMAKE_REQUIRED_LIBRARIES};${ICONV_LIBRARIES}")
-       endif()
-
-       if(MSVC)
-               set(ICONV_CONST " ")
-       else()
-               message(STATUS "Check if second iconv argument requires const")
-               check_c_source_compiles("
-                       #include <iconv.h>
-
-                       int main(int argc, char **argv) {
-                               iconv_t conv = 0;
-                               char* in, *out = 0;
-                               size_t ilen = 0, olen = 0;
-                               (void) argc; (void) argv;
-                               iconv(conv, &in, &ilen, &out, &olen);
-                               return 0;
-                       }
-               " ICONV_NOT_REQUIRES_CONST)
-               if(ICONV_NOT_REQUIRES_CONST)
-                       set(ICONV_CONST " ")
-               else()
-                       set(ICONV_CONST const)
-               endif()
-       endif()
-       cmake_pop_check_state()
-endif()
-
 if(${CMAKE_C_COMPILER_ID} STREQUAL "Intel" AND EXISTS 
"${ROOT}/usr/include/math.h") # see 
https://software.intel.com/en-us/forums/intel-c-compiler/topic/760979
        file(READ "${ROOT}/usr/include/math.h" TMPTXT)
        string(FIND "${TMPTXT}" "_LIB_VERSION_TYPE" FOUND_VERSION)
@@ -377,224 +338,6 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "Inte
        endif()
 endif()
 
-# Check for compiler flags
-function(removeCompilerFlag REGEX_EXPRESSION FLAG_TO_REMOVE OLD_FLAGS BUILD 
NEW_FLAGS)
-       if(${OLD_FLAGS} MATCHES "${REGEX_EXPRESSION}")
-               string(REGEX REPLACE "${REGEX_EXPRESSION}" "" NEW_VAR 
"${OLD_FLAGS}")
-               set(${NEW_FLAGS} "${NEW_VAR}" PARENT_SCOPE)
-               message(STATUS "Removed ${FLAG_TO_REMOVE} flag for ${BUILD} 
build(s)")
-       endif()
-endfunction()
-function(addCompilerFlag REGEX_EXPRESSION FLAG_TO_ADD OLD_FLAGS BUILD 
NEW_FLAGS)
-       if(NOT ${OLD_FLAGS} MATCHES "${REGEX_EXPRESSION}")
-               set(${NEW_FLAGS} "${OLD_FLAGS} ${FLAG_TO_ADD}" PARENT_SCOPE)
-               message(STATUS "Added ${FLAG_TO_ADD} flag for ${BUILD} 
build(s)")
-       endif()
-endfunction()
-function(addLinkerFlag REGEX_EXPRESSION FLAG_TO_ADD OLD_FLAGS NEW_FLAGS)
-       if(NOT ${OLD_FLAGS} MATCHES "${REGEX_EXPRESSION}")
-               set(${NEW_FLAGS} "${OLD_FLAGS} ${FLAG_TO_ADD}" PARENT_SCOPE)
-               message(STATUS "Added ${FLAG_TO_ADD} flag")
-       endif()
-endfunction()
-
-if(NOT CMAKE_C_FLAGS)
-       set(CMAKE_C_FLAGS "")
-endif()
-if(MSVC)
-       addCompilerFlag("/GF" "/GF" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
-       addCompilerFlag("/W3" "/W3" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
-       addCompilerFlag("/nologo" "/nologo" "${CMAKE_C_FLAGS}" "all" 
CMAKE_C_FLAGS)
-       addCompilerFlag("/Zi" "/Zi" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
-       addCompilerFlag("/Oi" "/Oi" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
-endif()
-set(X_CFLAGS "")
-
-if(${ENABLE_ASSERT} STREQUAL "NO")
-       set(NDEBUG ON)
-elseif(${ENABLE_ASSERT} STREQUAL "YES" AND ${CMAKE_C_COMPILER_ID} STREQUAL 
"Intel")
-       set(X_CFLAGS "${X_CFLAGS} -wd279")
-endif()
-
-if(MSVC)
-       # Remove all /Ox but /Oi on all, /Od on Debug and /Ox on others
-       removeCompilerFlag("/O[0-9a-ce-hj-zA-CE-HJ-Z]+[ ]?" "/Ox" 
"${CMAKE_C_FLAGS_DEBUG}" "Debug" CMAKE_C_FLAGS_DEBUG)
-       removeCompilerFlag("/O[0-9a-hj-wyzA-HJ-WYZ]+[ ]?" "/Ox" 
"${CMAKE_C_FLAGS_RELEASE}" "Release" CMAKE_C_FLAGS_RELEASE)
-       removeCompilerFlag("/O[0-9a-hj-wyzA-HJ-WYZ]+[ ]?" "/Ox" 
"${CMAKE_C_FLAGS_RELWITHDEBINFO}" "RelWithDebugInfo" 
CMAKE_C_FLAGS_RELWITHDEBINFO)
-       removeCompilerFlag("/O[0-9a-hj-wyzA-HJ-WYZ]+[ ]?" "/Ox" 
"${CMAKE_C_FLAGS_MINSIZEREL}" "MinSizeRel" CMAKE_C_FLAGS_MINSIZEREL)
-
-       addCompilerFlag("/Od" "/Od" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
-       addCompilerFlag("/Ox" "/Ox" "${CMAKE_C_FLAGS_RELEASE}" "Release" 
CMAKE_C_FLAGS_RELEASE)
-       addCompilerFlag("/Ox" "/Ox" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
"RelWithDebugInfo" CMAKE_C_FLAGS_RELWITHDEBINFO)
-       addCompilerFlag("/Ox" "/Ox" "${CMAKE_C_FLAGS_MINSIZEREL}" "MinSizeRel" 
CMAKE_C_FLAGS_MINSIZEREL)
-
-       addCompilerFlag("/RTC1" "/RTC1" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
-       addCompilerFlag("/D_DEBUG" "/D_DEBUG" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
-
-       addCompilerFlag("/MDd" "/MDd" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
-       addCompilerFlag("/MD" "/MD" "${CMAKE_C_FLAGS_RELEASE}" "Release" 
CMAKE_C_FLAGS_RELEASE)
-       addCompilerFlag("/MD" "/MD" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
"RelWithDebugInfo" CMAKE_C_FLAGS_RELWITHDEBINFO)
-       addCompilerFlag("/MD" "/MD" "${CMAKE_C_FLAGS_MINSIZEREL}" "MinSizeRel" 
CMAKE_C_FLAGS_MINSIZEREL)
-else()
-       # Remove existing -Ox flags
-       removeCompilerFlag("-O[0-2sS]+[ ]?" "-Ox" "${CMAKE_C_FLAGS_DEBUG}" 
"Debug" CMAKE_C_FLAGS_DEBUG)
-       removeCompilerFlag("-O[0-2sS]+[ ]?" "-Ox" "${CMAKE_C_FLAGS_RELEASE}" 
"Release" CMAKE_C_FLAGS_RELEASE)
-       removeCompilerFlag("-O[0-2sS]+[ ]?" "-Ox" 
"${CMAKE_C_FLAGS_RELWITHDEBINFO}" "RelWithDebugInfo" 
CMAKE_C_FLAGS_RELWITHDEBINFO)
-       removeCompilerFlag("-O[0-2sS]+[ ]?" "-Ox" "${CMAKE_C_FLAGS_MINSIZEREL}" 
"MinSizeRel" CMAKE_C_FLAGS_MINSIZEREL)
-       if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU|Clang|AppleClang$")
-               addCompilerFlag("-O3" "-O3" "${CMAKE_C_FLAGS_RELEASE}" 
"Release" CMAKE_C_FLAGS_RELEASE)
-               addCompilerFlag("-O3" "-O3" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
"RelWithDebugInfo" CMAKE_C_FLAGS_RELWITHDEBINFO)
-               addCompilerFlag("-O3" "-O3" "${CMAKE_C_FLAGS_MINSIZEREL}" 
"MinSizeRel" CMAKE_C_FLAGS_MINSIZEREL)
-       elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
-               addCompilerFlag("-O2" "-O2" "${CMAKE_C_FLAGS_RELEASE}" 
CMAKE_C_FLAGS_RELEASE)
-               addCompilerFlag("-O2" "-O2" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
CMAKE_C_FLAGS_RELWITHDEBINFO)
-               addCompilerFlag("-O2" "-O2" "${CMAKE_C_FLAGS_MINSIZEREL}" 
CMAKE_C_FLAGS_MINSIZEREL)
-       endif()
-
-       # Replace -g flag with -g3
-       if(${CMAKE_C_FLAGS_DEBUG} MATCHES "-g$") # hack
-               set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ")
-               set(CMAKE_C_FLAGS_RELWITHDEBINFO 
"${CMAKE_C_FLAGS_RELWITHDEBINFO} ")
-       endif()
-       removeCompilerFlag("-g[ ]" "-g" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
-       removeCompilerFlag("-g[ ]" "-g" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
"RelWithDebugInfo" CMAKE_C_FLAGS_RELWITHDEBINFO)
-       if("${CMAKE_C_FLAGS_DEBUG}" STREQUAL "") # hack
-               set(CMAKE_C_FLAGS_DEBUG "-g3")
-               set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g3")
-               message(STATUS "Added -g3 flag for Debug and RelWithDebugInfo 
build(s)")
-       else()
-               addCompilerFlag("-g3" "-g3" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
-               addCompilerFlag("-g3" "-g3" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
"RelWithDebugInfo" CMAKE_C_FLAGS_RELWITHDEBINFO)
-       endif()
-
-       if(NOT ${CMAKE_C_FLAGS_RELEASE} MATCHES "D_FORTIFY_SOURCE")
-               cmake_push_check_state()
-               set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} 
-D_FORTIFY_SOURCE=2")
-               check_c_compiler_flag("" HAVE_FORTIFY_SOURCE)
-               cmake_pop_check_state()
-               if(HAVE_FORTIFY_SOURCE)
-                       set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} 
-D_FORTIFY_SOURCE=2")
-                       set(CMAKE_C_FLAGS_RELWITHDEBINFO 
"${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_FORTIFY_SOURCE=2")
-                       set(CMAKE_C_FLAGS_MINSIZEREL 
"${CMAKE_C_FLAGS_MINSIZEREL} -D_FORTIFY_SOURCE=2")
-                       message(STATUS "Added definition _FORTIFY_SOURCE=2 for 
Release build")
-               endif()
-       endif()
-
-       if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang") # Add fomit-frame-pointer 
to Clang compilation
-               addCompilerFlag("-fomit-frame-pointer" "-fomit-frame-pointer" 
"${CMAKE_C_FLAGS}" "Release" CMAKE_C_FLAGS)
-       endif()
-
-       if(${ENABLE_ASSERT} STREQUAL "YES" AND NOT MSVC) # Remove 
-fomit-frame-pointer in assert builds
-               removeCompilerFlag("-fomit-frame-pointer[ ]?" 
"-fomit-frame-pointer" "${CMAKE_C_FLAGS}" "Debug" CMAKE_C_FLAGS)
-       endif()
-endif()
-
-function(checkCompilerFlag Flag)
-       if(NOT "${CMAKE_C_FLAGS}" MATCHES "${Flag}")
-               check_c_compiler_flag("${Flag}" COMPILE_SUCCEEDED)
-               if(COMPILE_SUCCEEDED)
-                       message(STATUS "Test for ${Flag} succeeded")
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Flag}" 
PARENT_SCOPE)
-               else()
-                       message(STATUS "Test for ${Flag} failed")
-               endif()
-       endif()
-endfunction()
-
-if(${ENABLE_STRICT} STREQUAL "YES")
-       if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU|Clang|AppleClang$")
-               checkCompilerFlag("-W")
-               checkCompilerFlag("-Werror")
-               checkCompilerFlag("-Wall")
-               checkCompilerFlag("-Wextra")
-               checkCompilerFlag("-Werror-implicit-function-declaration")
-               checkCompilerFlag("-Wpointer-arith")
-               checkCompilerFlag("-Wundef")
-               checkCompilerFlag("-Wformat=2")
-               checkCompilerFlag("-Wformat-overflow=1")
-               checkCompilerFlag("-Wno-format-truncation")
-               checkCompilerFlag("-Wno-format-nonliteral")
-               if(${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
-                       checkCompilerFlag("-Wno-error=suggest-attribute=format")
-                       checkCompilerFlag("-Wno-cast-function-type")
-               endif()
-               checkCompilerFlag("-Winit-self")
-               checkCompilerFlag("-Winvalid-pch")
-               checkCompilerFlag("-Wmissing-declarations")
-               checkCompilerFlag("-Wmissing-format-attribute")
-               checkCompilerFlag("-Wmissing-prototypes")
-               checkCompilerFlag("-Wno-missing-field-initializers")
-               checkCompilerFlag("-Wold-style-definition")
-               checkCompilerFlag("-Wpacked")
-               checkCompilerFlag("-Wunknown-pragmas")
-               checkCompilerFlag("-Wvariadic-macros")
-               checkCompilerFlag("-fstack-protector-all")
-               checkCompilerFlag("-Wstack-protector")
-               checkCompilerFlag("-Wpacked-bitfield-compat")
-               checkCompilerFlag("-Wsync-nand")
-               checkCompilerFlag("-Wjump-misses-init")
-               checkCompilerFlag("-Wmissing-include-dirs")
-               checkCompilerFlag("-Wlogical-op")
-               checkCompilerFlag("-Wduplicated-cond")
-               checkCompilerFlag("-Wduplicated-branches")
-               checkCompilerFlag("-Wrestrict")
-               checkCompilerFlag("-Wnested-externs")
-               checkCompilerFlag("-Wno-char-subscripts")
-               checkCompilerFlag("-Wunreachable-code")
-       elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
-               if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10)
-                       addLinkerFlag("-i_dynamic" "-i_dynamic" 
"${LINK_OPTIONS}" LINK_OPTIONS)
-               else()
-                       addLinkerFlag("-shared-intel" "-shared-intel" 
"${LINK_OPTIONS}" LINK_OPTIONS)
-               endif()
-               if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1 AND 
CMAKE_C_COMPILER_VERSION VERSION_LESS_EQUAL 11)
-                       addLinkerFlag("-wd1418" "-wd1418" "${LINK_OPTIONS}" 
LINK_OPTIONS)
-               endif()
-               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -we140 -we147")
-               if(CMAKE_C_COMPILER_VERSION VERSION_LESS 8 OR 
CMAKE_C_COMPILER_VERSION VERSION_GREATER 17)
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ansi")
-               endif()
-
-               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -w2 -Wcheck")
-               set(X_CFLAGS "${X_CFLAGS} -we266,181,810,271,593")
-               set(X_CFLAGS "${X_CFLAGS} -Werror -Werror-all")
-               set(X_CFLAGS "${X_CFLAGS} -wd1418,1419,981,193,1357")
-
-               if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL 11 OR 
CMAKE_C_COMPILER_VERSION VERSION_EQUAL 15 OR CMAKE_C_COMPILER_VERSION 
VERSION_EQUAL 17)
-                       set(X_CFLAGS "${X_CFLAGS},2259")
-               endif()
-               if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1 OR 
CMAKE_C_COMPILER_VERSION VERSION_LESS_EQUAL 8.9)
-                       set(X_CFLAGS "${X_CFLAGS},1572")
-               elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 9.1 OR 
CMAKE_C_COMPILER_VERSION VERSION_LESS_EQUAL 9.9 OR (CMAKE_C_COMPILER_VERSION 
VERSION_GREATER_EQUAL 10 AND CMAKE_C_COMPILER_VERSION VERSION_EQUAL 11))
-                       set(X_CFLAGS "${X_CFLAGS},1572,1599")
-               endif()
-       elseif(MSVC)
-               checkCompilerFlag("/WX")
-       endif()
-endif()
-
-if(NOT ${ENABLE_SANITIZER} STREQUAL "NO")
-       if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
-               string(TOLOWER "${ENABLE_SANITIZER}" ENABLE_SANITIZER_LOWER)
-               checkCompilerFlag("-fsanitize=address")
-               checkCompilerFlag("-fsanitize=${ENABLE_SANITIZER_LOWER}")
-               checkCompilerFlag("-fno-omit-frame-pointer")
-               add_compile_definitions(NO_ATOMIC_INSTRUCTIONS)
-       else()
-               message(FATAL_ERROR "Sanitizer only supported with GCC")
-       endif()
-endif()
-
-if(NOT "${LINK_OPTIONS}" MATCHES "-Wl,-Bsymbolic-function")
-       message(STATUS "Test if compiler supports -Wl,-Bsymbolic-functions 
flag")
-       set(PREV_LINK_OPTIONS "${LINK_OPTIONS}")
-       set(LINK_OPTIONS "${LINK_OPTIONS} -Wl,-Bsymbolic-functions")
-       check_c_compiler_flag("" HAVE_WL_BSYMBOLIC_FUNCTIONS)
-       if(NOT HAVE_WL_BSYMBOLIC_FUNCTIONS)
-               set(LINK_OPTIONS "${PREV_LINK_OPTIONS}")
-       endif()
-endif()
-
 set(PYTHON2 "AUTO" CACHE PATH "python2 is installed in DIR")
 set(PYTHON3 "AUTO" CACHE PATH "python3 is installed in DIR")
 message(STATUS "Checking major version of Python interpreter")
@@ -788,18 +531,6 @@ if(NOT ${ENABLE_TESTING} STREQUAL "NO")
        set(HAVE_TESTING ON)
 endif()
 
-find_package(BISON)
-if(BISON_FOUND)
-       if(BISON_VERSION VERSION_LESS_EQUAL 2.4.3)
-               removeCompilerFlag("-Wundef[ ]?" "-Wundef" "${CMAKE_C_FLAGS}" 
"all" CMAKE_C_FLAGS)
-       endif()
-elseif(${ENABLE_SQL} STREQUAL "YES")
-       message(FATAL_ERROR "MonetDB/SQL requires bison")
-else()
-       set(ENABLE_SQL "NO")
-       message(STATUS "Bison not found")
-endif()
-
 if(WIN32)
        set(OS_DIRSEP  "\\\\")
        set(OS_PATHSEP ";")
@@ -828,6 +559,55 @@ if(APPLE)
 endif()
 
 # checks for libraries
+find_package(BISON)
+if(NOT BISON_FOUND)
+       if(${ENABLE_SQL} STREQUAL "YES")
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to