@@ -52,21 +52,21 @@ ENDMACRO(_MYSQL_CONFIG_REPLACE _regex1 _replace _regex2 _opt)
52
52
53
53
IF (MYSQLCLIENT_LIB_NAME )
54
54
IF (${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient_r.a"
55
- OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient_r .a"
55
+ OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient .a"
56
56
OR ${MYSQLCLIENT_LIB_NAME} MATCHES "mysqlclient*" )
57
57
SET (MYSQLCLIENT_STATIC_LINKING 1 )
58
58
ELSEIF (${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient_r.so"
59
- OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient_r .so"
60
- OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysql.dll " )
59
+ OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient .so"
60
+ OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysql.* " )
61
61
SET (MYSQLCLIENT_STATIC_LINKING 0 )
62
62
ENDIF (${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient_r.a"
63
- OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient_r .a"
63
+ OR ${MYSQLCLIENT_LIB_NAME} MATCHES "libmysqlclient .a"
64
64
OR ${MYSQLCLIENT_LIB_NAME} MATCHES "mysqlclient*" )
65
65
ELSE (MYSQLCLIENT_LIB_NAME )
66
66
IF (WIN32 )
67
67
SET (MYSQLCLIENT_LIB_NAME "mysqlclient.lib" )
68
68
ELSE (WIN32 )
69
- SET (MYSQLCLIENT_LIB_NAME "libmysqlclient_r .a libmysqlclient .a" )
69
+ SET (MYSQLCLIENT_LIB_NAME "libmysqlclient .a libmysqlclient_r .a" )
70
70
ENDIF (WIN32 )
71
71
SET (MYSQLCLIENT_STATIC_LINKING 1 )
72
72
ENDIF (MYSQLCLIENT_LIB_NAME )
@@ -88,32 +88,47 @@ IF (NOT MYSQL_CONFIG_EXECUTABLE AND NOT WIN32)
88
88
ENDIF (EXISTS "$ENV{MYSQL_DIR} /bin/mysql_config" )
89
89
ENDIF (NOT MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
90
90
91
- SET ( MYSQL_CXXFLAGS "" )
91
+
92
92
IF (MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
93
93
MESSAGE (STATUS "mysql_config was found ${MYSQL_CONFIG_EXECUTABLE} " )
94
- _MYSQL_CONFIG (MYSQL_INCLUDE_DIR "(^| )-I" "--include" )
95
94
96
95
EXECUTE_PROCESS (COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--version"
97
96
OUTPUT_VARIABLE __MYSQL_VERSION
98
97
)
99
- STRING (REGEX REPLACE "[\r\n ]$" "" __MYSQL_VERSION "${__MYSQL_VERSION} " )
100
- STRING (REGEX MATCHALL "(4.1.[0-9]+|[5-9].[0-9]+.[0-9]+)" MYSQL_VERSION "${__MYSQL_VERSION} " )
101
- STRING (REGEX REPLACE "[.]" "0" MYSQL_NUM_VERSION "${MYSQL_VERSION} " )
102
98
103
- IF (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION LESS 50604 )
104
- EXECUTE_PROCESS (COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--cflags"
99
+ # Clean up so only numeric, in case of "-alpha" or similar
100
+ STRING (REGEX MATCHALL "([0-9]+.[0-9]+.[0-9]+)" MYSQL_VERSION "${__MYSQL_VERSION} " )
101
+ # To create a fully numeric version, first normalize so N.NN.NN
102
+ STRING (REGEX REPLACE "[.]([0-9])[.]" ".0\\ 1." MYSQL_NUM_VERSION "${MYSQL_VERSION} " )
103
+ STRING (REGEX REPLACE "[.]([0-9])$" ".0\\ 1" MYSQL_NUM_VERSION "${MYSQL_NUM_VERSION} " )
104
+ # Finally remove the dot
105
+ STRING (REGEX REPLACE "[.]" "" MYSQL_NUM_VERSION "${MYSQL_NUM_VERSION} " )
106
+
107
+ IF (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION GREATER 50603 )
108
+ EXECUTE_PROCESS (COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--cxxflags"
105
109
OUTPUT_VARIABLE _mysql_config_output
106
110
)
107
- ELSE (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION LESS 50604 )
108
- EXECUTE_PROCESS (COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--cxxflags"
111
+ SET (MYSQL_CXX_LINKAGE 1 )
112
+ ELSE (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION GREATER 50603 )
113
+ EXECUTE_PROCESS (COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--cflags"
109
114
OUTPUT_VARIABLE _mysql_config_output
110
115
)
111
- ENDIF (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION LESS 50604 )
116
+ ENDIF (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION GREATER 50603 )
112
117
113
- STRING (REGEX MATCHALL "-m([^\r\n ]+)" MYSQL_LINK_FLAGS "${_mysql_config_output} " )
114
- STRING (REGEX REPLACE "[\r\n ]$" "" MYSQL_CXXFLAGS "${_mysql_config_output} " )
118
+ IF (NOT MYSQL_LINK_FLAGS )
119
+ STRING (REGEX MATCHALL "-m([^\r\n ]+)" MYSQL_LINK_FLAGS "${_mysql_config_output} " )
120
+ ENDIF (NOT MYSQL_LINK_FLAGS )
121
+ IF (NOT MYSQL_CXXFLAGS )
122
+ STRING (REGEX REPLACE "[\r\n ]$" "" MYSQL_CXXFLAGS "${_mysql_config_output} " )
123
+ ENDIF (NOT MYSQL_CXXFLAGS )
115
124
# ADD_DEFINITIONS("${MYSQL_CXXFLAGS}")
116
- ELSE (MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
125
+ ENDIF (MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
126
+
127
+
128
+ #----------------- FIND MYSQL_INCLUDE_DIR -------------------
129
+ IF (NOT MYSQL_INCLUDE_DIR AND MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
130
+ _MYSQL_CONFIG (MYSQL_INCLUDE_DIR "(^| )-I" "--include" )
131
+ ELSE (NOT MYSQL_INCLUDE_DIR AND MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
117
132
MESSAGE (STATUS "ENV{MYSQL_DIR} = $ENV{MYSQL_DIR} " )
118
133
FIND_PATH (MYSQL_INCLUDE_DIR mysql.h
119
134
${MYSQL_INCLUDE_DIR}
@@ -127,7 +142,8 @@ ELSE (MYSQL_CONFIG_EXECUTABLE AND NOT WIN32)
127
142
/usr/local/mysql/include/mysql
128
143
$ENV{ProgramFiles} /MySQL/*/include
129
144
$ENV{SystemDrive} /MySQL/*/include )
130
- ENDIF (MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
145
+ ENDIF (NOT MYSQL_INCLUDE_DIR AND MYSQL_CONFIG_EXECUTABLE AND NOT WIN32 )
146
+
131
147
132
148
#----------------- FIND MYSQL_LIB_DIR -------------------
133
149
IF (WIN32 )
@@ -143,12 +159,6 @@ IF (WIN32)
143
159
ADD_DEFINITIONS (-DDBUG_OFF )
144
160
ENDIF (CMAKE_BUILD_TYPE STREQUAL Debug )
145
161
146
- IF (MYSQLCLIENT_STATIC_LINKING )
147
- SET (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" )
148
- ELSE (MYSQLCLIENT_STATIC_LINKING )
149
- SET (CMAKE_FIND_LIBRARY_SUFFIXES ".dll" )
150
- ENDIF (MYSQLCLIENT_STATIC_LINKING )
151
-
152
162
FIND_LIBRARY (MYSQL_LIB
153
163
NAMES
154
164
${MYSQLCLIENT_LIB_NAME}
@@ -173,19 +183,11 @@ IF (WIN32)
173
183
$ENV{SystemDrive} /MySQL/*/lib )
174
184
175
185
SET (MYSQL_LIBRARIES ${MYSQL_LIB} )
176
-
177
- # Optionally add more libraries from the command line
178
- # using -DEXTRA_MYSQL_DEP=...
179
- IF (EXTRA_MYSQL_DEP )
180
- LIST (APPEND MYSQL_LIBRARIES ${EXTRA_MYSQL_DEP} )
181
- ENDIF (EXTRA_MYSQL_DEP )
182
-
183
- SET (MYSQL_CLIENT_LIBS ${MYSQL_LIBRARIES} )
184
186
IF (MYSQL_LIB )
185
187
GET_FILENAME_COMPONENT (MYSQL_LIB_DIR ${MYSQL_LIB} PATH )
186
188
ENDIF (MYSQL_LIB )
187
189
ELSE (WIN32 )
188
- IF (MYSQL_CONFIG_EXECUTABLE )
190
+ IF (NOT MYSQL_LIB_DIR AND MYSQL_CONFIG_EXECUTABLE )
189
191
# In MySQL Server 5.6.10 "mysql_config" outputs -lssl
190
192
# -lcrypto dependencies even if (as it is with the
191
193
# Oracle built binaries) OpenSSL is linked statically
@@ -224,27 +226,17 @@ ELSE (WIN32)
224
226
225
227
IF (MYSQLCLIENT_STATIC_LINKING )
226
228
_MYSQL_CONFIG_REPLACE (MYSQL_LIBRARIES
227
- "mysqlclient(_r| |$)" "${MYSQL_LIB} " "(^| )-l" "--libs_r" )
228
- IF (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
229
- LIST (APPEND MYSQL_LIBRARIES "rt" )
230
- ENDIF ()
229
+ "(mysqlclient|mysqlclient_r)" "${MYSQL_LIB} " "(^| )-l" "--libs" )
231
230
ELSE (MYSQLCLIENT_STATIC_LINKING )
232
- _MYSQL_CONFIG (MYSQL_LIBRARIES "(^| )-l" "--libs_r " )
231
+ _MYSQL_CONFIG (MYSQL_LIBRARIES "(^| )-l" "--libs " )
233
232
ENDIF (MYSQLCLIENT_STATIC_LINKING )
234
233
235
- _MYSQL_CONFIG (MYSQL_CLIB_DIR "(^| )-L" "--libs_r" )
236
-
237
- # Optionally add more libraries from the command line
238
- # using -DEXTRA_MYSQL_DEP=...
239
- IF (EXTRA_MYSQL_DEP )
240
- LIST (APPEND MYSQL_LIBRARIES ${EXTRA_MYSQL_DEP} )
241
- ENDIF (EXTRA_MYSQL_DEP )
234
+ _MYSQL_CONFIG (MYSQL_CLIB_DIR "(^| )-L" "--libs" )
242
235
243
236
IF (NOT MYSQL_LIB_DIR )
244
237
SET (MYSQL_LIB_DIR ${MYSQL_CLIB_DIR} )
245
238
ENDIF (NOT MYSQL_LIB_DIR )
246
- SET (MYSQL_CLIENT_LIBS ${MYSQL_LIBRARIES} )
247
- ELSE (MYSQL_CONFIG_EXECUTABLE )
239
+ ELSE (NOT MYSQL_LIB_DIR AND MYSQL_CONFIG_EXECUTABLE )
248
240
FIND_LIBRARY (MYSQL_LIB
249
241
NAMES
250
242
${MYSQLCLIENT_LIB_NAME}
@@ -267,26 +259,26 @@ ELSE (WIN32)
267
259
/opt/mysql/mysql/lib
268
260
/opt/mysql/mysql/lib/mysql )
269
261
270
-
271
262
SET (MYSQL_LIBRARIES ${MYSQL_LIB} )
272
-
273
- IF (MYSQLCLIENT_STATIC_LINKING )
274
- LIST (APPEND MYSQL_LIBRARIES "rt" )
275
- ENDIF (MYSQLCLIENT_STATIC_LINKING )
276
-
277
- # Optionally add more libraries from the command line
278
- # using -DEXTRA_MYSQL_DEP=...
279
- IF (EXTRA_MYSQL_DEP )
280
- LIST (APPEND MYSQL_LIBRARIES ${EXTRA_MYSQL_DEP} )
281
- ENDIF (EXTRA_MYSQL_DEP )
282
-
283
- SET (MYSQL_CLIENT_LIBS ${MYSQL_LIBRARIES} )
284
263
IF (MYSQL_LIB )
285
264
GET_FILENAME_COMPONENT (MYSQL_LIB_DIR ${MYSQL_LIB} PATH )
286
265
ENDIF (MYSQL_LIB )
287
- ENDIF (MYSQL_CONFIG_EXECUTABLE )
266
+ ENDIF (NOT MYSQL_LIB_DIR AND MYSQL_CONFIG_EXECUTABLE )
267
+
268
+ IF (MYSQLCLIENT_STATIC_LINKING AND
269
+ NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
270
+ LIST (APPEND MYSQL_LIBRARIES "rt" )
271
+ ENDIF ()
288
272
ENDIF (WIN32 )
289
273
274
+ SET (MYSQL_CLIENT_LIBS ${MYSQL_LIBRARIES} )
275
+
276
+ # Optionally add more libraries from the command line
277
+ # using -DEXTRA_MYSQL_DEP=...
278
+ IF (EXTRA_MYSQL_DEP )
279
+ LIST (APPEND MYSQL_LIBRARIES ${EXTRA_MYSQL_DEP} )
280
+ ENDIF (EXTRA_MYSQL_DEP )
281
+
290
282
291
283
SET (VERBOSE 1 )
292
284
IF (MYSQL_INCLUDE_DIR AND MYSQL_LIB_DIR )
0 commit comments