# FindMYSQL # -------- # # Find the native MYSQL includes and library. # # IMPORTED Targets # ^^^^^^^^^^^^^^^^ # # This module defines :prop_tgt:`IMPORTED` target ``MYSQL::MYSQL``, if # MYSQL has been found. # # Result Variables # ^^^^^^^^^^^^^^^^ # # This module defines the following variables: # # :: # # MYSQL_INCLUDE_DIRS - where to find mysql.h, etc. # MYSQL_LIBRARIES - List of libraries when using mysql. # MYSQL_FOUND - True if mysql found. # # :: # # MYSQL_VERSION_STRING - The version of mysql found (x.y.z) # MYSQL_VERSION_MAJOR - The major version of mysql # MYSQL_VERSION_MINOR - The minor version of mysql # MYSQL_VERSION_PATCH - The patch version of mysql # # Hints # ^^^^^ # # A user may set ``MYSQL_ROOT`` to a mysql installation root to tell this # module where to look. #============================================================================= # This file is heavily inspired by the offical CMake module FindZLIB.cmake #============================================================================= # # # manager COMET Software Group # author andreas.jansen@tu-dresden.de set(_MYSQL_SEARCHES) # Search MYSQL_ROOT first if it is set. if(MYSQL_ROOT) set(_MYSQL_SEARCH_ROOT PATHS ${MYSQL_ROOT} NO_DEFAULT_PATH) list(APPEND _MYSQL_SEARCHES _MYSQL_SEARCH_ROOT) endif() # Normal search. set(_MYSQL_SEARCH_NORMAL PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\MySQL;InstallPath]" "$ENV{PROGRAMFILES}/mysql" ) list(APPEND _MYSQL_SEARCHES _MYSQL_SEARCH_NORMAL) set(MYSQL_NAMES libmysqlclient libmysqlclient_r mysqlclient mysqlclient_r mysqlserver libmysqld) # Debug names are the same as release but in lib/debug dir (in win) set(MYSQL_NAMES_DEBUG ${MYSQL_NAMES}) # Try each search configuration. foreach(search ${_MYSQL_SEARCHES}) find_path(MYSQL_INCLUDE_DIR NAMES mysql.h ${${search}} PATH_SUFFIXES include) endforeach() # Allow MYSQL_LIBRARY to be set manually, as the location of the mysql library if(NOT MYSQL_LIBRARY) foreach(search ${_MYSQL_SEARCHES}) find_library(MYSQL_LIBRARY_RELEASE NAMES ${MYSQL_NAMES} ${${search}} PATH_SUFFIXES lib) find_library(MYSQL_LIBRARY_DEBUG NAMES ${MYSQL_NAMES_DEBUG} ${${search}} PATH_SUFFIXES lib lib/debug) endforeach() include(SelectLibraryConfigurations) select_library_configurations(MYSQL) endif() unset(MYSQL_NAMES) unset(MYSQL_NAMES_DEBUG) mark_as_advanced(MYSQL_LIBRARY MYSQL_INCLUDE_DIR) # get version and set corrosponding variables if(MYSQL_INCLUDE_DIR AND EXISTS "${MYSQL_INCLUDE_DIR}/mysql_version.h" ) file( STRINGS "${MYSQL_INCLUDE_DIR}/mysql_version.h" MYSQL_VERSION_H REGEX "^#define[ \t]+MYSQL_SERVER_VERSION[ \t]+\"[^\"]+\".*$" ) string(REGEX REPLACE "^.*MYSQL_SERVER_VERSION[ \t]+\"([0-9]+).*$" "\\1" MYSQL_VERSION_MAJOR "${MYSQL_VERSION_H}") string(REGEX REPLACE "^.*MYSQL_SERVER_VERSION[ \t]+\"[0-9]+\\.([0-9]+).*$" "\\1" MYSQL_VERSION_MINOR "${MYSQL_VERSION_H}") string(REGEX REPLACE "^.*MYSQL_SERVER_VERSION[ \t]+\"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" MYSQL_VERSION_PATCH "${MYSQL_VERSION_H}") set(MYSQL_VERSION_STRING "${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}") set(MYSQL_MAJOR_VERSION "${MYSQL_VERSION_MAJOR}") set(MYSQL_MINOR_VERSION "${MYSQL_VERSION_MINOR}") set(MYSQL_PATCH_VERSION "${MYSQL_VERSION_PATCH}") endif() # handle the QUIETLY and REQUIRED arguments and set MYSQL_FOUND to TRUE if # all listed variables are TRUE include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(MYSQL REQUIRED_VARS MYSQL_LIBRARY MYSQL_INCLUDE_DIR VERSION_VAR MYSQL_VERSION_STRING) if(MYSQL_FOUND) set(MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIR}) if(NOT MYSQL_LIBRARIES) set(MYSQL_LIBRARIES ${MYSQL_LIBRARY}) endif() if(NOT TARGET MYSQL::MYSQL) add_library(MYSQL::MYSQL UNKNOWN IMPORTED) set_target_properties(MYSQL::MYSQL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MYSQL_INCLUDE_DIRS}") if(MYSQL_LIBRARY_RELEASE) set_property(TARGET MYSQL::MYSQL APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(MYSQL::MYSQL PROPERTIES IMPORTED_LOCATION_RELEASE "${MYSQL_LIBRARY_RELEASE}") endif() if(MYSQL_LIBRARY_DEBUG) set_property(TARGET MYSQL::MYSQL APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) set_target_properties(MYSQL::MYSQL PROPERTIES IMPORTED_LOCATION_DEBUG "${MYSQL_LIBRARY_DEBUG}") endif() if(NOT MYSQL_LIBRARY_RELEASE AND NOT MYSQL_LIBRARY_DEBUG) set_property(TARGET MYSQL::MYSQL APPEND PROPERTY IMPORTED_LOCATION "${MYSQL_LIBRARY}") endif() endif() endif()