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