Changeset: cf1d93a09342 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cf1d93a09342
Modified Files:
        CMakeLists.txt
        clients/CMakeLists.txt
        clients/mapiclient/CMakeLists.txt
        clients/odbc/CMakeLists.txt
        cmake/FindExtraLibraries.cmake
        geom/monetdb5/CMakeLists.txt
        monetdb5/extras/rapi/CMakeLists.txt
        monetdb5/modules/kernel/mmath.c
        sql/backends/monet5/UDF/pyapi3/CMakeLists.txt
        sql/backends/monet5/vaults/bam/CMakeLists.txt
        sql/backends/monet5/vaults/fits/CMakeLists.txt
        sql/backends/monet5/vaults/lidar/CMakeLists.txt
        sql/backends/monet5/vaults/netcdf/CMakeLists.txt
        sql/backends/monet5/vaults/shp/CMakeLists.txt
Branch: cmake-fun
Log Message:

Make the codebase aware of the user enabling/disabling an extension after the 
first run of cmake.


diffs (truncated from 592 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -175,8 +175,10 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "Inte
        if(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(NOT FOUND_VERSION)
-                       set(INTEL_MATH_H_HACK ON CACHE INTERNAL "must use intel 
math.h hack")
+               if(FOUND_VERSION)
+                       set(INTEL_MATH_H_HACK OFF CACHE INTERNAL "must use 
intel math.h hack" FORCE)
+               else()
+                       set(INTEL_MATH_H_HACK ON CACHE INTERNAL "must use intel 
math.h hack" FORCE)
                endif()
        endif()
        set(NAN_CANNOT_BE_USED_AS_INITIALIZER ON CACHE INTERNAL "NaN cannot be 
used as an initializer") # This hack is only required by the Intel compiler
@@ -303,10 +305,10 @@ if(Python3_Interpreter_FOUND)
                        string(LENGTH "${PYTHON3_LIBDIR}" 
PYTHON3_LIBDIR_PREFIX_LENGTH)
                        math(EXPR LEN1 "${LIBDIR_LENGTH}+1") # add the / 
separator
                        string(SUBSTRING "${PYTHON3_LIBDIR}" ${LEN1} -1 
PYTHON_LIBDIR) # remove the prefix
+                       set(HAVE_PYTHON3 ON CACHE INTERNAL "python3 is 
available")
                else()
                        message(WARNING "Could not determine MonetDB Python 
testing files instalation directory")
                endif()
-               set(HAVE_PYTHON3 ON CACHE INTERNAL "python3 is available")
        endif()
 endif()
 
@@ -404,6 +406,7 @@ endif()
 if(NOT ${WITH_REGEX} MATCHES "^AUTO|PCRE|POSIX$")
        message(FATAL_ERROR "WITH_REGEX argument must be either AUTO, PCRE or 
POSIX")
 endif()
+set(HAVE_LIBPCRE OFF CACHE INTERNAL "pcre library is available" FORCE) # 
disable before the test
 if(NOT ${WITH_REGEX} STREQUAL "POSIX")
        include(FindPCRE)
 
@@ -418,14 +421,14 @@ if(NOT ${WITH_REGEX} STREQUAL "POSIX")
                else()
                        cmake_push_check_state()
                        set(CMAKE_REQUIRED_INCLUDES 
"${CMAKE_REQUIRED_INCLUDES};${PCRE_INCLUDE_DIR}")
-                       check_symbol_exists("PCRE_CONFIG_UTF8" "pcre.h" 
HAVE_LIBPCRE) #Test for UTF-8 support on PCRE library (PCRE_CONFIG_UTF8 is a 
macro)
+                       check_symbol_exists("PCRE_CONFIG_UTF8" "pcre.h" 
HAVE_PCREUTF8) #Test for UTF-8 support on PCRE library (PCRE_CONFIG_UTF8 is a 
macro)
                        cmake_pop_check_state()
-                       if(NOT HAVE_LIBPCRE)
-                               if(${WITH_REGEX} STREQUAL "PCRE")
-                                       message(FATAL_ERROR "PCRE library found 
but no UTF-8 support")
-                               else()
-                                       message(STATUS "PCRE library found but 
no UTF-8 support")
-                               endif()
+                       if(HAVE_PCREUTF8)
+                               set(HAVE_LIBPCRE ON CACHE INTERNAL "pcre 
library is available" FORCE)
+                       elseif(${WITH_REGEX} STREQUAL "PCRE")
+                               message(FATAL_ERROR "PCRE library found but no 
UTF-8 support")
+                       else()
+                               message(STATUS "PCRE library found but no UTF-8 
support")
                        endif()
                endif()
        elseif(${WITH_REGEX} STREQUAL "PCRE")
@@ -435,8 +438,8 @@ if(NOT ${WITH_REGEX} STREQUAL "POSIX")
        endif()
 endif()
 if(NOT HAVE_LIBPCRE)
-       set(PCRE_INCLUDE_DIR "" CACHE INTERNAL "pcre include directory")
-       set(PCRE_LIBRARIES "" CACHE INTERNAL "pcre libraries to link")
+       set(PCRE_INCLUDE_DIR "" CACHE INTERNAL "pcre include directory" FORCE)
+       set(PCRE_LIBRARIES "" CACHE INTERNAL "pcre libraries to link" FORCE)
        check_symbol_exists("regcomp" "regex.h" HAVE_POSIX_REGEX)
 endif()
 if(NOT HAVE_LIBPCRE AND NOT HAVE_POSIX_REGEX)
@@ -488,12 +491,13 @@ check_type_size(int SIZEOF_INT LANGUAGE 
 check_type_size(long SIZEOF_LONG LANGUAGE C)
 set(SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
 check_type_size(wchar_t SIZEOF_WCHAR_T LANGUAGE C)
+set(HAVE_HGE OFF CACHE INTERNAL "Huge integers are available" FORCE)
 if(NOT ${ENABLE_INT128} STREQUAL "NO")
        check_type_size(__int128 SIZEOF___INT128 LANGUAGE C)
        check_type_size(__int128_t SIZEOF___INT128_T LANGUAGE C)
        check_type_size(__uint128_t SIZEOF___UINT128_T LANGUAGE C)
        if(HAVE_SIZEOF___INT128 OR HAVE_SIZEOF___INT128_T OR 
HAVE_SIZEOF___UINT128_T)
-               set(HAVE_HGE ON CACHE INTERNAL "Huge integers are available")
+               set(HAVE_HGE ON CACHE INTERNAL "Huge integers are available" 
FORCE)
        elseif(${ENABLE_INT128} STREQUAL "YES")
                message(FATAL_ERROR "128-bit integers not supported by this 
compiler")
        else()
@@ -519,8 +523,9 @@ if(${ENABLE_GDK} STREQUAL "NO")
        elseif(${ENABLE_MONETDB5} STREQUAL "AUTO")
                set(ENABLE_MONETDB5 "NO" CACHE STRING "MonetDB5 requires GDK" 
FORCE)
        endif()
+       set(HAVE_GDK OFF CACHE INTERNAL "MonetDB5 is available" FORCE)
 else()
-       set(HAVE_GDK ON CACHE INTERNAL "GDK layer is available")
+       set(HAVE_GDK ON CACHE INTERNAL "GDK layer is available" FORCE)
 endif()
 if(${ENABLE_MONETDB5} STREQUAL "NO")
        if(${ENABLE_SQL} STREQUAL "YES")
@@ -528,26 +533,37 @@ if(${ENABLE_MONETDB5} STREQUAL "NO")
        elseif(${ENABLE_SQL} STREQUAL "AUTO")
                set(ENABLE_SQL "NO" CACHE STRING "MonetDB/SQL requires 
MonetDB5" FORCE)
        endif()
+       set(HAVE_MONETDB5 OFF CACHE INTERNAL "MonetDB5 is available" FORCE)
 else()
-       set(HAVE_MONETDB5 YES)
+       set(HAVE_MONETDB5 ON CACHE INTERNAL "MonetDB5 is available" FORCE)
 endif()
-if(NOT ${ENABLE_SQL} STREQUAL "NO") # The SQL module requires the monetdb5 
module, so monetdb5 should compile first
-       set(HAVE_SQL ON CACHE INTERNAL "MonetDB/SQL is available")
+if(${ENABLE_SQL} STREQUAL "YES") # The SQL module requires the monetdb5 
module, so monetdb5 should compile first
+       set(HAVE_SQL ON CACHE INTERNAL "MonetDB/SQL is available" FORCE)
+else()
+       set(HAVE_SQL OFF CACHE INTERNAL "MonetDB/SQL is available" FORCE)
 endif()
-if(NOT ${ENABLE_EMBEDDED} STREQUAL "NO")
-       set(HAVE_EMBEDDED ON CACHE INTERNAL "Embedded MonetDB is enabled")
+if(${ENABLE_EMBEDDED} STREQUAL "YES")
+       set(HAVE_EMBEDDED ON CACHE INTERNAL "Embedded MonetDB is enabled" FORCE)
+else()
+       set(HAVE_EMBEDDED OFF CACHE INTERNAL "Embedded MonetDB is enabled" 
FORCE)
 endif()
-if(NOT ${ENABLE_CONSOLE} STREQUAL "NO")
-       set(HAVE_CONSOLE ON CACHE INTERNAL "Direct console on the server is 
available")
+if(${ENABLE_CONSOLE} STREQUAL "YES")
+       set(HAVE_CONSOLE ON CACHE INTERNAL "Direct console on the server is 
available" FORCE)
+else()
+       set(HAVE_CONSOLE OFF CACHE INTERNAL "Direct console on the server is 
available" FORCE)
 endif()
-if(NOT ${ENABLE_STATIC_ANALYSIS} STREQUAL "NO")
-       set(STATIC_CODE_ANALYSIS ON CACHE INTERNAL "Static code analysis is 
available")
+if(${ENABLE_STATIC_ANALYSIS} STREQUAL "YES")
+       set(STATIC_CODE_ANALYSIS ON CACHE INTERNAL "Static code analysis is 
available" FORCE)
+else()
+       set(STATIC_CODE_ANALYSIS OFF CACHE INTERNAL "Static code analysis is 
available" FORCE)
 endif()
 if("${ENABLE_TESTING}" STREQUAL "YES" AND NOT HAVE_PYTHON3)
        message(FATAL_ERROR "A valid Python 3 interpreter is required for 
MonetDB testing tools")
 endif()
-if(NOT "${ENABLE_TESTING}" STREQUAL "NO" AND HAVE_PYTHON3)
-       set(HAVE_TESTING ON CACHE INTERNAL "Test suite is enabled")
+if("${ENABLE_TESTING}" STREQUAL "YES" AND HAVE_PYTHON3)
+       set(HAVE_TESTING ON CACHE INTERNAL "Test suite is enabled" FORCE)
+else()
+       set(HAVE_TESTING OFF CACHE INTERNAL "Test suite is enabled" FORCE)
 endif()
 
 # Very Important, check for compiler flags after all libraries checks, 
otherwise extra compiler flags might break the
diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt
--- a/clients/CMakeLists.txt
+++ b/clients/CMakeLists.txt
@@ -6,11 +6,13 @@
 # Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
 #]]
 
-if(NOT ${ENABLE_MAPI} STREQUAL "NO")
-       set(HAVE_MAPI ON CACHE INTERNAL "mapi extension is available")
+if(${ENABLE_MAPI} STREQUAL "YES")
+       set(HAVE_MAPI ON CACHE INTERNAL "mapi extension is available" FORCE)
        add_subdirectory(mapilib)
        add_subdirectory(mapiclient)
        add_subdirectory(examples)
+else()
+       set(HAVE_MAPI OFF CACHE INTERNAL "mapi extension is available" FORCE)
 endif()
 add_subdirectory(odbc)
 if(WIN32)
diff --git a/clients/mapiclient/CMakeLists.txt 
b/clients/mapiclient/CMakeLists.txt
--- a/clients/mapiclient/CMakeLists.txt
+++ b/clients/mapiclient/CMakeLists.txt
@@ -7,7 +7,8 @@
 #]]
 
 # Readline libraries
-set(READLINE_LIBRARIES "")
+set(READLINE_LIBRARIES )
+set(HAVE_LIBREADLINE OFF CACHE INTERNAL "readline library is available" FORCE)
 if(NOT ${WITH_READLINE} STREQUAL "NO")
        cmake_push_check_state()
        set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};readline")
@@ -46,7 +47,7 @@ if(NOT ${WITH_READLINE} STREQUAL "NO")
                                        return 0;
                                }" HAVE_RL_COMPLETION_FUNC_T)
                        if(HAVE_RL_COMPLETION_FUNC_T)
-                               set(HAVE_LIBREADLINE ON CACHE INTERNAL 
"readline library is available")
+                               set(HAVE_LIBREADLINE ON CACHE INTERNAL 
"readline library is available" FORCE)
                        elseif(${WITH_READLINE} STREQUAL "YES")
                                message(FATAL_ERROR "readline/readline.h does 
not contain rl_completion_func_t, is it GNU readline?")
                        else()
diff --git a/clients/odbc/CMakeLists.txt b/clients/odbc/CMakeLists.txt
--- a/clients/odbc/CMakeLists.txt
+++ b/clients/odbc/CMakeLists.txt
@@ -6,6 +6,7 @@
 # Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
 #]]
 
+set(HAVE_ODBC OFF CACHE INTERNAL "odbc extension is available" FORCE)
 if(NOT ${ENABLE_ODBC} STREQUAL "NO")
        if(WIN32)
                set(ODBCINST_INCLUDE "") # odbcinst.h included by the Windows 
SDK
@@ -34,7 +35,7 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO")
                if(WIN32) # Windows uses different libraries for the ODBC 
driver, and they are included in the Windows SDK
                        set(ODBCINST_LIBRARIES 
"odbccp32;user32;legacy_stdio_definitions")
                        set(ODBC_LIBRARIES "odbc32")
-                       set(HAVE_ODBC ON CACHE INTERNAL "odbc extension is 
available")
+                       set(HAVE_ODBC ON CACHE INTERNAL "odbc extension is 
available" FORCE)
                else()
                        find_library(ODBCINST_LIBRARY odbcinst)
                        if(ODBCINST_LIBRARY)
@@ -46,7 +47,7 @@ if(NOT ${ENABLE_ODBC} STREQUAL "NO")
                        endif()
 
                        if(ODBCINST_LIBRARY AND ODBC_LIBRARY)
-                               set(HAVE_ODBC ON CACHE INTERNAL "odbc extension 
is available")
+                               set(HAVE_ODBC ON CACHE INTERNAL "odbc extension 
is available" FORCE)
                        elseif(${ENABLE_ODBC} STREQUAL "YES")
                                message(FATAL_ERROR "There are unixODBC 
libraries missing")
                        else()
diff --git a/cmake/FindExtraLibraries.cmake b/cmake/FindExtraLibraries.cmake
--- a/cmake/FindExtraLibraries.cmake
+++ b/cmake/FindExtraLibraries.cmake
@@ -12,56 +12,60 @@ if(NOT ${WITH_BZ2} STREQUAL "NO")
        include(FindBZip2)
 
        if(BZip2_FOUND)
-               set(HAVE_LIBBZ2 ON CACHE INTERNAL "bzip2 library is available")
+               set(HAVE_LIBBZ2 ON CACHE INTERNAL "bzip2 library is available" 
FORCE)
        elseif(${WITH_BZ2} STREQUAL "YES")
                message(FATAL_ERROR "bzip2 library not found")
        endif()
 endif()
 if(NOT BZip2_FOUND)
-       set(BZIP2_INCLUDE_DIR "" CACHE INTERNAL "bzip2 include directories 
path")
-       set(BZIP2_LIBRARIES "" CACHE INTERNAL "bzip2 libraries to link")
+       set(HAVE_LIBBZ2 OFF CACHE INTERNAL "bzip2 library is available" FORCE)
+       set(BZIP2_INCLUDE_DIR "" CACHE INTERNAL "bzip2 include directories 
path" FORCE)
+       set(BZIP2_LIBRARIES "" CACHE INTERNAL "bzip2 libraries to link" FORCE)
 endif()
 
 if(NOT ${WITH_CURL} STREQUAL "NO")
        include(FindCURL)
 
        if(CURL_FOUND)
-               set(HAVE_CURL ON CACHE INTERNAL "curl library is available")
+               set(HAVE_CURL ON CACHE INTERNAL "curl library is available" 
FORCE)
        elseif(${WITH_CURL} STREQUAL "YES")
                message(FATAL_ERROR "curl library not found")
        endif()
 endif()
 if(NOT CURL_FOUND)
-       set(CURL_INCLUDE_DIR "" CACHE INTERNAL "curl include directories path")
-       set(CURL_LIBRARIES "" CACHE INTERNAL "curl libraries to link")
+       set(HAVE_CURL OFF CACHE INTERNAL "curl library is available" FORCE)
+       set(CURL_INCLUDE_DIR "" CACHE INTERNAL "curl include directories path" 
FORCE)
+       set(CURL_LIBRARIES "" CACHE INTERNAL "curl libraries to link" FORCE)
 endif()
 
 if(NOT ${WITH_LIBLZMA} STREQUAL "NO")
        include(FindLibLZMA)
 
        if(LIBLZMA_FOUND)
-               set(HAVE_LIBLZMA ON CACHE INTERNAL "liblzma library is 
available")
+               set(HAVE_LIBLZMA ON CACHE INTERNAL "liblzma library is 
available" FORCE)
        elseif(${WITH_LIBLZMA} STREQUAL "YES")
                message(FATAL_ERROR "liblzma library not found")
        endif()
 endif()
 if(NOT LIBLZMA_FOUND)
-       set(LIBLZMA_INCLUDE_DIR "" CACHE INTERNAL "liblzma include directories 
path")
-       set(LIBLZMA_LIBRARIES "" CACHE INTERNAL "liblzma libraries to link")
+       set(HAVE_LIBLZMA OFF CACHE INTERNAL "liblzma library is available" 
FORCE)
+       set(LIBLZMA_INCLUDE_DIR "" CACHE INTERNAL "liblzma include directories 
path" FORCE)
+       set(LIBLZMA_LIBRARIES "" CACHE INTERNAL "liblzma libraries to link" 
FORCE)
 endif()
 
 if(NOT ${WITH_LIBXML2} STREQUAL "NO")
        include(FindLibXml2)
 
        if(LIBXML2_FOUND)
-               set(HAVE_LIBXML ON CACHE INTERNAL "libxml2 library is 
available")
+               set(HAVE_LIBXML ON CACHE INTERNAL "libxml2 library is 
available" FORCE)
        elseif(${WITH_LIBXML2} STREQUAL "YES")
                message(FATAL_ERROR "libxml2 library not found")
        endif()
 endif()
 if(NOT LIBXML2_FOUND)
-       set(LIBXML2_INCLUDE_DIR "" CACHE INTERNAL "libxml2 include directories 
path")
-       set(LIBXML2_LIBRARIES "" CACHE INTERNAL "libxml2 libraries to link")
+       set(HAVE_LIBXML OFF CACHE INTERNAL "libxml2 library is available" FORCE)
+       set(LIBXML2_INCLUDE_DIR "" CACHE INTERNAL "libxml2 include directories 
path" FORCE)
+       set(LIBXML2_LIBRARIES "" CACHE INTERNAL "libxml2 libraries to link" 
FORCE)
 endif()
 
 if(NOT ${WITH_LZ4} STREQUAL "NO")
@@ -70,89 +74,96 @@ if(NOT ${WITH_LZ4} STREQUAL "NO")
        if(LZ4_FOUND)
                set(LZ4_MINIMUM_VERSION "1.8.0")
                if(LZ4_VERSION VERSION_LESS "${LZ4_MINIMUM_VERSION}")
+                       set(LZ4_FOUND OFF)
                        if(${WITH_LZ4} STREQUAL "YES")
                                message(FATAL_ERROR "lz4 library found, but the 
version is too old: ${LZ4_VERSION} < ${LZ4_MINIMUM_VERSION}")
                        else()
                                message(STATUS "lz4 library found, but the 
version is too old: ${LZ4_VERSION} < ${LZ4_MINIMUM_VERSION}")
                        endif()
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to