Warning, /libraries/kdb/cmake/modules/FindMySQL.cmake is written in an unsupported language. File is not indexed.

0001 # - Try to find MySQL / MySQL Embedded library
0002 # Find the MySQL includes and client library
0003 # This module defines
0004 #  MYSQL_INCLUDE_DIR, where to find mysql.h
0005 #  MYSQL_LIBRARIES, the libraries needed to use MySQL.
0006 #  MYSQL_LIB_DIR, path to the MYSQL_LIBRARIES
0007 #  MYSQL_EMBEDDED_LIBRARIES, the libraries needed to use MySQL Embedded.
0008 #  MYSQL_EMBEDDED_LIB_DIR, path to the MYSQL_EMBEDDED_LIBRARIES
0009 #  MySQL_FOUND, If false, do not try to use MySQL.
0010 #  MySQL_Embedded_FOUND, If false, do not try to use MySQL Embedded.
0011 #  MYSQL_USING_MARIADB, If true MariaDB has been found and will be used as a replacement for MySQL
0012 
0013 # Copyright (c) 2006-2018, Jarosław Staniek <staniek@kde.org>
0014 #
0015 # Redistribution and use is allowed according to the terms of the BSD license.
0016 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
0017 
0018 include(CheckCXXSourceCompiles)
0019 include(MacroPushRequiredVars)
0020 include(FeatureSummary)
0021 set_package_properties(MySQL PROPERTIES
0022     DESCRIPTION "MySQL Client Library (libmysqlclient)" URL "https://www.mysql.com")
0023 
0024 set(MYSQL_USING_MARIADB FALSE)
0025 
0026 if(WIN32)
0027    set(ProgramFilesX "ProgramFiles(x86)")
0028    set(MYSQL_INCLUDE_PATHS
0029       $ENV{MYSQL_INCLUDE_DIR}
0030       $ENV{MYSQL_DIR}/include
0031       $ENV{ProgramW6432}/MySQL/*/include
0032       $ENV{ProgramFiles}/MySQL/*/include
0033       $ENV{${ProgramFilesX}}/MySQL/*/include
0034       $ENV{SystemDrive}/MySQL/*/include
0035       $ENV{ProgramW6432}/*/include
0036       $ENV{ProgramFiles}/*/include # MariaDB
0037       $ENV{${ProgramFilesX}}/*/include # MariaDB
0038    )
0039    set(MYSQL_INCLUDE_PATH_SUFFIXES mysql)
0040    # First try to identify MariaDB.
0041    # Once we find headers of MariaDB we will look for MariaDB and mot MySQL.
0042    # This way we avoid mixing MariaDB and MySQL files.
0043    find_path(_MARIADB_INCLUDE_DIR mariadb_version.h
0044       PATHS ${MYSQL_INCLUDE_PATHS}
0045       PATH_SUFFIXES ${MYSQL_INCLUDE_PATH_SUFFIXES}
0046    )
0047    if(_MARIADB_INCLUDE_DIR)
0048       set(MYSQL_USING_MARIADB TRUE)
0049       unset(_MARIADB_INCLUDE_DIR)
0050    endif()
0051    # now a real find
0052    find_path(MYSQL_INCLUDE_DIR mysql.h
0053       PATHS ${MYSQL_INCLUDE_PATHS}
0054       PATH_SUFFIXES ${MYSQL_INCLUDE_PATH_SUFFIXES}
0055    )
0056 else()
0057    # use pkg-config to get the directories and then use these values
0058    # in the FIND_PATH() and FIND_LIBRARY() calls
0059    find_package(PkgConfig)
0060    pkg_check_modules(PC_MYSQL QUIET mysql mariadb)
0061    if(PC_MYSQL_VERSION)
0062        set(MySQL_VERSION_STRING ${PC_MYSQL_VERSION})
0063    endif()
0064 
0065    find_path(MYSQL_INCLUDE_DIR mysql.h
0066       PATHS
0067       $ENV{MYSQL_INCLUDE_DIR}
0068       $ENV{MYSQL_DIR}/include
0069       ${PC_MYSQL_INCLUDEDIR}
0070       ${PC_MYSQL_INCLUDE_DIRS}
0071       /usr/local/mysql/include
0072       /opt/mysql/mysql/include
0073       PATH_SUFFIXES
0074       mysql
0075    )
0076 endif()
0077 
0078 if(WIN32)
0079    string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER)
0080 
0081    # path suffix for debug/release mode
0082    # binary_dist: mysql binary distribution
0083    # build_dist: custom build
0084    if(CMAKE_BUILD_TYPE_TOLOWER MATCHES "debug")
0085       set(binary_dist debug)
0086       set(build_dist Debug)
0087    else()
0088       add_definitions(-DDBUG_OFF)
0089       set(binary_dist opt)
0090       set(build_dist Release)
0091    endif()
0092 
0093    if(MYSQL_USING_MARIADB)
0094        set(MYSQL_LIB_PATHS
0095           $ENV{ProgramW6432}/*/lib # MariaDB
0096           $ENV{ProgramFiles}/*/lib # MariaDB
0097           $ENV{${ProgramFilesX}}/*/lib # MariaDB
0098        )
0099       find_library(_LIBMYSQL_LIBRARY NAMES libmariadb
0100          PATHS ${MYSQL_LIB_PATHS}
0101       )
0102       find_library(_MYSQLCLIENT_LIBRARY NAMES mariadbclient
0103          PATHS ${MYSQL_LIB_PATHS}
0104       )
0105       if(_LIBMYSQL_LIBRARY AND _MYSQLCLIENT_LIBRARY)
0106          # once we find one MariaDB component, always search for MariaDB, not MySQL components
0107          set(MYSQL_LIBRARIES ${_LIBMYSQL_LIBRARY} ${_MYSQLCLIENT_LIBRARY})
0108       endif()
0109    else() # mysql
0110        set(MYSQL_LIB_PATHS
0111           $ENV{MYSQL_DIR}/lib/${binary_dist}
0112           $ENV{MYSQL_DIR}/libmysql/${build_dist}
0113           $ENV{MYSQL_DIR}/client/${build_dist}
0114           $ENV{ProgramW6432}/MySQL/*/lib/${binary_dist}
0115           $ENV{ProgramFiles}/MySQL/*/lib/${binary_dist}
0116           $ENV{${ProgramFilesX}}/MySQL/*/lib/${binary_dist}
0117           $ENV{SystemDrive}/MySQL/*/lib/${binary_dist}
0118        )
0119        find_library(_LIBMYSQL_LIBRARY NAMES libmysql
0120           PATHS ${MYSQL_LIB_PATHS}
0121        )
0122        find_library(_MYSQLCLIENT_LIBRARY NAMES mysqlclient
0123           PATHS ${MYSQL_LIB_PATHS}
0124        )
0125        if(_LIBMYSQL_LIBRARY AND _MYSQLCLIENT_LIBRARY)
0126           set(MYSQL_LIBRARIES ${_LIBMYSQL_LIBRARY} ${_MYSQLCLIENT_LIBRARY})
0127        endif()
0128    endif()
0129 else() # !win32
0130    find_library(_MYSQLCLIENT_LIBRARY NAMES mysqlclient
0131       PATHS
0132       $ENV{MYSQL_DIR}/libmysql_r/.libs
0133       $ENV{MYSQL_DIR}/lib
0134       $ENV{MYSQL_DIR}/lib/mysql
0135       ${PC_MYSQL_LIBDIR}
0136       ${PC_MYSQL_LIBRARY_DIRS}
0137       PATH_SUFFIXES
0138       mysql
0139    )
0140    set(MYSQL_LIBRARIES ${_MYSQLCLIENT_LIBRARY})
0141    # TODO: set MYSQL_USING_MARIADB if MariaDB found
0142 endif()
0143 
0144 if(_LIBMYSQL_LIBRARY)
0145    get_filename_component(MYSQL_LIB_DIR ${_LIBMYSQL_LIBRARY} PATH)
0146    unset(_LIBMYSQL_LIBRARY)
0147 endif()
0148 if(_MYSQLCLIENT_LIBRARY)
0149     if(NOT MYSQL_LIB_DIR)
0150         get_filename_component(MYSQL_LIB_DIR ${_MYSQLCLIENT_LIBRARY} PATH)
0151     endif()
0152     unset(_MYSQLCLIENT_LIBRARY)
0153 endif()
0154 
0155 find_library(MYSQL_EMBEDDED_LIBRARIES NAMES mysqld
0156    PATHS
0157    ${MYSQL_LIB_PATHS}
0158 )
0159 
0160 if(MYSQL_EMBEDDED_LIBRARIES)
0161    get_filename_component(MYSQL_EMBEDDED_LIB_DIR ${MYSQL_EMBEDDED_LIBRARIES} PATH)
0162 
0163     macro_push_required_vars()
0164     set( CMAKE_REQUIRED_INCLUDES ${MYSQL_INCLUDE_DIR} )
0165     set( CMAKE_REQUIRED_LIBRARIES ${MYSQL_EMBEDDED_LIBRARIES} )
0166     check_cxx_source_compiles( "#include <mysql.h>\nint main() { int i = MYSQL_OPT_USE_EMBEDDED_CONNECTION; }" HAVE_MYSQL_OPT_EMBEDDED_CONNECTION )
0167     macro_pop_required_vars()
0168 endif()
0169 
0170 # Did we find anything?
0171 include(FindPackageHandleStandardArgs)
0172 
0173 find_package_handle_standard_args(MySQL
0174     REQUIRED_VARS MYSQL_LIBRARIES MYSQL_INCLUDE_DIR MYSQL_LIB_DIR
0175     VERSION_VAR MySQL_VERSION_STRING)
0176 if(MYSQL_EMBEDDED_LIBRARIES AND MYSQL_EMBEDDED_LIB_DIR AND HAVE_MYSQL_OPT_EMBEDDED_CONNECTION)
0177     find_package_handle_standard_args(MySQL_Embedded
0178                                   REQUIRED_VARS MYSQL_EMBEDDED_LIBRARIES MYSQL_INCLUDE_DIR
0179                                                 MYSQL_EMBEDDED_LIB_DIR
0180                                                 HAVE_MYSQL_OPT_EMBEDDED_CONNECTION)
0181 endif()
0182 
0183 mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARIES MYSQL_LIB_DIR
0184                  MYSQL_EMBEDDED_LIBRARIES MYSQL_EMBEDDED_LIB_DIR HAVE_MYSQL_OPT_EMBEDDED_CONNECTION
0185                  MYSQL_USING_MARIADB)
0186 
0187 if(MySQL_FOUND)
0188    set(MySQL_FOUND 1 CACHE INTERNAL "" FORCE)
0189     if(NOT MYSQL_FIND_QUIETLY)
0190        if(MYSQL_USING_MARIADB)
0191           message(STATUS "Found MariaDB, using as replacement for MySQL")
0192        endif()
0193     endif()
0194 else()
0195    unset(MySQL_FOUND CACHE)
0196    set(MySQL_FOUND FALSE)
0197    unset(MYSQL_LIBRARIES)
0198    unset(MYSQL_LIBRARIES CACHE)
0199    unset(MYSQL_INCLUDE_DIR)
0200    unset(MYSQL_INCLUDE_DIR CACHE)
0201    unset(MYSQL_LIB_DIR)
0202    unset(MYSQL_LIB_DIR CACHE)
0203    unset(MySQL_VERSION_STRING)
0204    unset(MySQL_VERSION_STRING CACHE)
0205 endif()