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()