Skip to content

Commit 2a0a7d3

Browse files
committed
Generate files for exported symbols, so we don't have to keep 2 different
files up to date. Symbols should be added (or removed) now in libmariadb/CMakeLists.txt
1 parent 1a190e3 commit 2a0a7d3

File tree

4 files changed

+237
-440
lines changed

4 files changed

+237
-440
lines changed

libmariadb/CMakeLists.txt

Lines changed: 236 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,238 @@ ADD_DEFINITIONS(-D HAVE_COMPRESS)
77
ADD_DEFINITIONS(-D LIBMARIADB)
88
ADD_DEFINITIONS(-D THREAD)
99

10+
SET(EXPORT_SYMBOLS
11+
load_defaults
12+
mariadb_connection
13+
mariadb_convert_string
14+
mariadb_deinitialize_ssl
15+
mariadb_dyncol_check
16+
mariadb_dyncol_column_cmp_named
17+
mariadb_dyncol_column_count
18+
mariadb_dyncol_create_many_named
19+
mariadb_dyncol_create_many_num
20+
mariadb_dyncol_exists_named
21+
mariadb_dyncol_exists_num
22+
mariadb_dyncol_free
23+
mariadb_dyncol_get_named
24+
mariadb_dyncol_get_num
25+
mariadb_dyncol_has_names
26+
mariadb_dyncol_json
27+
mariadb_dyncol_list_named
28+
mariadb_dyncol_list_num
29+
mariadb_dyncol_unpack
30+
mariadb_dyncol_update_many_named
31+
mariadb_dyncol_update_many_num
32+
mariadb_dyncol_val_double
33+
mariadb_dyncol_val_long
34+
mariadb_dyncol_val_str
35+
myodbc_remove_escape
36+
mysql_affected_rows
37+
mysql_autocommit
38+
mysql_autocommit_cont
39+
mysql_autocommit_start
40+
mysql_change_user
41+
mysql_change_user_cont
42+
mysql_change_user_start
43+
mysql_character_set_name
44+
mysql_client_find_plugin
45+
mysql_client_register_plugin
46+
mysql_close
47+
mysql_close_cont
48+
mysql_close_start
49+
mysql_commit
50+
mysql_commit_cont
51+
mysql_commit_start
52+
mysql_data_seek
53+
mysql_debug
54+
mysql_dump_debug_info
55+
mysql_dump_debug_info_cont
56+
mysql_dump_debug_info_start
57+
mysql_eof
58+
mysql_errno
59+
mysql_error
60+
mysql_escape_string
61+
mysql_fetch_field
62+
mysql_fetch_field_direct
63+
mysql_fetch_fields
64+
mysql_fetch_lengths
65+
mysql_fetch_row
66+
mysql_fetch_row_cont
67+
mysql_fetch_row_start
68+
mysql_field_count
69+
mysql_field_seek
70+
mysql_field_tell
71+
mysql_free_result
72+
mysql_free_result_cont
73+
mysql_free_result_start
74+
mysql_get_character_set_info
75+
mysql_get_charset_by_name
76+
mysql_get_charset_by_nr
77+
mysql_get_client_info
78+
mysql_get_client_version
79+
mysql_get_host_info
80+
mysql_get_parameters
81+
mysql_get_proto_info
82+
mysql_get_server_info
83+
mysql_get_server_name
84+
mysql_get_server_version
85+
mysql_get_socket
86+
mysql_get_ssl_cipher
87+
mysql_get_timeout_value
88+
mysql_get_timeout_value_ms
89+
mysql_hex_string
90+
mysql_info
91+
mysql_init
92+
mysql_insert_id
93+
mysql_kill
94+
mysql_kill_cont
95+
mysql_kill_start
96+
mysql_list_dbs
97+
mysql_list_dbs_cont
98+
mysql_list_dbs_start
99+
mysql_list_fields
100+
mysql_list_fields_cont
101+
mysql_list_fields_start
102+
mysql_list_processes
103+
mysql_list_processes_cont
104+
mysql_list_processes_start
105+
mysql_list_tables
106+
mysql_list_tables_cont
107+
mysql_list_tables_start
108+
mysql_load_plugin;
109+
mysql_load_plugin_v
110+
mysql_more_results
111+
mysql_next_result
112+
mysql_next_result_cont
113+
mysql_next_result_start
114+
mysql_num_fields
115+
mysql_num_rows
116+
mysql_options
117+
mysql_optionsv
118+
mysql_ping
119+
mysql_ping_cont
120+
mysql_ping_start
121+
mysql_ps_fetch_functions
122+
mysql_query
123+
mysql_query_cont
124+
mysql_query_start
125+
mysql_read_query_result
126+
mysql_read_query_result_cont
127+
mysql_read_query_result_start
128+
mysql_real_connect
129+
mysql_real_connect_cont
130+
mysql_real_connect_start
131+
mysql_real_escape_string
132+
mysql_real_query
133+
mysql_real_query_cont
134+
mysql_real_query_start
135+
mysql_refresh
136+
mysql_refresh_cont
137+
mysql_refresh_start
138+
mysql_rollback
139+
mysql_rollback_cont
140+
mysql_rollback_start
141+
mysql_row_seek
142+
mysql_row_tell
143+
mysql_select_db
144+
mysql_select_db_cont
145+
mysql_select_db_start
146+
mysql_send_query
147+
mysql_send_query_cont
148+
mysql_send_query_start
149+
mysql_server_end
150+
mysql_server_init
151+
mysql_set_character_set
152+
mysql_set_character_set_cont
153+
mysql_set_character_set_start
154+
mysql_set_local_infile_default
155+
mysql_set_local_infile_handler
156+
mysql_set_server_option
157+
mysql_set_server_option_cont
158+
mysql_set_server_option_start
159+
mysql_shutdown
160+
mysql_shutdown_cont
161+
mysql_shutdown_start
162+
mysql_sqlstate
163+
mysql_ssl_set
164+
mysql_stat
165+
mysql_stat_cont
166+
mysql_stat_start
167+
mysql_stmt_affected_rows
168+
mysql_stmt_attr_get
169+
mysql_stmt_attr_set
170+
mysql_stmt_bind_param
171+
mysql_stmt_bind_result
172+
mysql_stmt_close
173+
mysql_stmt_close_cont
174+
mysql_stmt_close_start
175+
mysql_stmt_data_seek
176+
mysql_stmt_errno
177+
mysql_stmt_error
178+
mysql_stmt_execute
179+
mysql_stmt_execute_cont
180+
mysql_stmt_execute_start
181+
mysql_stmt_fetch
182+
mysql_stmt_fetch_column
183+
mysql_stmt_fetch_cont
184+
mysql_stmt_fetch_start
185+
mysql_stmt_field_count
186+
mysql_stmt_free_result
187+
mysql_stmt_free_result_cont
188+
mysql_stmt_free_result_start
189+
mysql_stmt_init
190+
mysql_stmt_insert_id
191+
mysql_stmt_more_results
192+
mysql_stmt_next_result
193+
mysql_stmt_next_result_cont
194+
mysql_stmt_next_result_start
195+
mysql_stmt_num_rows
196+
mysql_stmt_param_count
197+
mysql_stmt_param_metadata
198+
mysql_stmt_prepare
199+
mysql_stmt_prepare_cont
200+
mysql_stmt_prepare_start
201+
mysql_stmt_reset
202+
mysql_stmt_reset_cont
203+
mysql_stmt_reset_start
204+
mysql_stmt_result_metadata
205+
mysql_stmt_row_seek
206+
mysql_stmt_row_tell
207+
mysql_stmt_send_long_data
208+
mysql_stmt_send_long_data_cont
209+
mysql_stmt_send_long_data_start
210+
mysql_stmt_sqlstate
211+
mysql_stmt_store_result
212+
mysql_stmt_store_result_cont
213+
mysql_stmt_store_result_start
214+
mysql_store_result
215+
mysql_store_result_cont
216+
mysql_store_result_start
217+
mysql_thread_end
218+
mysql_thread_id
219+
mysql_thread_init
220+
mysql_thread_safe
221+
mysql_use_result
222+
mysql_warning_count)
223+
224+
IF(WIN32)
225+
SET(EXPORT_CONTENT "EXPORTS\n")
226+
FOREACH(SYMBOL ${EXPORT_SYMBOLS})
227+
SET(EXPORT_CONTENT "${EXPORT_CONTENT} ${SYMBOL}\n")
228+
ENDFOREACH()
229+
SET(EXPORT_FILE "${CMAKE_BINARY_DIR}/libmariadb/exports.def")
230+
SET(EXPORT_LINK ${EXPORT_FILE})
231+
ELSE()
232+
SET(EXPORT_CONTENT "{\nglobal:\n")
233+
FOREACH(SYMBOL ${EXPORT_SYMBOLS})
234+
SET(EXPORT_CONTENT "${EXPORT_CONTENT} ${SYMBOL}\\;\n")
235+
ENDFOREACH()
236+
SET(EXPORT_FILE "${CMAKE_BINARY_DIR}/libmariadb/exports.txt")
237+
SET(EXPORT_CONTENT "${EXPORT_CONTENT}local:\n *\\;\n}\\;")
238+
ENDIF()
239+
240+
FILE(WRITE ${EXPORT_FILE} ${EXPORT_CONTENT})
241+
10242
SET(LIBMARIADB_SOURCES
11243
array.c
12244
ma_dyncol.c
@@ -92,10 +324,6 @@ my_auth.c
92324
ma_secure.c
93325
)
94326

95-
IF(MSVC)
96-
SET(EXPORT_FILE libmariadb_exports.def)
97-
ENDIF()
98-
99327
IF(WIN32)
100328
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv)
101329
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES}
@@ -141,20 +369,20 @@ IF(UNIX)
141369
SET_TARGET_PROPERTIES(mariadb_obj PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
142370
ENDIF()
143371

144-
ADD_LIBRARY(mariadbclient STATIC $<TARGET_OBJECTS:mariadb_obj> ${EXPORT_FILE})
372+
ADD_LIBRARY(mariadbclient STATIC $<TARGET_OBJECTS:mariadb_obj> ${EXPORT_LINK})
145373
TARGET_LINK_LIBRARIES(mariadbclient ${SYSTEM_LIBS})
146374

147-
ADD_LIBRARY(libmariadb SHARED $<TARGET_OBJECTS:mariadb_obj> ${EXPORT_FILE})
375+
ADD_LIBRARY(libmariadb SHARED $<TARGET_OBJECTS:mariadb_obj> ${EXPORT_LINK})
148376
TARGET_LINK_LIBRARIES(libmariadb ${SYSTEM_LIBS})
149377
IF(UNIX)
150378
SET_TARGET_PROPERTIES(libmariadb PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
151379
ENDIF()
152380

153381
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
154382
TARGET_LINK_LIBRARIES (libmariadb "-Wl,--no-undefined")
155-
TARGET_LINK_LIBRARIES (libmariadb "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/version_script.txt")
383+
TARGET_LINK_LIBRARIES (libmariadb "-Wl,--version-script=${EXPORT_FILE}")
156384
TARGET_LINK_LIBRARIES (mariadbclient "-Wl,--no-undefined")
157-
TARGET_LINK_LIBRARIES (mariadbclient "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/version_script.txt")
385+
TARGET_LINK_LIBRARIES (mariadbclient "-Wl,--version-script=${EXPORT_FILE}")
158386
ENDIF()
159387

160388
SET_TARGET_PROPERTIES(libmariadb PROPERTIES PREFIX "")

0 commit comments

Comments
 (0)