Changeset: 675d87c80010 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=675d87c80010
Modified Files:
CMakeLists.txt
cmake/monetdb_config.h.in
Branch: cmake-fun
Log Message:
Cleanup, only crypto library is required from OpenSSL, check C program test
early before custom compiler flags are added.
diffs (truncated from 559 to 300 lines):
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,7 +9,6 @@ set(CMAKE_C_STANDARD 99)
set(PACKAGE "MonetDB" CACHE STRING "")
find_package(PkgConfig)
-find_package(BISON)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" CACHE INTERNAL "Location of
custom CMake modules.")
include(GNUInstallDirs REQUIRED)
@@ -19,11 +18,11 @@ include(CheckIncludeFile REQUIRED)
include(CheckIncludeFiles REQUIRED)
include(CheckSymbolExists REQUIRED)
include(CheckTypeSize REQUIRED)
+include(CheckStructHasMember REQUIRED)
include(FindIconv REQUIRED)
include(TestLargeFiles REQUIRED)
include(CheckCCompilerFlag REQUIRED)
include(TestBigEndian REQUIRED)
-include(FindBZip2)
cmake_policy(SET CMP0075 NEW)
@@ -81,6 +80,10 @@ elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git"
endif()
endif()
+if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "^GNU|Intel|Clang|MSVC|AppleClang$")
+ 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")
@@ -141,8 +144,6 @@ if(${ENABLE_MONETDB5} STREQUAL "NO")
endif()
endif()
-set(ENABLE_FITS "AUTO" CACHE STRING "Enable support for FITS (default=auto)")
-set(ENABLE_NETCDF "AUTO" CACHE STRING "Enable support for netcdf
(default=auto)")
set(ENABLE_LIDAR "AUTO" CACHE STRING "Enable support for LiDAR data
(default=auto)")
set(ENABLE_SHP "AUTO" CACHE STRING "Enable support for ESRI Shapefiles
(default=auto)")
if(${ENABLE_GEOM} STREQUAL "NO")
@@ -163,7 +164,6 @@ if(NOT ${ENABLE_CONSOLE} STREQUAL "NO")
set(HAVE_CONSOLE ON)
endif()
-set(ENABLE_INT128 "AUTO" CACHE STRING "Enable support for 128-bit integers
(default=auto)")
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)")
@@ -195,8 +195,70 @@ opj_test_large_files(_LARGE_FILES)
opj_test_large_files(_LARGEFILE_SOURCE)
opj_test_large_files(_FILE_OFFSET_BITS)
-if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "^GNU|Intel|Clang|MSVC|AppleClang$")
- message(WARNING "Compiler potentially not (correctly) recognized")
+message(STATUS "Test if struct tm has tm_zone field")
+check_struct_has_member("struct tm" tm_zone "time.h" HAVE_STRUCT_TM_TM_ZONE
LANGUAGE C)
+
+message(STATUS "Test for __builtin_add_overflow")
+check_c_source_compiles("
+ #include <stdio.h>
+ #include <stdlib.h>
+
+ int main(int argc, char **argv) {
+ __int128 a=(__int128)atoll(getenv(\"a\"))<<64,
b=(__int128)atoll(getenv(\"b\"))<<64, c;
+ (void) argc;(void) argv;
+ if (!__builtin_mul_overflow(a, b, &c))
+ printf(\"%lld %lld\",(long long)(c>>64), (long long)c);
+ return 0;
+ }" HAVE___BUILTIN_ADD_OVERFLOW)
+
+set(FLEXIBLE_ARRAY_MEMBER ON) # We compile according to C99 standard onwards
+
+#
https://github.com/Unidata/netcdf-c/commit/b432a527c4a38af45498691a44c5a88961b9c751
+message(STATUS "Test if char type is unsigned or not")
+check_c_source_compiles("
+ #include <stdlib.h>
+
+ int main(int argc, char **argv) {
+ char error_if_char_is_signed[((char)-1) < 0 ? -1 : 1];
+ (void) argc; (void) argv; (void) error_if_char_is_signed;
+ error_if_char_is_signed[0] = 0;
+ return 0;
+ }" __CHAR_UNSIGNED__)
+if(__CHAR_UNSIGNED__)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__CHAR_UNSIGNED__")
+endif()
+
+message(STATUS "Test if __hidden macro is supported")
+check_c_source_compiles("
+ #include <stdlib.h>
+
+ __hidden void test(int a);
+ void test(int a) { (void)a; }
+
+ int main(int argc, char **argv) {
+ (void) argc; (void) argv;
+ test(1);
+ return 0;
+ }" HAVE_HIDDEN)
+if(NOT HAVE_HIDDEN)
+ set(__hidden ON)
+endif()
+
+message(STATUS "Test if compiler can use NAN as an initializer")
+check_c_source_compiles("
+ #include <math.h>
+
+ extern const float f;
+ extern const double d;
+ const float f = NAN;
+ const double d = NAN;
+
+ int main(int argc, char **argv) {
+ (void) argc; (void) argv;
+ return 0;
+ }" NAN_CAN_BE_USED_AS_INITIALIZER)
+if(NOT NAN_CAN_BE_USED_AS_INITIALIZER)
+ set(NAN_CANNOT_BE_USED_AS_INITIALIZER ON)
endif()
# Check for compiler flags
@@ -594,6 +656,7 @@ if(NOT ENABLE_TESTING STREQUAL "NO" AND
set(ENABLE_TESTING "NO")
endif()
+find_package(BISON)
if(BISON_FOUND)
if(BISON_VERSION VERSION_LESS_EQUAL 2.4.3)
string(FIND "${CMAKE_C_FLAGS}" "-Wundef" FOUND_WDEF)
@@ -645,14 +708,14 @@ set(SO_PREFIX ${OS_SOPREF})
test_big_endian(WORDS_BIGENDIAN)
if(APPLE)
set(AC_APPLE_UNIVERSAL_BUILD ON)
- set(_DARWIN_USE_64_BIT_INODE ON)
endif()
# checks for libraries
-set(WITH_BZ2 "AUTO" CACHE STRING "Include bz2 support (default=auto)") # Check
with HAVE_BZLIB
+set(WITH_BZ2 "AUTO" CACHE STRING "Include bz2 support (default=auto)") # Check
with BZip2_FOUND
if(NOT ${WITH_BZ2} STREQUAL "NO")
+ include(FindBZip2)
+
if(BZip2_FOUND)
- set(HAVE_BZLIB ON)
message(STATUS "bz2 library found")
elseif(${WITH_BZ2} STREQUAL "YES")
message(FATAL_ERROR "bz2 library not found")
@@ -660,9 +723,6 @@ if(NOT ${WITH_BZ2} STREQUAL "NO")
message(WARN " bz2 library not found")
endif()
endif()
-if(HAVE_BZLIB)
- set(HAVE_LIBBZ2 ON)
-endif()
set(WITH_SNAPPY "AUTO" CACHE STRING "Include snappy support (default=auto)") #
Check with HAVE_LIBSNAPPY
if(NOT ${WITH_SNAPPY} STREQUAL "NO")
@@ -754,7 +814,7 @@ if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Wi
if(HAVE_PTHREAD_H)
set(HAVE_LIBPTHREAD ON)
else()
- message(FATAL_ERROR "MonetDB requires libpthread (try
-DWITH_PTHREAD")
+ message(FATAL_ERROR "MonetDB requires libpthread on UNIX
systems")
endif()
endif()
@@ -803,9 +863,7 @@ if(NOT ${WITH_READLINE} STREQUAL "NO")
int main(int argc, char **argv) {
rl_completion_func_t *func = NULL;
- (void) argc;
- (void) argv;
- (void) func;
+ (void) argc; (void) argv; (void) func;
return 0;
}
" HAVE_LIBREADLINE)
@@ -841,14 +899,13 @@ if(Iconv_FOUND)
check_c_source_compiles("
#include <iconv.h>
- int main(int argc, char** argv){
- (void) argc;
- (void) argv;
+ int main(int argc, char **argv) {
iconv_t conv = 0;
const char* in = 0;
size_t ilen = 0;
char* out = 0;
size_t olen = 0;
+ (void) argc; (void) argv;
iconv(conv, &in, &ilen, &out, &olen);
return 0;
}
@@ -861,13 +918,10 @@ if(Iconv_FOUND)
endif()
# UUID
-set(WITH_UUID "YES" CACHE STRING "Include UUID support (default=yes)") # Check
with HAVE_UUID_LIB
+set(WITH_UUID "YES" CACHE STRING "Include UUID support (default=yes)") # Check
with HAVE_UUID
if(NOT ${WITH_UUID} STREQUAL "NO")
set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};uuid")
- check_symbol_exists("uuid_generate" "uuid/uuid.h" HAVE_UUID_LIB)
- if(HAVE_UUID_LIB)
- set(HAVE_UUID ON)
- endif()
+ check_symbol_exists("uuid_generate" "uuid/uuid.h" HAVE_UUID)
set(CMAKE_REQUIRED_LIBRARIES "${PREV_CMAKE_REQUIRED_LIBRARIES}")
endif()
@@ -878,34 +932,13 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin
set(HAVE_COMMONCRYPTO ON)
set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};crypto") #
TODO test this
- check_symbol_exists("CC_MD5_Update" "CommonCrypto/CommonDigest.h"
HAVE_MD5_UPDATE_FUNC)
- if(HAVE_MD5_UPDATE_FUNC)
- set(HAVE_MD5_UPDATE ON)
- endif()
- check_symbol_exists("CC_RIPEMD160_Update" "CommonCrypto/CommonDigest.h"
HAVE_RIPEMD160_UPDATE_FUNC)
- if(HAVE_RIPEMD160_UPDATE_FUNC)
- set(HAVE_RIPEMD160_UPDATE ON)
- endif()
- check_symbol_exists("CC_SHA1_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA1_UPDATE_FUNC)
- if(HAVE_SHA1_UPDATE_FUNC)
- set(HAVE_SHA1_UPDATE ON)
- endif()
- check_symbol_exists("CC_SHA224_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA224_UPDATE_FUNC)
- if(HAVE_SHA224_UPDATE_FUNC)
- set(HAVE_SHA224_UPDATE ON)
- endif()
- check_symbol_exists("CC_SHA256_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA256_UPDATE_FUNC)
- if(HAVE_SHA256_UPDATE_FUNC)
- set(HAVE_SHA256_UPDATE ON)
- endif()
- check_symbol_exists("CC_SHA384_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA384_UPDATE_FUNC)
- if(HAVE_SHA384_UPDATE_FUNC)
- set(HAVE_SHA384_UPDATE ON)
- endif()
- check_symbol_exists("HAVE_SHA512_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA512_UPDATE_FUNC)
- if(HAVE_SHA512_UPDATE_FUNC)
- set(HAVE_SHA512_UPDATE ON)
- endif()
+ check_symbol_exists("CC_MD5_Update" "CommonCrypto/CommonDigest.h"
HAVE_MD5_UPDATE)
+ check_symbol_exists("CC_RIPEMD160_Update" "CommonCrypto/CommonDigest.h"
HAVE_RIPEMD160_UPDATE)
+ check_symbol_exists("CC_SHA1_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA1_UPDATE)
+ check_symbol_exists("CC_SHA224_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA224_UPDATE)
+ check_symbol_exists("CC_SHA256_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA256_UPDATE)
+ check_symbol_exists("CC_SHA384_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA384_UPDATE)
+ check_symbol_exists("HAVE_SHA512_Update" "CommonCrypto/CommonDigest.h"
HAVE_SHA512_UPDATE)
else()
set(WITH_OPENSSL "YES" CACHE STRING "Include OpenSSL support
(default=yes)") # Check with OPENSSL_FOUND
if(NOT ${WITH_OPENSSL} STREQUAL "NO")
@@ -913,41 +946,22 @@ else()
if(OPENSSL_FOUND)
message(STATUS "openssl library found")
+ set(HAVE_OPENSSL ON)
set(OPENSSL_INCS "${OPENSSL_INCLUDE_DIR}")
- set(OPENSSL_LIBS
"${OPENSSL_SSL_LIBRARY};${OPENSSL_CRYPTO_LIBRARY}")
+ set(OPENSSL_LIBS "${OPENSSL_CRYPTO_LIBRARY}")
set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCS}")
- set(CMAKE_REQUIRED_LIBRARIES
"${CMAKE_REQUIRED_LIBRARIES};ssl;crypto")
+ set(CMAKE_REQUIRED_LIBRARIES
"${CMAKE_REQUIRED_LIBRARIES};crypto")
- check_symbol_exists("MD5_Update" "openssl/md5.h"
HAVE_MD5_UPDATE_FUNC)
- if(HAVE_MD5_UPDATE_FUNC)
- set(HAVE_MD5_UPDATE ON)
- endif()
- check_symbol_exists("RIPEMD160_Update"
"openssl/ripemd.h" HAVE_RIPEMD160_UPDATE_FUNC)
- if(HAVE_RIPEMD160_UPDATE_FUNC)
- set(HAVE_RIPEMD160_UPDATE ON)
- endif()
- check_symbol_exists("SHA1_Update" "openssl/sha.h"
HAVE_SHA1_UPDATE_FUNC)
- if(HAVE_SHA1_UPDATE_FUNC)
- set(HAVE_SHA1_UPDATE ON)
- endif()
- check_symbol_exists("SHA224_Update" "openssl/sha.h"
HAVE_SHA224_UPDATE_FUNC)
- if(HAVE_SHA224_UPDATE_FUNC)
- set(HAVE_SHA224_UPDATE ON)
- endif()
- check_symbol_exists("SHA256_Update" "openssl/sha.h"
HAVE_SHA256_UPDATE_FUNC)
- if(HAVE_SHA256_UPDATE_FUNC)
- set(HAVE_SHA256_UPDATE ON)
- endif()
- check_symbol_exists("SHA384_Update" "openssl/sha.h"
HAVE_SHA384_UPDATE_FUNC)
- if(HAVE_SHA384_UPDATE_FUNC)
- set(HAVE_SHA384_UPDATE ON)
- endif()
- check_symbol_exists("SHA512_Update" "openssl/sha.h"
HAVE_SHA512_UPDATE_FUNC)
- if(HAVE_SHA512_UPDATE_FUNC)
- set(HAVE_SHA512_UPDATE ON)
- endif()
+ check_symbol_exists("MD5_Update" "openssl/md5.h"
HAVE_MD5_UPDATE)
+ check_symbol_exists("RIPEMD160_Update"
"openssl/ripemd.h" HAVE_RIPEMD160_UPDATE)
+ check_symbol_exists("SHA1_Update" "openssl/sha.h"
HAVE_SHA1_UPDATE)
+ check_symbol_exists("SHA224_Update" "openssl/sha.h"
HAVE_SHA224_UPDATE)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list