FindMySQL.cmake
Go to the documentation of this file.
1 #[==[
2 Provides the following variables:
3 
4  * `MySQL_INCLUDE_DIRS`: Include directories necessary to use MySQL.
5  * `MySQL_LIBRARIES`: Libraries necessary to use MySQL.
6  * A `MySQL::MySQL` imported target.
7 #]==]
8 
9 # No .pc files are shipped with MySQL on Windows.
10 set(_MySQL_use_pkgconfig 0)
11 if (NOT WIN32)
12  find_package(PkgConfig)
13  if (PkgConfig_FOUND)
14  set(_MySQL_use_pkgconfig 1)
15  endif ()
16 endif ()
17 
18 if (_MySQL_use_pkgconfig)
19  pkg_check_modules(_libmariadb "libmariadb" QUIET IMPORTED_TARGET)
20  unset(_mysql_target)
21  if (_libmariadb_FOUND)
22  set(_mysql_target "_libmariadb")
23  else ()
24  pkg_check_modules(_mariadb "mariadb" QUIET IMPORTED_TARGET)
25  if (NOT _mariadb_FOUND)
26  pkg_check_modules(_mysql "mysql" QUIET IMPORTED_TARGET)
27  if (_mysql_FOUND)
28  set(_mysql_target "_mysql")
29  endif ()
30  else ()
31  set(_mysql_target "_mariadb")
32  if (_mariadb_VERSION VERSION_LESS 10.4)
33  get_property(_include_dirs
34  TARGET "PkgConfig::_mariadb"
35  PROPERTY "INTERFACE_INCLUDE_DIRECTORIES")
36  # Remove "${prefix}/mariadb/.." from the interface since it breaks other
37  # projects.
38  list(FILTER _include_dirs EXCLUDE REGEX "\\.\\.")
39  set_property(TARGET "PkgConfig::_mariadb"
40  PROPERTY
41  "INTERFACE_INCLUDE_DIRECTORIES" "${_include_dirs}")
42  unset(_include_dirs)
43  endif ()
44  endif ()
45  endif ()
46 
47  set(MySQL_FOUND 0)
48  if (_mysql_target)
49  set(MySQL_FOUND 1)
50  set(MySQL_INCLUDE_DIRS ${${_mysql_target}_INCLUDE_DIRS})
51  set(MySQL_LIBRARIES ${${_mysql_target}_LINK_LIBRARIES})
52  if (NOT TARGET MySQL::MySQL)
53  add_library(MySQL::MySQL INTERFACE IMPORTED)
54  target_link_libraries(MySQL::MySQL
55  INTERFACE "PkgConfig::${_mysql_target}")
56  endif ()
57  endif ()
58  unset(_mysql_target)
59 else ()
60  set(_MySQL_mariadb_versions 10.2 10.3)
61  set(_MySQL_versions 5.0)
62  set(_MySQL_paths)
63  foreach (_MySQL_version IN LISTS _MySQL_mariadb_versions)
64  list(APPEND _MySQL_paths
65  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB ${_MySQL_version};INSTALLDIR]"
66  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB ${_MySQL_version} (x64);INSTALLDIR]")
67  endforeach ()
68  foreach (_MySQL_version IN LISTS _MySQL_versions)
69  list(APPEND _MySQL_paths
70  "C:/Program Files/MySQL/MySQL Server ${_MySQL_version}/lib/opt"
71  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server ${_MySQL_version};Location]"
72  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server ${_MySQL_version};Location]")
73  endforeach ()
74  unset(_MySQL_version)
75  unset(_MySQL_versions)
76  unset(_MySQL_mariadb_versions)
77 
78  find_path(MySQL_INCLUDE_DIR
79  NAMES mysql.h
80  PATHS
81  "C:/Program Files/MySQL/include"
82  "C:/MySQL/include"
83  ${_MySQL_paths}
84  PATH_SUFFIXES include include/mysql
85  DOC "Location of mysql.h")
86  mark_as_advanced(MySQL_INCLUDE_DIR)
87  find_library(MySQL_LIBRARY
88  NAMES libmariadb mysql libmysql mysqlclient
89  PATHS
90  "C:/Program Files/MySQL/lib"
91  "C:/MySQL/lib/debug"
92  ${_MySQL_paths}
93  PATH_SUFFIXES lib lib/opt
94  DOC "Location of the mysql library")
95  mark_as_advanced(MySQL_LIBRARY)
96 
97  include(FindPackageHandleStandardArgs)
98  find_package_handle_standard_args(MySQL
99  REQUIRED_VARS MySQL_INCLUDE_DIR MySQL_LIBRARY)
100 
101  if (MySQL_FOUND)
102  set(MySQL_INCLUDE_DIRS "${MySQL_INCLUDE_DIR}")
103  set(MySQL_LIBRARIES "${MySQL_LIBRARY}")
104  if (NOT TARGET MySQL::MySQL)
105  add_library(MySQL::MySQL UNKNOWN IMPORTED)
106  set_target_properties(MySQL::MySQL PROPERTIES
107  IMPORTED_LOCATION "${MySQL_LIBRARY}"
108  INTERFACE_INCLUDE_DIRECTORIES "${MySQL_INCLUDE_DIR}")
109  endif ()
110  endif ()
111 endif ()
112 unset(_MySQL_use_pkgconfig)
boost::graph_traits< vtkGraph *>::vertex_descriptor target(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)