Legends-of-Azeroth-Pandaria-5.4.8
373 строки · 13.0 Кб
1# This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
2#
3# This program is free software; you can redistribute it and/or modify it
4# under the terms of the GNU General Public License as published by the
5# Free Software Foundation; either version 2 of the License, or (at your
6# option) any later version.
7#
8# This program is distributed in the hope that it will be useful, but WITHOUT
9# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11# more details.
12#
13# You should have received a copy of the GNU General Public License along
14# with this program. If not, see <http://www.gnu.org/licenses/>.
15
16#[=======================================================================[.rst:
17FindMySQL
18-----------
19
20Find MySQL.
21
22Imported Targets
23^^^^^^^^^^^^^^^^
24
25This module defines the following :prop_tgt:`IMPORTED` targets:
26
27``MySQL::MySQL``
28MySQL client library, if found.
29
30Result Variables
31^^^^^^^^^^^^^^^^
32
33This module will set the following variables in your project:
34
35``MYSQL_FOUND``
36System has MySQL.
37``MYSQL_INCLUDE_DIR``
38MySQL include directory.
39``MYSQL_LIBRARY``
40MySQL library.
41``MYSQL_EXECUTABLE``
42Path to mysql client binary.
43
44Hints
45^^^^^
46
47Set ``MYSQL_ROOT_DIR`` to the root directory of MySQL installation.
48#]=======================================================================]
49
50set(MYSQL_FOUND 0)
51
52set(_MYSQL_ROOT_HINTS
53${MYSQL_ROOT_DIR}
54ENV MYSQL_ROOT_DIR
55)
56
57if(UNIX)
58set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH
59"preferred path to MySQL (mysql_config)"
60)
61
62find_program(MYSQL_CONFIG mysql_config
63${MYSQL_CONFIG_PREFER_PATH}
64/usr/local/mysql/bin/
65/usr/local/bin/
66/usr/bin/
67)
68
69if(MYSQL_CONFIG)
70message(STATUS "Using mysql-config: ${MYSQL_CONFIG}")
71# set INCLUDE_DIR
72execute_process(
73COMMAND "${MYSQL_CONFIG}" --include
74OUTPUT_VARIABLE MY_TMP
75OUTPUT_STRIP_TRAILING_WHITESPACE
76)
77
78string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}")
79set(MYSQL_ADD_INCLUDE_PATH ${MY_TMP} CACHE FILEPATH INTERNAL)
80#message("[DEBUG] MYSQL ADD_INCLUDE_PATH : ${MYSQL_ADD_INCLUDE_PATH}")
81# set LIBRARY_DIR
82execute_process(
83COMMAND "${MYSQL_CONFIG}" --libs_r
84OUTPUT_VARIABLE MY_TMP
85OUTPUT_STRIP_TRAILING_WHITESPACE
86)
87set(MYSQL_ADD_LIBRARIES "")
88string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}")
89foreach(LIB ${MYSQL_LIB_LIST})
90string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")
91list(APPEND MYSQL_ADD_LIBRARIES "${LIB}")
92#message("[DEBUG] MYSQL ADD_LIBRARIES : ${MYSQL_ADD_LIBRARIES}")
93endforeach(LIB ${MYSQL_LIB_LIST})
94
95set(MYSQL_ADD_LIBRARIES_PATH "")
96string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}")
97foreach(LIB ${MYSQL_LIBDIR_LIST})
98string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}")
99list(APPEND MYSQL_ADD_LIBRARIES_PATH "${LIB}")
100#message("[DEBUG] MYSQL ADD_LIBRARIES_PATH : ${MYSQL_ADD_LIBRARIES_PATH}")
101endforeach(LIB ${MYSQL_LIBS})
102
103else(MYSQL_CONFIG)
104set(MYSQL_ADD_LIBRARIES "")
105list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient_r")
106endif(MYSQL_CONFIG)
107endif(UNIX)
108
109if(WIN32)
110# read environment variables and change \ to /
111file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" PROGRAM_FILES_32)
112file(TO_CMAKE_PATH "$ENV{ProgramW6432}" PROGRAM_FILES_64)
113endif(WIN32)
114
115find_path(MYSQL_INCLUDE_DIR
116NAMES
117mysql.h
118HINTS
119${_MYSQL_ROOT_HINTS}
120PATHS
121${MYSQL_ADD_INCLUDE_PATH}
122/usr/include
123/usr/include/mysql
124/usr/local/include
125/usr/local/include/mysql
126/usr/local/mysql/include
127"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.3"
128"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.2"
129"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.1"
130"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.0"
131"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7"
132"${PROGRAM_FILES_64}/MySQL"
133"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.3"
134"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.2"
135"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.1"
136"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.0"
137"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7"
138"${PROGRAM_FILES_32}/MySQL"
139"C:/MySQL"
140"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.3;Location]"
141"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.2;Location]"
142"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.1;Location]"
143"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.0;Location]"
144"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]"
145"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.3;Location]"
146"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.2;Location]"
147"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.1;Location]"
148"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.0;Location]"
149"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]"
150"$ENV{SystemDrive}/MySQL/MySQL Server 8.3"
151"$ENV{SystemDrive}/MySQL/MySQL Server 8.2"
152"$ENV{SystemDrive}/MySQL/MySQL Server 8.1"
153"$ENV{SystemDrive}/MySQL/MySQL Server 8.0"
154"$ENV{SystemDrive}/MySQL/MySQL Server 5.7"
155"c:/msys/local/include"
156"$ENV{MYSQL_ROOT}"
157"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4;INSTALLDIR]"
158"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4 (x64);INSTALLDIR]"
159"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5;INSTALLDIR]"
160"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5 (x64);INSTALLDIR]"
161PATH_SUFFIXES
162include
163include/mysql
164DOC
165"Specify the directory containing mysql.h."
166)
167
168if(UNIX)
169foreach(LIB ${MYSQL_ADD_LIBRARIES})
170find_library(MYSQL_LIBRARY
171NAMES
172mysql libmysql ${LIB}
173PATHS
174${MYSQL_ADD_LIBRARIES_PATH}
175/usr/lib
176/usr/lib/mysql
177/usr/local/lib
178/usr/local/lib/mysql
179/usr/local/mysql/lib
180DOC "Specify the location of the mysql library here."
181)
182endforeach(LIB ${MYSQL_ADD_LIBRARY})
183endif(UNIX)
184
185if(WIN32)
186find_library(MYSQL_LIBRARY
187NAMES
188libmysql libmariadb
189HINTS
190${_MYSQL_ROOT_HINTS}
191PATHS
192${MYSQL_ADD_LIBRARIES_PATH}
193"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.3"
194"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.2"
195"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.1"
196"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.0"
197"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7"
198"${PROGRAM_FILES_64}/MySQL/lib"
199"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.3"
200"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.2"
201"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.1"
202"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.0"
203"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7"
204"${PROGRAM_FILES_32}/MySQL/lib"
205"C:/MySQL/lib/debug"
206"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.3;Location]"
207"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.2;Location]"
208"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.1;Location]"
209"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.0;Location]"
210"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]"
211"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.3;Location]"
212"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.2;Location]"
213"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.1;Location]"
214"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.0;Location]"
215"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]"
216"$ENV{SystemDrive}/MySQL/MySQL Server 8.3"
217"$ENV{SystemDrive}/MySQL/MySQL Server 8.2"
218"$ENV{SystemDrive}/MySQL/MySQL Server 8.1"
219"$ENV{SystemDrive}/MySQL/MySQL Server 8.0"
220"$ENV{SystemDrive}/MySQL/MySQL Server 5.7"
221"c:/msys/local/lib"
222"$ENV{MYSQL_ROOT}"
223"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4;INSTALLDIR]"
224"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4 (x64);INSTALLDIR]"
225"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5;INSTALLDIR]"
226"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5 (x64);INSTALLDIR]"
227PATH_SUFFIXES
228lib
229lib/opt
230DOC "Specify the location of the mysql library here."
231)
232endif(WIN32)
233
234# On Windows you typically don't need to include any extra libraries
235# to build MYSQL stuff.
236
237if(NOT WIN32)
238find_library(MYSQL_EXTRA_LIBRARIES
239NAMES
240z zlib
241PATHS
242/usr/lib
243/usr/local/lib
244DOC
245"if more libraries are necessary to link in a MySQL client (typically zlib), specify them here."
246)
247else(NOT WIN32)
248set(MYSQL_EXTRA_LIBRARIES "")
249endif(NOT WIN32)
250
251if(UNIX)
252find_program(MYSQL_EXECUTABLE mysql
253PATHS
254${MYSQL_CONFIG_PREFER_PATH}
255/usr/local/mysql/bin/
256/usr/local/bin/
257/usr/bin/
258DOC
259"path to your mysql binary."
260)
261endif(UNIX)
262
263if(WIN32)
264find_program(MYSQL_EXECUTABLE mysql
265HINTS
266${_MYSQL_ROOT_HINTS}
267PATHS
268"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.3"
269"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.2"
270"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.1"
271"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.0"
272"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7"
273"${PROGRAM_FILES_64}/MySQL"
274"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.3"
275"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.2"
276"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.1"
277"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.0"
278"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7"
279"${PROGRAM_FILES_32}/MySQL"
280"C:/MySQL/bin/debug"
281"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.3;Location]"
282"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.2;Location]"
283"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.1;Location]"
284"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.0;Location]"
285"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]"
286"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.3;Location]"
287"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.2;Location]"
288"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.1;Location]"
289"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.0;Location]"
290"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]"
291"$ENV{SystemDrive}/MySQL/MySQL Server 8.3"
292"$ENV{SystemDrive}/MySQL/MySQL Server 8.2"
293"$ENV{SystemDrive}/MySQL/MySQL Server 8.1"
294"$ENV{SystemDrive}/MySQL/MySQL Server 8.0"
295"$ENV{SystemDrive}/MySQL/MySQL Server 5.7"
296"c:/msys/local/bin"
297"$ENV{MYSQL_ROOT}"
298"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4;INSTALLDIR]"
299"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4 (x64);INSTALLDIR]"
300"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5;INSTALLDIR]"
301"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5 (x64);INSTALLDIR]"
302PATH_SUFFIXES
303bin
304bin/opt
305DOC
306"path to your mysql binary."
307)
308endif(WIN32)
309
310unset(MySQL_lib_WANTED)
311unset(MySQL_binary_WANTED)
312set(MYSQL_REQUIRED_VARS "")
313foreach(_comp IN LISTS MySQL_FIND_COMPONENTS)
314if(_comp STREQUAL "lib")
315set(MySQL_${_comp}_WANTED TRUE)
316if(MySQL_FIND_REQUIRED_${_comp})
317list(APPEND MYSQL_REQUIRED_VARS "MYSQL_LIBRARY")
318list(APPEND MYSQL_REQUIRED_VARS "MYSQL_INCLUDE_DIR")
319endif()
320if(EXISTS "${MYSQL_LIBRARY}" AND EXISTS "${MYSQL_INCLUDE_DIR}")
321set(MySQL_${_comp}_FOUND TRUE)
322else()
323set(MySQL_${_comp}_FOUND FALSE)
324endif()
325elseif(_comp STREQUAL "binary")
326set(MySQL_${_comp}_WANTED TRUE)
327if(MySQL_FIND_REQUIRED_${_comp})
328list(APPEND MYSQL_REQUIRED_VARS "MYSQL_EXECUTABLE")
329endif()
330if(EXISTS "${MYSQL_EXECUTABLE}" )
331set(MySQL_${_comp}_FOUND TRUE)
332else()
333set(MySQL_${_comp}_FOUND FALSE)
334endif()
335else()
336message(WARNING "${_comp} is not a valid MySQL component")
337set(MySQL_${_comp}_FOUND FALSE)
338endif()
339endforeach()
340unset(_comp)
341
342include(FindPackageHandleStandardArgs)
343find_package_handle_standard_args(MySQL
344REQUIRED_VARS
345${MYSQL_REQUIRED_VARS}
346HANDLE_COMPONENTS
347FAIL_MESSAGE
348"Could not find the MySQL libraries! Please install the development libraries and headers"
349)
350unset(MYSQL_REQUIRED_VARS)
351
352if(MYSQL_FOUND)
353if(MySQL_lib_WANTED AND MySQL_lib_FOUND)
354message(STATUS "Found MySQL library: ${MYSQL_LIBRARY}")
355message(STATUS "Found MySQL headers: ${MYSQL_INCLUDE_DIR}")
356endif()
357if(MySQL_binary_WANTED AND MySQL_binary_FOUND)
358message(STATUS "Found MySQL executable: ${MYSQL_EXECUTABLE}")
359endif()
360mark_as_advanced(MYSQL_FOUND MYSQL_LIBRARY MYSQL_EXTRA_LIBRARIES MYSQL_INCLUDE_DIR MYSQL_EXECUTABLE)
361
362if(NOT TARGET MySQL::MySQL AND MySQL_lib_WANTED AND MySQL_lib_FOUND)
363add_library(MySQL::MySQL UNKNOWN IMPORTED)
364set_target_properties(MySQL::MySQL
365PROPERTIES
366IMPORTED_LOCATION
367"${MYSQL_LIBRARY}"
368INTERFACE_INCLUDE_DIRECTORIES
369"${MYSQL_INCLUDE_DIR}")
370endif()
371else()
372message(FATAL_ERROR "Could not find the MySQL libraries! Please install the development libraries and headers")
373endif()