summaryrefslogtreecommitdiffstats
path: root/libmariadb/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'libmariadb/CMakeLists.txt')
-rw-r--r--libmariadb/CMakeLists.txt554
1 files changed, 554 insertions, 0 deletions
diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt
new file mode 100644
index 00000000..206e4e03
--- /dev/null
+++ b/libmariadb/CMakeLists.txt
@@ -0,0 +1,554 @@
+# CMakeLists.txt
+
+# This is the LGPL libmariadb project.
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
+INCLUDE(CheckFunctionExists)
+IF(COMMAND CMAKE_POLICY)
+ SET(NEW_POLICIES CMP0003 CMP0022 CMP0023 CMP0057 CMP0077 CMP0069 CMP0075)
+ FOREACH(TYPE OLD NEW)
+ FOREACH(P ${${TYPE}_POLICIES})
+ IF(POLICY ${P})
+ CMAKE_POLICY(SET ${P} ${TYPE})
+ ENDIF()
+ ENDFOREACH()
+ ENDFOREACH()
+ENDIF()
+
+
+PROJECT(mariadb-connector-c C)
+
+# Is C/C built as subproject?
+get_directory_property(IS_SUBPROJECT PARENT_DIRECTORY)
+
+# do not inherit include directories from the parent project
+SET_PROPERTY(DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+FOREACH(V WITH_MYSQLCOMPAT WITH_MSI WITH_SIGNCODE WITH_RTC WITH_UNIT_TESTS
+ WITH_DYNCOL WITH_EXTERNAL_ZLIB WITH_CURL WITH_SQLITE WITH_SSL WITH_ICONV
+ DEFAULT_CHARSET INSTALL_LAYOUT WITH_TEST_SRCPKG)
+ SET(${V} ${${OPT}${V}})
+ENDFOREACH()
+
+# SET(PACKAGE_STATUS_SUFFIX "rc1")
+
+SET(CC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+SET(CC_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
+
+SET(CPACK_PACKAGE_VERSION_MAJOR 3)
+SET(CPACK_PACKAGE_VERSION_MINOR 3)
+SET(CPACK_PACKAGE_VERSION_PATCH 8)
+SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+MATH(EXPR MARIADB_PACKAGE_VERSION_ID "${CPACK_PACKAGE_VERSION_MAJOR} * 10000 +
+ ${CPACK_PACKAGE_VERSION_MINOR} * 100 +
+ ${CPACK_PACKAGE_VERSION_PATCH}")
+
+MACRO(ADD_OPTION _name _text _default)
+ IF(NOT DEFINED ${_name})
+ OPTION(${OPT}${_name} "${_text}" "${_default}")
+ ELSE()
+ OPTION(${OPT}${_name} "${_text}" "${${_name}}")
+ ENDIF()
+ENDMACRO()
+
+### Options ###
+IF(NOT WIN32)
+ ADD_OPTION(WITH_MYSQLCOMPAT "creates libmysql* symbolic links" OFF)
+ELSE()
+ ADD_OPTION(WITH_MSI "Build MSI installation package" OFF)
+ ADD_OPTION(WITH_SIGNCODE "digitally sign files" OFF)
+ ADD_OPTION(WITH_RTC "enables run time checks for debug builds" OFF)
+ ADD_OPTION(WITH_ICONV "enables character set conversion" OFF)
+ENDIF()
+
+ADD_OPTION(WITH_UNIT_TESTS "build test suite" ON)
+ADD_OPTION(WITH_DYNCOL "Enables support of dynamic columns" ON)
+ADD_OPTION(WITH_EXTERNAL_ZLIB "Enables use of external zlib" OFF)
+ADD_OPTION(WITH_CURL "Enables use of curl" ON)
+ADD_OPTION(WITH_SSL "Enables use of TLS/SSL library" ON)
+###############
+
+INCLUDE(${CC_SOURCE_DIR}/cmake/misc.cmake)
+INCLUDE(FindCURL)
+
+IF(WITH_SIGNCODE)
+ IF(WIN32 AND NOT SIGN_OPTIONS)
+ SET(SIGN_OPTIONS /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a)
+ ELSE()
+ SEPARATE_ARGUMENTS(SIGN_OPTIONS)
+ ENDIF()
+ MARK_AS_ADVANCED(SIGN_OPTIONS)
+ENDIF()
+
+SET(MARIADB_CONNECTOR_C_COPYRIGHT "2013-2017 MariaDB Corporation Ab")
+
+IF(WITH_RTC)
+ SET(RTC_OPTIONS "/RTC1 /RTCc")
+ENDIF()
+
+INCLUDE(${CC_SOURCE_DIR}/cmake/plugins.cmake)
+
+
+IF(WIN32)
+ FILE(REMOVE ${CC_BINARY_DIR}/win/packaging/plugin.conf)
+ INCLUDE(${CC_SOURCE_DIR}/cmake/version_info.cmake)
+ENDIF()
+
+IF(NOT IS_SUBPROJECT)
+IF(MSVC)
+ # Speedup system tests
+ INCLUDE(${CC_SOURCE_DIR}/cmake/WindowsCache.cmake)
+ ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN -DNOGDI)
+ IF (MSVC)
+ SET(CONFIG_TYPES "DEBUG" "RELEASE" "RELWITHDEBINFO")
+ FOREACH(BUILD_TYPE ${CONFIG_TYPES})
+ FOREACH(COMPILER CXX C)
+ SET(COMPILER_FLAGS "${CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}}")
+ IF (NOT COMPILER_FLAGS STREQUAL "")
+ IF(NOT WITH_ASAN)
+ STRING(REPLACE "/MD" "/MT" COMPILER_FLAGS ${COMPILER_FLAGS})
+ IF (BUILD_TYPE STREQUAL "DEBUG")
+ SET(COMPILER_FLAGS "${COMPILER_FLAGS} ${RTC_OPTIONS}")
+ ENDIF()
+ ENDIF()
+ STRING(REPLACE "/Zi" "/Z7" COMPILER_FLAGS ${COMPILER_FLAGS})
+ MESSAGE (STATUS "CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}= ${COMPILER_FLAGS}")
+ SET(CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE} ${COMPILER_FLAGS})
+ ENDIF()
+ ENDFOREACH()
+ ENDFOREACH()
+ ENDIF()
+ENDIF()
+ELSE()
+ # MDEV-16383
+ IF(WITH_EMBEDDED_SERVER)
+ ADD_DEFINITIONS(-DHAVE_EMBEDDED)
+ ENDIF()
+ENDIF(NOT IS_SUBPROJECT)
+
+# Disable dbug information for release builds
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
+SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
+SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
+SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
+
+IF(CMAKE_COMPILER_IS_GNUCC)
+ INCLUDE(CheckCCompilerFlag)
+ SET(GCC_FLAGS -Wunused -Wlogical-op -Wno-uninitialized -Wall -Wextra -Wformat-security -Wno-init-self -Wwrite-strings -Wshift-count-overflow -Wdeclaration-after-statement -Wno-undef -Wno-unknown-pragmas -Wno-stringop-truncation)
+ FOREACH(GCC_FLAG ${GCC_FLAGS})
+ CHECK_C_COMPILER_FLAG("${GCC_FLAG}" HAS_${GCC_FLAG}_FLAG)
+ IF(${HAS_${GCC_FLAG}_FLAG})
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_FLAG}")
+ ENDIF()
+ ENDFOREACH()
+ENDIF()
+
+# If the build type isn't specified, set to Relwithdebinfo as default.
+IF(NOT CMAKE_BUILD_TYPE)
+ SET(CMAKE_BUILD_TYPE "RelWithDebInfo")
+ENDIF()
+
+# various defines for generating include/mysql_version.h
+INCLUDE(FindGit)
+IF(GIT_EXECUTABLE AND EXISTS ${CC_SOURCE_DIR}/.git)
+ EXECUTE_PROCESS(
+ COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
+ WORKING_DIRECTORY ${CC_SOURCE_DIR}
+ OUTPUT_VARIABLE OUT RESULT_VARIABLE RES)
+ IF(RES EQUAL 0)
+ STRING(REGEX REPLACE "\n$" "" CC_SOURCE_REVISION "${OUT}")
+ ENDIF()
+ENDIF()
+SET(PROTOCOL_VERSION 10) # we adapted new password option from PHP's mysqlnd !
+
+# if C/C is build as subproject inside MariaDB server tree we will
+# use the version defined by server
+IF(MAJOR_VERSION)
+ SET(MARIADB_CLIENT_VERSION_MAJOR ${MAJOR_VERSION})
+ SET(MARIADB_CLIENT_VERSION_MINOR ${MINOR_VERSION})
+ SET(MARIADB_CLIENT_VERSION_PATCH ${PATCH_VERSION})
+ SET(MARIADB_CLIENT_VERSION_EXTRA ${EXTRA_VERSION})
+ELSE()
+ SET(MARIADB_CLIENT_VERSION_MAJOR "10")
+ SET(MARIADB_CLIENT_VERSION_MINOR "8")
+ SET(MARIADB_CLIENT_VERSION_PATCH "8")
+ SET(MARIADB_CLIENT_VERSION_EXTRA "")
+ENDIF()
+
+IF(WIN32)
+ # version in resource files need to be consistent
+ # with server's , so that MSI minor upgrade work.
+ # if this is not a subproject build, C/C version is used.
+ FOREACH(v MAJOR MINOR PATCH TINY)
+ IF(DEFINED ${v}_VERSION)
+ SET(${v}_FILE_VERSION "${${v}_VERSION}")
+ ELSEIF(DEFINED CPACK_PACKAGE_VERSION_${v})
+ SET(${v}_FILE_VERSION "${CPACK_PACKAGE_VERSION_${v}}")
+ ELSE()
+ SET(${v}_FILE_VERSION "0")
+ ENDIF()
+ IF(NOT ${v}_FILE_VERSION MATCHES "^[0-9]+$")
+ MESSAGE(FATAL_ERROR
+ "${v}_FILE_VERSION is not numeric - '${${v}_FILE_VERSION}'")
+ ENDIF()
+ ENDFOREACH()
+ENDIF()
+
+SET(MARIADB_CLIENT_VERSION "${MARIADB_CLIENT_VERSION_MAJOR}.${MARIADB_CLIENT_VERSION_MINOR}.${MARIADB_CLIENT_VERSION_PATCH}${MARIADB_CLIENT_VERSION_EXTRA}")
+SET(MARIADB_BASE_VERSION "mariadb-${MARIADB_CLIENT_VERSION_MAJOR}.${MARIADB_CLIENT_VERSION_MINOR}")
+MATH(EXPR MARIADB_VERSION_ID "${MARIADB_CLIENT_VERSION_MAJOR} * 10000 +
+ ${MARIADB_CLIENT_VERSION_MINOR} * 100 +
+ ${MARIADB_CLIENT_VERSION_PATCH}")
+
+IF (NOT MARIADB_PORT)
+ SET(MARIADB_PORT 3306)
+ENDIF ()
+IF(NOT MARIADB_UNIX_ADDR)
+ SET(MARIADB_UNIX_ADDR "/tmp/mysql.sock")
+ENDIF()
+
+INCLUDE("${CC_SOURCE_DIR}/cmake/install.cmake")
+IF(NOT PLUGINDIR)
+ SET(PLUGINDIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_PLUGINDIR}")
+ENDIF()
+
+# todo: we don't character sets in share - all is compiled in
+SET(SHAREDIR "share")
+SET(DEFAULT_CHARSET_HOME "${CMAKE_INSTALL_PREFIX}")
+
+INCLUDE(${CC_SOURCE_DIR}/cmake/SearchLibrary.cmake)
+
+# Compression plugins: ZSTD, ZLIB
+
+INCLUDE(${CC_SOURCE_DIR}/cmake/FindZStd.cmake)
+
+IF(WITH_EXTERNAL_ZLIB)
+ IF(NOT ZLIB_FOUND)
+ FIND_PACKAGE(ZLIB REQUIRED)
+ ENDIF()
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${ZLIB_LIBRARIES})
+ELSE()
+ SET(ZLIB_INCLUDE_DIR "${CC_SOURCE_DIR}/external/zlib")
+ ADD_SUBDIRECTORY("${CC_SOURCE_DIR}/external/zlib")
+ENDIF()
+INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
+
+IF(NOT WIN32)
+ INCLUDE(TestBigEndian)
+ TEST_BIG_ENDIAN(HAVE_BIGENDIAN)
+ENDIF()
+
+# check for various include files
+INCLUDE(${CC_SOURCE_DIR}/cmake/check_include_files.cmake)
+# check for various functions
+INCLUDE(${CC_SOURCE_DIR}/cmake/check_functions.cmake)
+# check for various types
+INCLUDE(${CC_SOURCE_DIR}/cmake/check_types.cmake)
+
+IF(UNIX)
+ SEARCH_LIBRARY(LIBM floor m)
+ SEARCH_LIBRARY(LIBPTHREAD pthread_getspecific "pthread;pthreads")
+ SEARCH_LIBRARY(LIBNSL gethostbyname_r "nsl_r;nsl")
+ SEARCH_LIBRARY(LIBSOCKET setsockopt socket)
+ FIND_PACKAGE(Threads)
+ SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBNSL} ${LIBBIND} ${LIBICONV} ${ZLIB_LIBRARY}
+ ${LIBSOCKET} ${CMAKE_DL_LIBS} ${LIBM} ${LIBPTHREAD})
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBNSL} ${LIBBIND} ${LIBICONV}
+ ${LIBSOCKET} ${CMAKE_DL_LIBS} ${LIBM} ${LIBPTHREAD})
+ #remove possible dups from required libraries
+ LIST(LENGTH CMAKE_REQUIRED_LIBRARIES rllength)
+ IF(${rllength} GREATER 0)
+ LIST(REMOVE_DUPLICATES CMAKE_REQUIRED_LIBRARIES)
+ ENDIF()
+ENDIF()
+
+
+IF(CMAKE_HAVE_PTHREAD_H)
+ SET(CMAKE_REQUIRED_INCLUDES pthread.h)
+ENDIF()
+
+IF(DBUG_OFF)
+ ADD_DEFINITIONS(-DDBUG_OFF=1)
+ENDIF()
+
+ADD_DEFINITIONS(-DMARIADB_SYSTEM_TYPE="${CMAKE_SYSTEM_NAME}")
+ADD_DEFINITIONS(-DMARIADB_MACHINE_TYPE="${CMAKE_SYSTEM_PROCESSOR}")
+
+IF(WIN32)
+ SET(HAVE_THREADS 1)
+ ADD_DEFINITIONS(-DHAVE_DLOPEN)
+ ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
+ELSEIF()
+ SET(HAVE_THREADS ${CMAKE_USE_PTHREADS})
+ENDIF()
+
+IF(NOT DEFAULT_CHARSET)
+ SET(DEFAULT_CHARSET "utf8mb4")
+ENDIF()
+
+
+# convert SSL options to uppercase
+IF(WITH_SSL)
+ STRING(TOUPPER ${WITH_SSL} WITH_SSL)
+ENDIF()
+IF(WITH_SSL STREQUAL "ON")
+ IF(WIN32)
+ SET(WITH_SSL "SCHANNEL")
+ ELSE()
+ SET(WITH_SSL "OPENSSL")
+ ENDIF()
+ENDIF()
+
+IF(NOT WITH_SSL STREQUAL "OFF")
+ IF(WITH_SSL STREQUAL "OPENSSL")
+ IF (NOT OPENSSL_FOUND)
+ FIND_PACKAGE(OpenSSL)
+ ENDIF()
+ IF(OPENSSL_FOUND)
+ ADD_DEFINITIONS(-DHAVE_OPENSSL -DHAVE_TLS)
+ SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/openssl.c")
+ SET(SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
+ IF(WIN32)
+ CHECK_INCLUDE_FILES (${OPENSSL_INCLUDE_DIR}/openssl/applink.c HAVE_OPENSSL_APPLINK_C)
+ ENDIF()
+ INCLUDE_DIRECTORIES(BEFORE ${OPENSSL_INCLUDE_DIR})
+
+
+ TRY_RUN(LIBRESSL_RESULT HAVE_LIBRESSL
+ ${CMAKE_BINARY_DIR}
+ ${CC_SOURCE_DIR}/cmake/libressl_version.c
+ COMPILE_DEFINITIONS "-I${OPENSSL_INCLUDE_DIR}"
+ RUN_OUTPUT_VARIABLE LIBRESSL_VERSION)
+ IF(HAVE_LIBRESSL)
+ ADD_DEFINITIONS(-DHAVE_LIBRESSL)
+ SET(TLS_LIBRARY_VERSION ${LIBRESSL_VERSION})
+ ELSE()
+ SET(TLS_LIBRARY_VERSION "OpenSSL ${OPENSSL_VERSION}")
+ ENDIF()
+ ELSE()
+ MESSAGE1(TLS_LIBRARY_VERSION "OpenSSL/LibreSSL not found")
+ ENDIF()
+ ENDIF()
+ IF(WITH_SSL STREQUAL "GNUTLS")
+ FIND_PACKAGE(GnuTLS "3.3.24" REQUIRED)
+ IF(GNUTLS_FOUND)
+ ADD_DEFINITIONS(-DHAVE_GNUTLS -DHAVE_TLS)
+ SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/gnutls.c")
+ SET(SSL_LIBRARIES ${GNUTLS_LIBRARY})
+ SET(TLS_LIBRARY_VERSION "GnuTLS ${GNUTLS_VERSION_STRING}")
+ INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_DIR})
+ ELSE()
+ MESSAGE(FATAL_ERROR "GnuTLS not found")
+ ENDIF()
+ ENDIF()
+ IF(WIN32)
+ IF(WITH_SSL STREQUAL "SCHANNEL")
+ ADD_DEFINITIONS(-DHAVE_SCHANNEL -DHAVE_TLS)
+ SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/schannel.c"
+ "${CC_SOURCE_DIR}/libmariadb/secure/ma_schannel.c"
+ "${CC_SOURCE_DIR}/libmariadb/secure/schannel_certs.c")
+ INCLUDE_DIRECTORIES("${CC_SOURCE_DIR}/plugins/pvio/")
+ SET(SSL_LIBRARIES secur32)
+ SET(TLS_LIBRARY_VERSION "Schannel ${CMAKE_SYSTEM_VERSION}")
+ ENDIF()
+ ENDIF()
+ MESSAGE1(TLS_LIBRARY_VERSION "TLS library/version: ${TLS_LIBRARY_VERSION}")
+
+ MARK_AS_ADVANCED(SSL_SOURCES)
+ENDIF()
+
+SET(ENABLED_LOCAL_INFILE "AUTO" CACHE STRING "If we should should enable LOAD DATA LOCAL by default (OFF/ON/AUTO)")
+MARK_AS_ADVANCED(ENABLED_LOCAL_INFILE)
+IF (ENABLED_LOCAL_INFILE MATCHES "^(0|FALSE)$")
+ SET(ENABLED_LOCAL_INFILE OFF)
+ELSEIF(ENABLED_LOCAL_INFILE MATCHES "^(1|TRUE)$")
+ SET(ENABLED_LOCAL_INFILE ON)
+ELSEIF (NOT ENABLED_LOCAL_INFILE MATCHES "^(ON|OFF|AUTO)$")
+ MESSAGE(FATAL_ERROR "ENABLED_LOCAL_INFILE must be one of OFF, ON, AUTO")
+ENDIF()
+
+IF(WITH_ICONV)
+ IF(NOT WIN32)
+ INCLUDE(${CC_SOURCE_DIR}/cmake/FindIconv.cmake)
+ ENDIF()
+ENDIF()
+
+CONFIGURE_FILE(${CC_SOURCE_DIR}/include/ma_config.h.in
+ ${CC_BINARY_DIR}/include/ma_config.h)
+CONFIGURE_FILE(${CC_SOURCE_DIR}/include/ma_config.h.in
+ ${CC_BINARY_DIR}/include/config.h)
+CONFIGURE_FILE(${CC_SOURCE_DIR}/include/mariadb_version.h.in
+ ${CC_BINARY_DIR}/include/mariadb_version.h)
+
+INCLUDE_DIRECTORIES(${CC_BINARY_DIR}/include)
+
+IF(WIN32)
+ SET(SYSTEM_LIBS ws2_32 advapi32 kernel32 shlwapi crypt32 ${LIBZ})
+ELSE()
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBPTHREAD} ${CMAKE_DL_LIBS} ${LIBM})
+ IF(ICONV_EXTERNAL)
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${ICONV_LIBRARIES})
+ ENDIF()
+ENDIF()
+IF(WITH_SSL)
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${SSL_LIBRARIES})
+ENDIF()
+MESSAGE1(SYSTEM_LIBS "SYSTEM_LIBS ${SYSTEM_LIBS}")
+MARK_AS_ADVANCED(SYSTEM_LIBS)
+
+IF(NOT IS_SUBPROJECT)
+IF ((NOT WIN32) AND (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "GNU"))
+ SET(WARNING_AS_ERROR "-Werror")
+ELSEIF(CMAKE_C_COMPILER_ID MATCHES "MSVC")
+ SET(WARNING_AS_ERROR "/WX")
+ENDIF()
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_AS_ERROR}")
+ENDIF()
+
+
+IF(NOT REMOTEIO_PLUGIN_TYPE MATCHES "OFF")
+ IF(CURL_FOUND)
+ INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
+ IF(REMOTEIO_PLUGIN_TYPE MATCHES "STATIC")
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${CURL_LIBRARIES})
+ ENDIF()
+ ADD_DEFINITIONS("-DHAVE_REMOTEIO=1")
+ ENDIF()
+ENDIF()
+IF(NOT WIN32)
+ IF(NOT AUTH_GSSAPI_PLUGIN_TYPE MATCHES "OFF")
+ INCLUDE(${CC_SOURCE_DIR}/cmake/FindGSSAPI.cmake)
+ IF(GSSAPI_FOUND)
+ INCLUDE_DIRECTORIES(${GSSAPI_INCS})
+ IF(AUTH_GSSAPI_PLUGIN_TYPE MATCHES "STATIC")
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${GSSAPI_LIBS})
+ ENDIF()
+ ENDIF()
+ ENDIF()
+ENDIF()
+INCLUDE(${CC_SOURCE_DIR}/plugins/CMakeLists.txt)
+ADD_SUBDIRECTORY(include)
+ADD_SUBDIRECTORY(libmariadb)
+IF((NOT WIN32) OR CYGWIN)
+ ADD_SUBDIRECTORY(mariadb_config)
+ENDIF()
+
+IF(IS_DIRECTORY ${CC_SOURCE_DIR}/unittest)
+ IF(WITH_UNIT_TESTS)
+ ADD_SUBDIRECTORY(unittest/mytap)
+ ADD_SUBDIRECTORY(unittest/libmariadb)
+ ENDIF()
+ENDIF()
+
+IF(CLIENT_DOCS)
+ INSTALL(DIRECTORY ${CLIENT_DOCS}
+ DESTINATION ${DOCS_INSTALL_DIR_${INSTALL_LAYOUT}}
+ COMPONENT SharedLibraries)
+ENDIF()
+
+IF(UNIX)
+ ADD_SUBDIRECTORY(man)
+ENDIF()
+
+IF(WIN32 AND WITH_MSI AND CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+ ADD_SUBDIRECTORY(win/packaging)
+ENDIF()
+MESSAGE1(SYSTEM_PROCESSOR "SYSTEM processor: ${CMAKE_SYSTEM_PROCESSOR}")
+SET(CPACK_PACKAGE_VENDOR "MariaDB Corporation Ab")
+SET(CPACK_PACKAGE_DESCRIPTION "MariaDB Connector/C. A library for connecting to MariaDB and MySQL servers")
+SET(CPACK_PACKAGE_NAME "mariadb_connector_c")
+STRING(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
+SET(CPACK_RESOURCE_FILE_LICENSE "${CC_SOURCE_DIR}/COPYING.LIB")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CC_SOURCE_DIR}/README")
+INCLUDE(cmake/ConnectorName.cmake)
+IF(NOT PACKAGE_STATUS_SUFFIX)
+ SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mariadb-connector-c-${CPACK_PACKAGE_VERSION}-src")
+ IF(PACKAGE_PLATFORM_SUFFIX)
+ SET(CPACK_PACKAGE_FILE_NAME "mariadb-connector-c-${CPACK_PACKAGE_VERSION}-${PACKAGE_PLATFORM_SUFFIX}")
+ ELSE()
+ SET(CPACK_PACKAGE_FILE_NAME "mariadb-connector-c-${CPACK_PACKAGE_VERSION}-${system_name}-${CMAKE_SYSTEM_PROCESSOR}")
+ ENDIF()
+ELSE()
+ SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mariadb-connector-c-${CPACK_PACKAGE_VERSION}-${PACKAGE_STATUS_SUFFIX}-src")
+ IF(PACKAGE_PLATFORM_SUFFIX)
+ SET(CPACK_PACKAGE_FILE_NAME "mariadb-connector-c-${CPACK_PACKAGE_VERSION}-${PACKAGE_STATUS_SUFFIX}-${PACKAGE_PLATFORM_SUFFIX}")
+ ELSE()
+ SET(CPACK_PACKAGE_FILE_NAME "mariadb-connector-c-${CPACK_PACKAGE_VERSION}-${PACKAGE_STATUS_SUFFIX}-${system_name}-${CMAKE_SYSTEM_PROCESSOR}")
+ ENDIF()
+ENDIF()
+# Build source packages
+IF(GIT_BUILD_SRCPKG)
+ # get branch name
+ EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} show-branch OUTPUT_VARIABLE git_branch)
+ STRING(REGEX MATCH "\\[([^]]+)\\]" git_branch ${git_branch})
+ STRING(REGEX REPLACE "\\[|\\]" "" GIT_BRANCH ${git_branch})
+ MESSAGE1(GIT_BRANCH "${GIT_BRANCH}")
+ IF(WIN32)
+ EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} archive ${GIT_BRANCH} --format=zip --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ --output=${CPACK_SOURCE_PACKAGE_FILE_NAME}.zip)
+ ELSE()
+ EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} archive ${GIT_BRANCH} --format=zip --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ --output=${CPACK_SOURCE_PACKAGE_FILE_NAME}.zip)
+ EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} archive ${GIT_BRANCH} --format=tar --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ --output=${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar)
+ EXECUTE_PROCESS(COMMAND gzip -9 -f ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar)
+ ENDIF()
+ENDIF()
+
+SET(CPACK_SOURCE_IGNORE_FILES
+\\\\.git/
+\\\\.gitignore
+\\\\.gitattributes
+CMakeCache\\\\.txt
+cmake_dist\\\\.cmake
+CPackConfig\\\\.cmake
+mariadb_config\\\\.c$
+\\\\.build/
+html/
+unittest
+/cmake_install.cmake
+/CTestTestfile.cmake
+/CPackSourceConfig.cmake
+/CMakeFiles/
+/version_resources/
+/_CPack_Packages/
+\\\\.gz$
+\\\\.zip$
+mariadb_config/mariadb_config$
+/CMakeFiles/
+/version_resources/
+/_CPack_Packages/
+Makefile$
+include/my_config\\\\.h$
+)
+
+IF(WITH_TEST_SRCPKG)
+ SET(PACKAGE_FILE ${CC_SOURCE_DIR}/package.name)
+ FILE(REMOVE ${PACKAGE_FILE})
+ FILE(WRITE ${PACKAGE_FILE} ${CPACK_SOURCE_PACKAGE_FILE_NAME})
+ENDIF()
+
+IF(WIN32)
+ SET(CPACK_GENERATOR "ZIP")
+ SET(CPACK_SOURCE_GENERATOR "ZIP")
+ELSE()
+ SET(CPACK_GENERATOR "TGZ")
+ SET(CPACK_SOURCE_GENERATOR "TGZ")
+ENDIF()
+INCLUDE(CPack)
+
+IF(WITH_EXTERNAL_ZLIB)
+ SET(zlib_status ${WITH_EXTERNAL_ZLIB})
+ELSE()
+ SET(zlib_status "yes (using bundled zlib)")
+ENDIF()
+
+MESSAGE1(STATUS "MariaDB Connector/c configuration:
+-- Static PLUGINS ${PLUGINS_STATIC}
+-- Dynamic PLUGINS ${PLUGINS_DYNAMIC}
+-- CPack generation: ${CPACK_GENERATOR}
+-- SSL support: ${WITH_SSL} Libs: ${SSL_LIBRARIES}
+-- Zlib support: ${zlib_status}
+-- ZStd support: ${ZSTD_FOUND}
+-- Installation layout: ${INSTALL_LAYOUT}
+-- Include files will be installed in ${INSTALL_INCLUDEDIR}
+-- Libraries will be installed in ${INSTALL_LIBDIR}
+-- Binaries will be installed in ${INSTALL_BINDIR}
+-- Documentation included from ${CLIENT_DOCS}
+-- Required: ${CMAKE_REQUIRED_LIBRARIES}")