diff options
author | Sergei Golubchik <sergii@pisem.net> | 2013-01-29 15:10:47 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2013-01-29 15:10:47 +0100 |
commit | 0af4b6c6ee2b8a61823478c0a56ebdfa52cae3cc (patch) | |
tree | 7b24eb150b9cca718c88edaabbfc6c8bb16fd015 /libmysql/CMakeLists.txt | |
parent | cf20de000bdff07a34a373079991d24837423896 (diff) | |
parent | 52fbe44fbbe60ecaba6453884ec1ad32755d7a04 (diff) | |
download | mariadb-git-0af4b6c6ee2b8a61823478c0a56ebdfa52cae3cc.tar.gz |
5.5 merge
Diffstat (limited to 'libmysql/CMakeLists.txt')
-rw-r--r-- | libmysql/CMakeLists.txt | 173 |
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) |