Changeset: ec759a9b3068 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec759a9b3068 Added Files: ctest/cmake/set-dir-vars.cmake ctest/cmake/test_cmake_var.c.in Modified Files: CMakeLists.txt clients/odbc/samples/CMakeLists.txt cmake/monetdb-defines.cmake ctest/cmake/CMakeLists.txt ctest/cmake/detect-netcdf.cmake ctest/cmake/detect-readline.cmake monetdb_config.h.in monetdb_config_win32.h.in Branch: mbedded Log Message:
reorganize code, add tests and fix bugs diffs (truncated from 609 to 300 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,11 +36,9 @@ include(CheckCSourceCompiles REQUIRED) include(CheckIncludeFile REQUIRED) include(CMakePushCheckState REQUIRED) include(CheckStructHasMember REQUIRED) - include(CheckSymbolExists REQUIRED) include(CheckFunctionExists REQUIRED) include(CheckTypeSize REQUIRED) - include(TestBigEndian REQUIRED) # Include MonetDB specific functions @@ -57,12 +55,6 @@ endif() monetdb_configure_defines() -# Likely unused, because it contained typo's -if(HAVE_PTHREAD_H) - check_function_exists("pthread_kill" HAVE_PTHREAD_KILL) - check_function_exists("pthread_sigmask" HAVE_PTHREAD_SIGMASK) -endif() - # On C99, but we have to calculate the size check_type_size(size_t SIZEOF_SIZE_T LANGUAGE C) set(SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) @@ -76,71 +68,7 @@ check_type_size(socklen_t HAVE_SOCKLEN_T set(CMAKE_REQUIRED_INCLUDES "/usr/include") -# Set variables to define C macro's -# These are related to the detected packages -# These names are legacy. When the code is changed to use the cmake -# variables, they can be removed. -set(HAVE_ICONV ${Iconv_FOUND}) -set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT}) -set(HAVE_LIBPCRE ${PCRE_FOUND}) -set(HAVE_OPENSSL ${OPENSSL_FOUND}) -set(HAVE_COMMONCRYPTO ${COMMONCRYPTO_FOUND}) -set(HAVE_LIBBZ2 ${BZIP2_FOUND}) -set(HAVE_CURL ${CURL_FOUND}) -set(HAVE_LIBLZMA ${LIBLZMA_FOUND}) -set(HAVE_LIBXML ${LibXml2_FOUND}) -set(HAVE_LIBZ ${ZLIB_FOUND}) -set(HAVE_LIBLZ4 ${LZ4_FOUND}) -set(HAVE_PROJ ${PROJ_FOUND}) -set(HAVE_SNAPPY ${SNAPPY_FOUND}) -set(HAVE_UUID ${HAVE_UUID_GENERATE}) -set(HAVE_VALGRIND ${VALGRIND_FOUND}) -set(HAVE_NETCDF ${NETCDF_FOUND}) -set(HAVE_READLINE ${READLINE_FOUND}) - -set(SOCKET_LIBRARIES "") -if (WIN32) - set(SOCKET_LIBRARIES "ws2_32") -endif() - -cmake_push_check_state() -if(COMMONCRYPTO_FOUND) - #set(CMAKE_REQUIRED_INCLUDES "${COMMONCRYPTO_INCUDE_DIR}") - set(CMAKE_REQUIRED_LIBRARIES "${COMMONCRYPTO_LIBRARIES}") - - check_symbol_exists("CC_MD5_Update" "CommonCrypto/CommonDigest.h" HAVE_MD5_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("CC_SHA512_Update" "CommonCrypto/CommonDigest.h" HAVE_SHA512_UPDATE) - - add_library(OpenSSL::Crypto UNKNOWN IMPORTED) - set_target_properties(OpenSSL::Crypto PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${COMMONCRYPTO_INCLUDE_DIR}") - set_target_properties(OpenSSL::Crypto PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "${COMMONCRYPTO_LIBRARIES}") -endif() -if(OPENSSL_FOUND) - #set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCUDE_DIR}") - #set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}") - - set(HAVE_OPENSSL ON CACHE INTERNAL "OpenSSL is available") - set(CRYPTO_INCLUDE_DIR "${OPENSSL_INCLUDE_DIR}" CACHE INTERNAL "crypto include directory") - set(CRYPTO_LIBRARIES "${OPENSSL_CRYPTO_LIBRARY}" CACHE INTERNAL "crypto libraries to link") - set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${CRYPTO_INCLUDE_DIR}") - set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};${CRYPTO_LIBRARIES}") - - 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) - check_symbol_exists("SHA256_Update" "openssl/sha.h" HAVE_SHA256_UPDATE) - check_symbol_exists("SHA384_Update" "openssl/sha.h" HAVE_SHA384_UPDATE) - check_symbol_exists("SHA512_Update" "openssl/sha.h" HAVE_SHA512_UPDATE) -endif() -cmake_pop_check_state() +monetdb_configure_crypto() check_type_size(ssize_t SIZEOF_SSIZE_T LANGUAGE C) if(NOT HAVE_SIZEOF_SSIZE_T) @@ -167,47 +95,9 @@ if(MSVC) set(inline "__inline") endif() -set(DIR_SEP "/") -set(PATH_SEP ":") -set(DIR_SEP_STR "/") -set(SO_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}") -set(SO_EXT "${CMAKE_SHARED_LIBRARY_SUFFIX}") - include(GNUInstallDirs) -set(BINDIR "${CMAKE_INSTALL_FULL_BINDIR}") -set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") -set(DATADIR "${CMAKE_INSTALL_FULL_DATADIR}") -set(DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}") -set(LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") -if(WIN32) - # Fix cmake conversions - string(REPLACE "/" "\\\\" QXLOCALSTATEDIR "${LOCALSTATEDIR}") -endif() -set(MONETDB_PREFIX "${CMAKE_INSTALL_PREFIX}") -if(WIN32) - # Fix cmake conversions - string(REPLACE "/" "\\\\" MONETDB_PREFIX "${CMAKE_INSTALL_PREFIX}") -endif() - -set(DATAROOTDIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}") -set(BIN_DIR "${CMAKE_INSTALL_FULL_BINDIR}") -set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") -set(INFODIR "${CMAKE_INSTALL_FULL_INFODIR}") -set(LIB_DIR "${CMAKE_INSTALL_FULL_LIBDIR}") -set(LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}") -set(LOCALSTATE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") -# set(MANDIR "${CMAKE_INSTALL_FULL_MANDIR}") -set(SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}") -set(LOGDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/monetdb" - CACHE PATH - "Where to put log files (default LOCALSTATEDIR/log/monetdb)") -set(PKGCONFIGDIR "${LIBDIR}/pkgconfig") -set(RUNDIR - "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/monetdb" - CACHE PATH - "Where to put pid files (default LOCALSTATEDIR/run/monetdb)") - +monetdb_macro_variables() # Define custom target after the install directories variables. # Some custom target will need these setting. include(monetdb-custom-targets) diff --git a/clients/odbc/samples/CMakeLists.txt b/clients/odbc/samples/CMakeLists.txt --- a/clients/odbc/samples/CMakeLists.txt +++ b/clients/odbc/samples/CMakeLists.txt @@ -9,14 +9,38 @@ include_directories(${ODBC_INCLUDE_DIR}) if(TESTING) - add_executable(odbcsample1 odbcsample1.c) - target_link_libraries(odbcsample1 PRIVATE ODBC::ODBC) - add_executable(testgetinfo testgetinfo.c) - target_link_libraries(testgetinfo PRIVATE ODBC::ODBC) - add_executable(arraytest arraytest.c) - target_link_libraries(arraytest PRIVATE ODBC::ODBC) - add_executable(testStmtAttr testStmtAttr.c) - target_link_libraries(testStmtAttr PRIVATE ODBC::ODBC) + add_executable(odbcsample1 + odbcsample1.c) + + target_link_libraries(odbcsample1 + PRIVATE + ODBC::ODBC) + + add_executable(testgetinfo + testgetinfo.c) + target_link_libraries(testgetinfo + PRIVATE + ODBC::ODBC) + + add_executable(arraytest + arraytest.c) - install(TARGETS odbcsample1 testgetinfo arraytest testStmtAttr DESTINATION ${BINDIR}) + target_link_libraries(arraytest + PRIVATE + ODBC::ODBC) + + add_executable(testStmtAttr + testStmtAttr.c) + + target_link_libraries(testStmtAttr + PRIVATE + ODBC::ODBC) + + install(TARGETS + odbcsample1 + testgetinfo + arraytest + testStmtAttr + DESTINATION + ${BINDIR}) endif() diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake --- a/cmake/monetdb-defines.cmake +++ b/cmake/monetdb-defines.cmake @@ -106,4 +106,118 @@ function(monetdb_configure_defines) check_function_exists("uname" HAVE_UNAME) # Some libc versions on Linux distributions don't have it check_symbol_exists("semtimedop" "sys/types.h;sys/ipc.h;sys/sem.h" HAVE_SEMTIMEDOP) + # Likely unused, because it contained typo's + if(HAVE_PTHREAD_H) + check_function_exists("pthread_kill" HAVE_PTHREAD_KILL) + check_function_exists("pthread_sigmask" HAVE_PTHREAD_SIGMASK) + endif() endfunction() + +macro(monetdb_macro_variables) + # Set variables to define C macro's + # These are related to the detected packages + # These names are legacy. When the code is changed to use the cmake + # variables, they can be removed. + set(HAVE_ICONV ${Iconv_FOUND}) + set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT}) + set(HAVE_LIBPCRE ${PCRE_FOUND}) + set(HAVE_OPENSSL ${OPENSSL_FOUND}) + set(HAVE_COMMONCRYPTO ${COMMONCRYPTO_FOUND}) + set(HAVE_LIBBZ2 ${BZIP2_FOUND}) + set(HAVE_CURL ${CURL_FOUND}) + set(HAVE_LIBLZMA ${LIBLZMA_FOUND}) + set(HAVE_LIBXML ${LibXml2_FOUND}) + set(HAVE_LIBZ ${ZLIB_FOUND}) + set(HAVE_LIBLZ4 ${LZ4_FOUND}) + set(HAVE_PROJ ${PROJ_FOUND}) + set(HAVE_SNAPPY ${SNAPPY_FOUND}) + set(HAVE_UUID ${HAVE_UUID_GENERATE}) + set(HAVE_VALGRIND ${VALGRIND_FOUND}) + set(HAVE_NETCDF ${NETCDF_FOUND}) + set(HAVE_READLINE ${READLINE_FOUND}) + + set(SOCKET_LIBRARIES "") + if (WIN32) + set(SOCKET_LIBRARIES "ws2_32") + endif() + + set(DIR_SEP "/") + set(PATH_SEP ":") + set(DIR_SEP_STR "/") + set(SO_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}") + set(SO_EXT "${CMAKE_SHARED_LIBRARY_SUFFIX}") + + set(BINDIR "${CMAKE_INSTALL_FULL_BINDIR}") + set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") + set(DATADIR "${CMAKE_INSTALL_FULL_DATADIR}") + set(DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}") + set(LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") + if(WIN32) + # Fix cmake conversions + string(REPLACE "/" "\\\\" QXLOCALSTATEDIR "${LOCALSTATEDIR}") + endif() + set(MONETDB_PREFIX "${CMAKE_INSTALL_PREFIX}") + if(WIN32) + # Fix cmake conversions + string(REPLACE "/" "\\\\" MONETDB_PREFIX "${CMAKE_INSTALL_PREFIX}") + endif() + + set(DATAROOTDIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}") + set(BIN_DIR "${CMAKE_INSTALL_FULL_BINDIR}") + set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") + set(INFODIR "${CMAKE_INSTALL_FULL_INFODIR}") + set(LIB_DIR "${CMAKE_INSTALL_FULL_LIBDIR}") + set(LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}") + set(LOCALSTATE_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") + # set(MANDIR "${CMAKE_INSTALL_FULL_MANDIR}") + set(SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}") + set(LOGDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/monetdb" + CACHE PATH + "Where to put log files (default LOCALSTATEDIR/log/monetdb)") + set(PKGCONFIGDIR "${LIBDIR}/pkgconfig") + set(RUNDIR + "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/monetdb" + CACHE PATH + "Where to put pid files (default LOCALSTATEDIR/run/monetdb)") +endmacro() + +macro(monetdb_configure_crypto) + cmake_push_check_state() + if(COMMONCRYPTO_FOUND) + #set(CMAKE_REQUIRED_INCLUDES "${COMMONCRYPTO_INCUDE_DIR}") + set(CMAKE_REQUIRED_LIBRARIES "${COMMONCRYPTO_LIBRARIES}") + + check_symbol_exists("CC_MD5_Update" "CommonCrypto/CommonDigest.h" HAVE_MD5_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("CC_SHA512_Update" "CommonCrypto/CommonDigest.h" HAVE_SHA512_UPDATE) + + add_library(OpenSSL::Crypto UNKNOWN IMPORTED) + set_target_properties(OpenSSL::Crypto PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${COMMONCRYPTO_INCLUDE_DIR}") + set_target_properties(OpenSSL::Crypto PROPERTIES _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list