summaryrefslogtreecommitdiff
path: root/libmysql/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'libmysql/CMakeLists.txt')
-rw-r--r--libmysql/CMakeLists.txt173
1 files changed, 168 insertions, 5 deletions
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index f67b3962c1a..29c8298a825 100644
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -23,7 +23,7 @@ INCLUDE_DIRECTORIES(
${ZLIB_INCLUDE_DIR})
ADD_DEFINITIONS(${SSL_DEFINES})
-SET(CLIENT_API_FUNCTIONS
+SET(CLIENT_API_FUNCTIONS_5_1
get_tty_password
handle_options
load_defaults
@@ -58,6 +58,7 @@ mysql_field_count
mysql_field_seek
mysql_field_tell
mysql_free_result
+mysql_get_parameters
mysql_get_client_info
mysql_get_host_info
mysql_get_proto_info
@@ -129,12 +130,173 @@ mysql_server_init
mysql_server_end
mysql_set_character_set
mysql_get_character_set_info
-mysql_stmt_next_result
+)
-CACHE INTERNAL "Functions exported by client API"
+SET(CLIENT_API_FUNCTIONS_5_5
+mysql_stmt_next_result
+# Client plugins
+mysql_client_find_plugin
+mysql_client_register_plugin
+mysql_load_plugin
+mysql_load_plugin_v
+mysql_plugin_options
+# Async API
+mysql_autocommit_cont
+mysql_autocommit_start
+mysql_change_user_cont
+mysql_change_user_start
+mysql_close_cont
+mysql_close_slow_part_cont
+mysql_close_slow_part_start
+mysql_close_start
+mysql_commit_cont
+mysql_commit_start
+mysql_fetch_row_cont
+mysql_fetch_row_start
+mysql_free_result_cont
+mysql_free_result_start
+mysql_kill_cont
+mysql_kill_start
+mysql_list_dbs_cont
+mysql_list_dbs_start
+mysql_list_fields_cont
+mysql_list_fields_start
+mysql_list_processes_cont
+mysql_list_processes_start
+mysql_list_tables_cont
+mysql_list_tables_start
+mysql_next_result_cont
+mysql_next_result_start
+mysql_ping_cont
+mysql_ping_start
+mysql_query_cont
+mysql_query_start
+mysql_read_query_result_cont
+mysql_read_query_result_start
+mysql_real_connect_cont
+mysql_real_connect_start
+mysql_real_query_cont
+mysql_real_query_start
+mysql_refresh_cont
+mysql_refresh_start
+mysql_rollback_cont
+mysql_rollback_start
+mysql_select_db_cont
+mysql_select_db_start
+mysql_send_query_cont
+mysql_send_query_start
+mysql_set_character_set_cont
+mysql_set_character_set_start
+mysql_set_server_option_cont
+mysql_set_server_option_start
+mysql_shutdown_cont
+mysql_shutdown_start
+mysql_stat_cont
+mysql_stat_start
+mysql_stmt_close_cont
+mysql_stmt_close_start
+mysql_stmt_execute_cont
+mysql_stmt_execute_start
+mysql_stmt_fetch_cont
+mysql_stmt_fetch_start
+mysql_stmt_free_result_cont
+mysql_stmt_free_result_start
+mysql_stmt_next_result_cont
+mysql_stmt_next_result_start
+mysql_stmt_prepare_cont
+mysql_stmt_prepare_start
+mysql_stmt_reset_cont
+mysql_stmt_reset_start
+mysql_stmt_send_long_data_cont
+mysql_stmt_send_long_data_start
+mysql_stmt_store_result_cont
+mysql_stmt_store_result_start
+mysql_store_result_cont
+mysql_store_result_start
+#dynamic columns api
+dynamic_column_create
+dynamic_column_create_many
+dynamic_column_update
+dynamic_column_update_many
+dynamic_column_exists
+dynamic_column_list
+dynamic_column_get
+dynamic_column_prepare_decimal
+)
+SET(CLIENT_API_FUNCTIONS
+ ${CLIENT_API_FUNCTIONS_5_1}
+ ${CLIENT_API_FUNCTIONS_5_5}
+ CACHE INTERNAL
+ "Client functions"
)
+IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ # When building RPM, or DEB package on Debian, use ELF symbol versioning
+ # for compatibility with distribution packages, so client shared library can
+ # painlessly replace the one supplied by the distribution.
+
+ # Also list of exported symbols in distributions may differ from what is considered
+ # official API. Define CLIENT_API_EXTRA for the set of symbols, that required to
+ # be exported on different platforms.
+
+ IF(RPM)
+ # Fedora & Co declared following functions as part of API
+ # These functions are alias of another function (given mysql_ prefix=. The
+ # renaming is handled in rpm_support.cc below
+ SET(CLIENT_API_EXTRA
+ mysql_default_charset_info
+ mysql_get_charset
+ mysql_get_charset_by_csname
+ mysql_net_realloc
+ mysql_client_errors
+ )
+ # Add special script to fix symbols renames by Fedora
+ SET(CLIENT_SOURCES_EXTRA ${CLIENT_SOURCES} rpm_support.cc)
+ SET(VERSION_SCRIPT_TEMPLATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_rpm_version.in)
+ ELSEIF(DEB)
+ # libmyodbc on Ubuntu is using functions below
+ # If we don't export them, linker would just remove
+ # them (they are not used inside libmysqlclient)
+ SET(CLIENT_API_EXTRA
+ strfill
+ init_dynamic_string
+ )
+ # MySQL supplied with Ubuntu does not have versioning, bug Debian does.
+ IF(DEB MATCHES "debian")
+ SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql.ver.in)
+ ENDIF()
+ ENDIF()
+
+ IF(VERSION_SCRIPT_TEMPLATE)
+ # Generate version script.
+ # Create semicolon separated lists of functions to export from
+ # Since RPM packages use separate versioning for 5.1 API
+ # and 5.5 API (libmysqlclient_16 vs libmysqlclient_18),
+ # we need 2 lists.
+ SET (CLIENT_API_5_1_LIST)
+ FOREACH (f ${CLIENT_API_FUNCTIONS_5_1})
+ SET(CLIENT_API_5_1_LIST "${CLIENT_API_5_1_LIST}\n${f};")
+ ENDFOREACH()
+
+ SET (CLIENT_API_5_5_LIST)
+ FOREACH (f ${CLIENT_API_FUNCTIONS_5_5})
+ SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\n${f};")
+ ENDFOREACH()
+
+ CONFIGURE_FILE(
+ ${VERSION_SCRIPT_TEMPLATE}
+ ${CMAKE_CURRENT_BINARY_DIR}/libmysql.version
+ @ONLY@
+ )
+ SET(VERSION_SCRIPT_LINK_FLAGS
+ "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/libmysql.version")
+ ENDIF()
+
+ENDIF()
+
+
SET(CLIENT_SOURCES
get_password.c
libmysql.c
@@ -146,6 +308,7 @@ SET(CLIENT_SOURCES
../sql/net_serv.cc
../sql-common/pack.c
../sql/password.c
+ ${CLIENT_SOURCES_EXTRA}
)
ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
DTRACE_INSTRUMENT(clientlib)
@@ -193,13 +356,13 @@ IF(NOT DISABLE_SHARED)
OUTPUT_NAME mysqlclient
VERSION "${OS_SHARED_LIB_VERSION}"
SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
- IF(LINK_FLAG_NO_UNDEFINED)
+ IF(LINK_FLAG_NO_UNDEFINED OR VERSION_SCRIPT_LINK_FLAGS)
GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
IF(NOT libmysql_link_flag)
SET(libmysql_link_flags)
ENDIF()
SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
- "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED}")
+ "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED} ${VERSION_SCRIPT_LINK_FLAGS}")
ENDIF()
# clean direct output needs to be set several targets have the same name
#(mysqlclient in this case)