@@ -94,9 +94,6 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
94
94
ENDIF ()
95
95
ENDIF (CMAKE_COMPILER_IS_GNUCXX)
96
96
97
- IF (WIN32 )
98
- SET (CAN_CONVERT_STATIC_TO_SHARED_LIB 1)
99
- ENDIF ()
100
97
101
98
# Large files
102
99
SET (_LARGEFILE_SOURCE 1)
@@ -134,21 +131,17 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
134
131
135
132
# VS2003 needs the /Op compiler option to disable floating point
136
133
# optimizations
137
- SET (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Op" )
138
- SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Op" )
139
- SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Op" )
140
- SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Op" )
141
- SET (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Op" )
142
- SET (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /Op" )
143
- ENDIF (CMAKE_GENERATOR MATCHES "Visual Studio 7" )
134
+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Op" )
135
+ SET (CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /Op" )
136
+ ENDIF ()
144
137
145
138
146
139
IF (CMAKE_SYSTEM_NAME STREQUAL "HP-UX" )
147
140
IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
148
141
# HPUX linker crashes building plugins
149
142
SET (WITHOUT_DYNAMIC_PLUGINS TRUE )
150
143
ENDIF ()
151
- # If not PA-RISC make shared library suffix .so
144
+ # If Itanium make shared library suffix .so
152
145
# OS understands both .sl and .so. CMake would
153
146
# use .sl, however MySQL prefers .so
154
147
IF (NOT CMAKE_SYSTEM_PROCESSOR MATCHES "9000" )
@@ -157,6 +150,24 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "HP-UX" )
157
150
ENDIF ()
158
151
ENDIF ()
159
152
153
+ IF (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
154
+ # Ensure we have clean build for shared libraries
155
+ # without extra dependencies and without unresolved symbols
156
+ FOREACH (LANG C CXX)
157
+ STRING (REPLACE "-rdynamic" ""
158
+ CMAKE_SHARED_LIBRARY_LINK_${LANG} _FLAGS
159
+ ${CMAKE_SHARED_LIBRARY_LINK_${LANG} _FLAGS}
160
+ )
161
+ ENDFOREACH ()
162
+ SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed" )
163
+ SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed" )
164
+ SET (LINK_FLAG_NO_UNDEFINED "--Wl,--no-undefined" )
165
+ ENDIF ()
166
+
167
+ IF (CMAKE_SYSTEM_NAME MATCHES "SunOS" )
168
+ SET (LINK_FLAG_NO_UNDEFINED "-z defs" )
169
+ ENDIF ()
170
+
160
171
#Some OS specific hacks
161
172
IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
162
173
ADD_DEFINITIONS (-DNET_RETRY_COUNT=1000000)
@@ -244,48 +255,41 @@ IF(WIN32)
244
255
LINK_LIBRARIES (ws2_32)
245
256
ENDIF ()
246
257
247
-
248
-
249
- MACRO (MY_CHECK_LIB func lib found)
250
- SET ( ${found} 0 )
258
+ # Searches function in libraries
259
+ # if function is found, sets output parameter result to the name of the library
260
+ # if function is found in libc, result will be empty
261
+ FUNCTION (MY_SEARCH_LIBS func libs result )
251
262
CHECK_FUNCTION_EXISTS(${func} HAVE_${func} _IN_LIBC)
252
- CHECK_LIBRARY_EXISTS(${lib} ${func} "" HAVE_${func} _IN_${lib} )
253
- IF (HAVE_${func} _IN_${lib} )
254
- SET (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${lib} )
255
- LINK_LIBRARIES (${lib} )
256
- STRING (TOUPPER ${lib} upper_lib)
257
- SET (HAVE_LIB${upper_lib} 1 CACHE INTERNAL "Library check" )
258
- SET (${found} 1)
263
+ IF (HAVE_${func} _IN_LIBC)
264
+ SET (${result} "" PARENT_SCOPE)
265
+ RETURN ()
259
266
ENDIF ()
260
- ENDMACRO ()
261
-
262
- MACRO (MY_SEARCH_LIBS func lib found)
263
- SET (${found} 0)
264
- CHECK_FUNCTION_EXISTS(${func} HAVE_${func} _IN_LIBC)
265
- IF (NOT HAVE_${func} _IN_LIBC)
266
- MY_CHECK_LIB(${func} ${lib} ${found} )
267
- ELSE ()
268
- SET (${found} 1)
269
- ENDIF ()
270
- ENDMACRO ()
267
+ FOREACH (lib ${libs} )
268
+ CHECK_LIBRARY_EXISTS(${lib} ${func} "" HAVE_${func} _IN_${lib} )
269
+ IF (HAVE_${func} _IN_${lib} )
270
+ SET (${result} ${lib} PARENT_SCOPE)
271
+ ENDIF ()
272
+ RETURN ()
273
+ ENDFOREACH ()
274
+ ENDFUNCTION ()
271
275
272
276
IF (UNIX )
273
- MY_CHECK_LIB(floor m found)
274
- IF (NOT found)
275
- MY_CHECK_LIB( __infinity m found)
276
- ENDIF ()
277
- MY_CHECK_LIB(gethostbyname_r nsl_r found)
278
- IF (NOT found)
279
- MY_CHECK_LIB(gethostbyname_r nsl found)
277
+ MY_SEARCH_LIBS(floor m LIBM)
278
+ IF (NOT LIBM)
279
+ MY_SEARCH_LIBS(__infinity m LIBM)
280
280
ENDIF ()
281
- MY_SEARCH_LIBS(bind bind found)
282
- MY_SEARCH_LIBS(crypt crypt found)
283
- MY_SEARCH_LIBS(setsockopt socket found)
284
- MY_SEARCH_LIBS(aio_read rt found)
285
- MY_SEARCH_LIBS(sched_yield posix4 found)
286
- MY_CHECK_LIB(pthread_create pthread found)
287
- MY_SEARCH_LIBS(dlopen dl found)
288
-
281
+ MY_SEARCH_LIBS(gethostbyname_r "nsl_r;nsl" LIBNLS)
282
+ MY_SEARCH_LIBS(bind bind LIBBIND)
283
+ MY_SEARCH_LIBS(crypt crypt LIBCRYPT)
284
+ MY_SEARCH_LIBS(setsockopt socket LIBSOCKET)
285
+ MY_SEARCH_LIBS(dlopen dl LIBDL)
286
+ FIND_PACKAGE (Threads)
287
+
288
+ SET (CMAKE_REQUIRED_LIBRARIES
289
+ ${LIBNLS} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} )
290
+
291
+ LINK_LIBRARIES (${CMAKE_THREAD_LIBS_INIT} )
292
+
289
293
OPTION (WITH_LIBWRAP "Compile with tcp wrappers support" OFF )
290
294
IF (WITH_LIBWRAP)
291
295
SET (SAVE_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} )
@@ -303,7 +307,7 @@ IF(UNIX)
303
307
SET (CMAKE_REQUIRED_LIBRARIES ${SAVE_CMAKE_REQUIRED_LIBRARIES} )
304
308
IF (HAVE_LIBWRAP)
305
309
SET (MYSYS_LIBWRAP_SOURCE ${CMAKE_SOURCE_DIR} /mysys/my_libwrap.c)
306
- SET (LIBWRAP_LIBRARY "wrap" )
310
+ SET (LIBWRAP "wrap" )
307
311
ENDIF ()
308
312
ENDIF ()
309
313
ENDIF ()
0 commit comments