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

Reply via email to