Changeset: 0bc4e3191704 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0bc4e3191704
Modified Files:
        CMakeLists.txt
        common/options/CMakeLists.txt
        common/utils/CMakeLists.txt
        monetdb5/mal/CMakeLists.txt
        monetdb5/modules/atoms/CMakeLists.txt
        monetdb5/modules/kernel/CMakeLists.txt
        monetdb5/modules/mal/CMakeLists.txt
        monetdb5/optimizer/CMakeLists.txt
        monetdb5/scheduler/CMakeLists.txt
        sql/common/CMakeLists.txt
        sql/server/CMakeLists.txt
        sql/storage/CMakeLists.txt
        sql/storage/bat/CMakeLists.txt
Branch: cmake-fun
Log Message:

Compiles, installs and runs on my Linux machine.

When adding a target_link_library, the target becomes a dependency 
automatically.


diffs (truncated from 1171 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,14 +30,9 @@ include(TestLargeFiles REQUIRED)
 include(TestBigEndian REQUIRED)
 
 cmake_policy(SET CMP0075 NEW)
-set(CMAKE_POSITION_INDEPENDENT_CODE ON) # TODO check this
 
-# Save default cmake options in the beggining
+# Save default cmake options in the begining
 set(PREV_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
-set(PREV_CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
-set(PREV_CMAKE_REQUIRED_LINK_OPTIONS "${CMAKE_REQUIRED_LINK_OPTIONS}")
-set(PREV_CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_EXTRA_INCLUDE_FILES}")
-set(PREV_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
 
 function(MT_clibsToCmake INPUT_INCS OUTPUT_INCS) # Remove -I before the 
include path
        string(LENGTH "${INPUT_INCS}" INPUT_INCS_LENGTH)
@@ -53,8 +48,6 @@ string(TOLOWER "${CMAKE_SYSTEM_NAME}" CM
 string(TOLOWER "${CMAKE_C_COMPILER_ID}" CMAKE_C_COMPILER_ID_LOWER)
 set("HOST" 
"${CMAKE_SYSTEM_PROCESSOR}-pc-${CMAKE_SYSTEM_NAME_LOWER}-${CMAKE_C_COMPILER_ID_LOWER}")
 
-set(MONETDB_RELEASE "unreleased")
-
 # Change these variables between releases
 set(MONETDB_VERSION_MAJOR "11")
 set(MONETDB_VERSION "${MONETDB_VERSION_MAJOR}.34.0")
@@ -98,31 +91,19 @@ if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES 
        message(WARNING "Compiler potentially not (correctly) recognized")
 endif()
 
-if("${CMAKE_C_COMPILER_ID}" STREQUAL "Intel")
-       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -no-gcc") # Intel compiler hack
-elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
-       add_definitions(-D_GNU_SOURCE)
+# Set default build options
+if(NOT CMAKE_BUILD_TYPE)
+       message(STATUS "Setting build type to Debug as none was selected")
+       set(CMAKE_BUILD_TYPE Debug CACHE STRING "The type of build" FORCE)
 endif()
-add_definitions(-D_REENTRANT)
-
-# Set default build options
-if("${CMAKE_BUILD_TYPE}" MATCHES "^Debug|$")
+if(EXISTS "${CMAKE_SOURCE_DIR}/vertoo.data")
        set(DFT_STRICT "YES")
        set(DFT_ASSERT "YES")
-       set(DFT_DEBUG "YES")
-       set(DFT_OPTIMIZE "NO")
-       set(DFT_DEVELOPER "YES")
 else()
        set(DFT_STRICT "NO")
        set(DFT_ASSERT "NO")
-       set(DFT_DEBUG "NO")
-       set(DFT_OPTIMIZE "NO")
-       set(DFT_DEVELOPER "NO")
 endif()
 
-set(ENABLE_DEVELOPER "${DFT_DEVELOPER}" CACHE STRING "Build and install 
programs that are only useful for MonetDB development (default=yes for 
development sources)")
-set(ENABLE_TESTING "AUTO" CACHE STRING "Enable support for testing 
(default=auto)")
-
 # modules to use
 set(ENABLE_MAPI "YES" CACHE STRING "Enable MAPI (default=yes)")
 if(NOT ${ENABLE_MAPI} STREQUAL "NO")
@@ -182,9 +163,7 @@ if(NOT ${ENABLE_CONSOLE} STREQUAL "NO")
        set(HAVE_CONSOLE ON)
 endif()
 
-set(ENABLE_DEBUG "${DFT_DEBUG}" CACHE STRING "Enable full debugging 
(default=yes for development sources)")
 set(ENABLE_ASSERT "${DFT_ASSERT}" CACHE STRING "Enable assertions in the code 
(default=yes for development sources)")
-set(ENABLE_OPTIMIZE "${DFT_OPTIMIZE}" CACHE STRING "Enable extra optimization 
(default=no)")
 set(ENABLE_STRICT "${DFT_STRICT}" CACHE STRING "Enable strict compiler flags 
(default=yes for development sources)")
 set(ENABLE_SANITIZER "NO" CACHE STRING "Enable support for the GCC address 
sanitizer (default=no)")
 set(ENABLE_STATIC_ANALYSIS "NO" CACHE STRING "Configure for static code 
analysis (use only if you know what you are doing)")
@@ -201,6 +180,15 @@ else()
        message(FATAL_ERROR "PASSWORD_BACKEND invalid, choose one of MD5, SHA1, 
RIPEMD160, SHA224, SHA256, SHA384, SHA512")
 endif()
 
+if(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
+       add_compile_options(-no-gcc) # Intel compiler hack
+elseif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
+       add_compile_definitions(_GNU_SOURCE)
+endif()
+if(NOT MSVC)
+       add_compile_definitions(_REENTRANT)
+endif()
+
 opj_test_large_files(_LARGE_FILES)
 opj_test_large_files(_LARGEFILE_SOURCE)
 opj_test_large_files(_FILE_OFFSET_BITS)
@@ -221,7 +209,10 @@ check_c_source_compiles("
                return 0;
        }" HAVE___BUILTIN_ADD_OVERFLOW)
 
-set(FLEXIBLE_ARRAY_MEMBER ON) # We compile according to C99 standard onwards
+set(FLEXIBLE_ARRAY_MEMBER ON) # We compile according to C99 standard
+if(MSVC)
+       set(__attribute__(a) ON)
+endif()
 
 # 
https://github.com/Unidata/netcdf-c/commit/b432a527c4a38af45498691a44c5a88961b9c751
 message(STATUS "Test if char type is unsigned or not")
@@ -235,7 +226,7 @@ check_c_source_compiles("
                return 0;
        }" __CHAR_UNSIGNED__)
 if(__CHAR_UNSIGNED__)
-       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__CHAR_UNSIGNED__")
+       add_compile_definitions(__CHAR_UNSIGNED__)
 endif()
 
 message(STATUS "Test if __hidden macro is supported")
@@ -271,22 +262,105 @@ if(NOT NAN_CAN_BE_USED_AS_INITIALIZER)
        set(NAN_CANNOT_BE_USED_AS_INITIALIZER ON)
 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)
+       if(FOUND_VERSION)
+               set(INTEL_MATH_H_HACK ON)
+       endif()
+endif()
+
 # Check for compiler flags
-set(X_CFLAGS "${CMAKE_C_FLAGS}")
+if(NOT CMAKE_C_FLAGS)
+       set(CMAKE_C_FLAGS " ")
+endif()
+set(X_CFLAGS "")
+
+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()
+
+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 existing -Ox flags
+       removeCompilerFlag("/O[0-1sS]+[ ]?" "/Ox" "${CMAKE_C_FLAGS_DEBUG}" 
"Debug" CMAKE_C_FLAGS_DEBUG)
+       addCompilerFlag("/O2" "/O2" "${CMAKE_C_FLAGS_RELEASE}" 
CMAKE_C_FLAGS_RELEASE)
+else()
+       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()
+endif()
+
+if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
+       set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ") # hack
+       set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ")
+       removeCompilerFlag("-g[ ]" "-g" "${CMAKE_C_FLAGS_DEBUG}" "Debug" 
CMAKE_C_FLAGS_DEBUG)
+       removeCompilerFlag("-g[ ]" "-g" "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
"RelWithDebugInfo" CMAKE_C_FLAGS_RELWITHDEBINFO)
+       set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ") # hack
+       set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ")
+       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(${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()
+
+if(NOT MSVC AND 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()
 
 function(checkCompilerFlag 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)
-               set(X_CFLAGS "${X_CFLAGS} ${Flag}" PARENT_SCOPE)
-       else()
-               message(STATUS "Test for ${Flag} failed")
+       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}" STREQUAL "GNU")
+       if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
                checkCompilerFlag("-Werror")
                checkCompilerFlag("-Wall")
                checkCompilerFlag("-Wextra")
@@ -324,17 +398,17 @@ if(${ENABLE_STRICT} STREQUAL "YES")
                checkCompilerFlag("-Wrestrict")
                checkCompilerFlag("-Wnested-externs")
                checkCompilerFlag("-Wno-char-subscripts")
-               if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
+               if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
                        checkCompilerFlag("-Wunreachable-code")
                endif()
-       elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Intel")
+       elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
                if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10)
-                       link_libraries("-i_dynamic")
+                       add_link_options(-i_dynamic)
                else()
-                       link_libraries("-shared-intel")
+                       add_link_options(-shared-intel)
                endif()
                if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1 AND 
CMAKE_C_COMPILER_VERSION VERSION_LESS_EQUAL 11)
-                       link_libraries("-wd1418")
+                       add_link_options(-wd1418)
                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)
@@ -359,127 +433,25 @@ endif()
 
 if(NOT ${ENABLE_SANITIZER} STREQUAL "NO")
        if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
-               if(${ENABLE_SANITIZER} STREQUAL "YES")
-                       checkCompilerFlag("-fsanitize=address")
-                       checkCompilerFlag("-fsanitize=${ENABLE_SANITIZER}")
-                       if(NOT ${X_CFLAGS} MATCHES "*-fsanitize=*")
-                               message(FATAL_ERROR " Sanitizer not supported 
by this compiler")
-                       endif()
-                       checkCompilerFlag("-fno-omit-frame-pointer")
-               endif()
+               checkCompilerFlag("-fsanitize=address")
+               checkCompilerFlag("-fsanitize=${ENABLE_SANITIZER}")
+               checkCompilerFlag("-fno-omit-frame-pointer")
+               add_compile_definitions(NO_ATOMIC_INSTRUCTIONS)
        else()
                message(FATAL_ERROR " Sanitizer only supported with GCC")
        endif()
 endif()
 
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Intel") # see 
https://software.intel.com/en-us/forums/intel-c-compiler/topic/760979
-       if(EXISTS "${ROOT}/usr/include/math.h")
-               file(READ "${ROOT}/usr/include/math.h" TMPTXT)
-               string(FIND "${TMPTXT}" "_LIB_VERSION_TYPE" FOUND_VERSION)
-               if(FOUND_VERSION)
-                       set(INTEL_MATH_H_HACK ON)
-               endif()
-       endif()
-endif()
-
 message(STATUS "Test if compiler supports -Wl,-Bsymbolic-functions flag")
-set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Wl,-Bsymbolic-functions")
+cmake_push_check_state()
+add_link_options(-Wl,-Bsymbolic-functions)
 check_c_compiler_flag("" HAVE_WL_BSYMBOLIC_FUNCTIONS)
 if(NOT HAVE_WL_BSYMBOLIC_FUNCTIONS)
-       set(CMAKE_REQUIRED_FLAGS "${PREV_CMAKE_REQUIRED_FLAGS}")
-endif()
-
-if(${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
-       set(NO_UNDEFINED "-no-undefined")
-endif()
-if(MSVC OR ${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
-       set(WIN32 ON)
-endif()
-if(MSVC)
-       set(__attribute__(a) ON)
-endif()
-
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to