You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

237 lines
6.4 KiB

16 years ago
  1. # Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
  2. #
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; version 2 of the License.
  6. #
  7. # This program is distributed in the hope that it will be useful,
  8. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. # GNU General Public License for more details.
  11. #
  12. # You should have received a copy of the GNU General Public License
  13. # along with this program; if not, write to the Free Software
  14. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  15. INCLUDE_DIRECTORIES(
  16. ${CMAKE_SOURCE_DIR}/include
  17. ${CMAKE_SOURCE_DIR}/libmysql
  18. ${CMAKE_SOURCE_DIR}/regex
  19. ${CMAKE_SOURCE_DIR}/sql
  20. ${CMAKE_SOURCE_DIR}/strings
  21. ${SSL_INCLUDE_DIRS}
  22. ${SSL_INTERNAL_INCLUDE_DIRS}
  23. ${ZLIB_INCLUDE_DIR})
  24. ADD_DEFINITIONS(${SSL_DEFINES})
  25. SET(CLIENT_API_FUNCTIONS
  26. get_tty_password
  27. handle_options
  28. load_defaults
  29. mysql_thread_end
  30. mysql_thread_init
  31. myodbc_remove_escape
  32. mysql_affected_rows
  33. mysql_autocommit
  34. mysql_stmt_bind_param
  35. mysql_stmt_bind_result
  36. mysql_change_user
  37. mysql_character_set_name
  38. mysql_close
  39. mysql_commit
  40. mysql_data_seek
  41. mysql_debug
  42. mysql_dump_debug_info
  43. mysql_eof
  44. mysql_errno
  45. mysql_error
  46. mysql_escape_string
  47. mysql_hex_string
  48. mysql_stmt_execute
  49. mysql_stmt_fetch
  50. mysql_stmt_fetch_column
  51. mysql_fetch_field
  52. mysql_fetch_field_direct
  53. mysql_fetch_fields
  54. mysql_fetch_lengths
  55. mysql_fetch_row
  56. mysql_field_count
  57. mysql_field_seek
  58. mysql_field_tell
  59. mysql_free_result
  60. mysql_get_client_info
  61. mysql_get_host_info
  62. mysql_get_proto_info
  63. mysql_get_server_info
  64. mysql_get_client_version
  65. mysql_get_ssl_cipher
  66. mysql_info
  67. mysql_init
  68. mysql_insert_id
  69. mysql_kill
  70. mysql_set_server_option
  71. mysql_list_dbs
  72. mysql_list_fields
  73. mysql_list_processes
  74. mysql_list_tables
  75. mysql_more_results
  76. mysql_next_result
  77. mysql_num_fields
  78. mysql_num_rows
  79. mysql_options
  80. mysql_stmt_param_count
  81. mysql_stmt_param_metadata
  82. mysql_ping
  83. mysql_stmt_result_metadata
  84. mysql_query
  85. mysql_read_query_result
  86. mysql_real_connect
  87. mysql_real_escape_string
  88. mysql_real_query
  89. mysql_refresh
  90. mysql_rollback
  91. mysql_row_seek
  92. mysql_row_tell
  93. mysql_select_db
  94. mysql_stmt_send_long_data
  95. mysql_send_query
  96. mysql_shutdown
  97. mysql_ssl_set
  98. mysql_stat
  99. mysql_stmt_affected_rows
  100. mysql_stmt_close
  101. mysql_stmt_reset
  102. mysql_stmt_data_seek
  103. mysql_stmt_errno
  104. mysql_stmt_error
  105. mysql_stmt_free_result
  106. mysql_stmt_num_rows
  107. mysql_stmt_row_seek
  108. mysql_stmt_row_tell
  109. mysql_stmt_store_result
  110. mysql_store_result
  111. mysql_thread_id
  112. mysql_thread_safe
  113. mysql_use_result
  114. mysql_warning_count
  115. mysql_stmt_sqlstate
  116. mysql_sqlstate
  117. mysql_get_server_version
  118. mysql_stmt_prepare
  119. mysql_stmt_init
  120. mysql_stmt_insert_id
  121. mysql_stmt_attr_get
  122. mysql_stmt_attr_set
  123. mysql_stmt_field_count
  124. mysql_set_local_infile_default
  125. mysql_set_local_infile_handler
  126. mysql_embedded
  127. mysql_server_init
  128. mysql_server_end
  129. mysql_set_character_set
  130. mysql_get_character_set_info
  131. mysql_stmt_next_result
  132. CACHE INTERNAL "Functions exported by client API"
  133. )
  134. SET(CLIENT_SOURCES
  135. get_password.c
  136. libmysql.c
  137. errmsg.c
  138. ../sql-common/client.c
  139. ../sql-common/my_time.c
  140. ../sql-common/client_plugin.c
  141. ../sql/net_serv.cc
  142. ../sql-common/pack.c
  143. ../sql/password.c
  144. )
  145. ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
  146. DTRACE_INSTRUMENT(clientlib)
  147. ADD_DEPENDENCIES(clientlib GenError)
  148. SET(LIBS clientlib dbug strings vio mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBDL})
  149. #
  150. # On Windows platform client library includes the client-side
  151. # Windows Native Authentication plugin.
  152. #
  153. IF(WIN32)
  154. ADD_DEFINITIONS(-DAUTHENTICATION_WIN)
  155. ADD_SUBDIRECTORY(authentication_win)
  156. LIST(APPEND LIBS auth_win_client)
  157. ENDIF()
  158. # Merge several convenience libraries into one big mysqlclient
  159. # and link them together into shared library.
  160. MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development)
  161. # Visual Studio users need debug static library for debug projects
  162. IF(MSVC)
  163. INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
  164. ENDIF()
  165. IF(UNIX)
  166. MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME)
  167. SET(DOT_VERSION ".${VERSION}")
  168. IF(DOT_VERSION STREQUAL ".")
  169. SET(DOT_VERSION "")
  170. ENDIF()
  171. IF(APPLE)
  172. SET(${OUTNAME} ${LIBNAME}${DOT_VERSION}${EXTENSION})
  173. ELSE()
  174. SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
  175. ENDIF()
  176. ENDMACRO()
  177. INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} Development)
  178. ENDIF()
  179. IF(NOT DISABLE_SHARED)
  180. MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS} COMPONENT SharedLibraries)
  181. IF(UNIX)
  182. # libtool compatability
  183. IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
  184. SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
  185. ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
  186. SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0")
  187. ELSE()
  188. SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0")
  189. ENDIF()
  190. # Name of shared library is mysqlclient on Unix
  191. SET_TARGET_PROPERTIES(libmysql PROPERTIES
  192. OUTPUT_NAME mysqlclient
  193. VERSION "${OS_SHARED_LIB_VERSION}"
  194. SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
  195. IF(LINK_FLAG_NO_UNDEFINED)
  196. GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
  197. IF(NOT libmysql_link_flag)
  198. SET(libmysql_link_flags)
  199. ENDIF()
  200. SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
  201. "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED}")
  202. ENDIF()
  203. # clean direct output needs to be set several targets have the same name
  204. #(mysqlclient in this case)
  205. SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
  206. SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
  207. # Install links to libmysqlclient.so (client_r)
  208. GET_VERSIONED_LIBNAME(
  209. "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
  210. "${CMAKE_SHARED_LIBRARY_SUFFIX}"
  211. ""
  212. linkname)
  213. INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
  214. SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
  215. LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS)
  216. FOREACH(ver ${OS_SHARED_LIB_SYMLINKS})
  217. GET_VERSIONED_LIBNAME(
  218. "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
  219. "${CMAKE_SHARED_LIBRARY_SUFFIX}"
  220. "${ver}"
  221. linkname)
  222. INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
  223. ENDFOREACH()
  224. ENDIF()
  225. ENDIF()