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