diff options
Diffstat (limited to 'sql/CMakeLists.txt')
-rw-r--r-- | sql/CMakeLists.txt | 93 |
1 files changed, 58 insertions, 35 deletions
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index bab8e67fdac..d0a3e8a437a 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -36,31 +36,39 @@ IF(WITH_WSREP AND NOT EMBEDDED_LIBRARY) wsrep_plugin.cc service_wsrep.cc ) - SET(WSREP_LIB wsrep-lib wsrep_api_v26) + MYSQL_ADD_PLUGIN(wsrep ${WSREP_SOURCES} MANDATORY NOT_EMBEDDED EXPORT_SYMBOLS LINK_LIBRARIES wsrep-lib wsrep_api_v26) ELSE() - SET(WSREP_SOURCES wsrep_dummy.cc) + ADD_LIBRARY(wsrep STATIC wsrep_dummy.cc) + ADD_DEPENDENCIES(wsrep GenError) ENDIF() INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include -${CMAKE_SOURCE_DIR}/sql +${CMAKE_SOURCE_DIR}/sql ${PCRE_INCLUDES} ${ZLIB_INCLUDE_DIR} ${SSL_INCLUDE_DIRS} ${CMAKE_BINARY_DIR}/sql +${CMAKE_SOURCE_DIR}/tpool ) - - - - - ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h COMMAND gen_lex_token > lex_token.h DEPENDS gen_lex_token ) +ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy + COMMAND ${CMAKE_COMMAND} + "-DIN=${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.yy" + "-DOUT=${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy" + -P ${CMAKE_CURRENT_SOURCE_DIR}/gen_sql_yacc_ora_yy.cmake + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.yy +) + +ADD_CUSTOM_TARGET(gen_sql_yacc_ora_yy DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy) + ADD_DEFINITIONS(-DMYSQL_SERVER -DHAVE_EVENT_SCHEDULER) IF(SSL_DEFINES) @@ -79,7 +87,8 @@ SET (SQL_SOURCE item_create.cc item_func.cc item_geofunc.cc item_row.cc item_strfunc.cc item_subselect.cc item_sum.cc item_timefunc.cc key.cc log.cc lock.cc - log_event.cc rpl_record.cc rpl_reporting.cc + log_event.cc log_event_server.cc + rpl_record.cc rpl_reporting.cc log_event_old.cc rpl_record_old.cc mf_iocache.cc my_decimal.cc mysqld.cc net_serv.cc keycaches.cc @@ -110,15 +119,17 @@ SET (SQL_SOURCE rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_data_objects.cc event_queue.cc event_db_repository.cc sql_tablespace.cc events.cc ../sql-common/my_user.c - partition_info.cc rpl_utility.cc rpl_injector.cc sql_locale.cc + partition_info.cc rpl_utility.cc rpl_utility_server.cc + rpl_injector.cc sql_locale.cc rpl_rli.cc rpl_mi.cc sql_servers.cc sql_audit.cc sql_connect.cc scheduler.cc sql_partition_admin.cc sql_profile.cc event_parse_data.cc sql_alter.cc sql_signal.cc mdl.cc sql_admin.cc transaction.cc sys_vars.cc sql_truncate.cc datadict.cc - sql_reload.cc item_inetfunc.cc + sql_reload.cc # added in MariaDB: + grant.cc sql_explain.cc sql_analyze_stmt.cc sql_join_cache.cc @@ -133,6 +144,8 @@ SET (SQL_SOURCE semisync.cc semisync_master.cc semisync_slave.cc semisync_master_ack_receiver.cc sql_type.cc sql_mode.cc sql_type_json.cc + sql_type_string.cc + sql_type_geom.cc item_windowfunc.cc sql_window.cc sql_cte.cc item_vers.cc @@ -141,14 +154,13 @@ SET (SQL_SOURCE opt_split.cc rowid_filter.cc rowid_filter.h opt_trace.cc - ${WSREP_SOURCES} table_cache.cc encryption.cc temporary_tables.cc proxy_protocol.cc backup.cc xa.cc - ${CMAKE_CURRENT_BINARY_DIR}/sql_builtin.cc ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h + ${GEN_SOURCES} ${MYSYS_LIBWRAP_SOURCE} ) @@ -163,6 +175,7 @@ IF ((CMAKE_SYSTEM_NAME MATCHES "Linux" OR ENDIF() SET(SQL_SOURCE ${SQL_SOURCE} threadpool_generic.cc) SET(SQL_SOURCE ${SQL_SOURCE} threadpool_common.cc) + MYSQL_ADD_PLUGIN(thread_pool_info thread_pool_info.cc DEFAULT STATIC_ONLY NOT_EMBEDDED) ENDIF() IF(WIN32) @@ -176,13 +189,24 @@ RECOMPILE_FOR_EMBEDDED) ADD_LIBRARY(sql STATIC ${SQL_SOURCE}) DTRACE_INSTRUMENT(sql) -TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS} - mysys mysys_ssl dbug strings vio pcre +TARGET_LINK_LIBRARIES(sql + mysys mysys_ssl dbug strings vio pcre2-8 + tpool ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} - ${WSREP_LIB} ${SSL_LIBRARIES} ${LIBSYSTEMD}) +IF(TARGET pcre2) + ADD_DEPENDENCIES(sql pcre2) +ENDIF() + +FOREACH(se aria partition perfschema sql_sequence wsrep) + # These engines are used directly in sql sources. + IF(TARGET ${se}) + TARGET_LINK_LIBRARIES(sql ${se}) + ENDIF() +ENDFOREACH() + IF(WIN32) SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc) TARGET_LINK_LIBRARIES(sql psapi) @@ -266,6 +290,9 @@ IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS) SET_TARGET_PROPERTIES(mysqld_import_lib PROPERTIES IMPORTED_LOCATION ${MYSQLD_LIB}) ENDIF() +ADD_LIBRARY(sql_builtins STATIC ${CMAKE_CURRENT_BINARY_DIR}/sql_builtin.cc) +TARGET_LINK_LIBRARIES(sql_builtins ${MYSQLD_STATIC_PLUGIN_LIBS}) + MYSQL_ADD_EXECUTABLE(mysqld ${MYSQLD_SOURCE} DESTINATION ${INSTALL_SBINDIR} COMPONENT Server) IF(APPLE) @@ -293,7 +320,8 @@ IF(NOT WITHOUT_DYNAMIC_PLUGINS) ENDIF() ENDIF(NOT WITHOUT_DYNAMIC_PLUGINS) -TARGET_LINK_LIBRARIES(mysqld LINK_PRIVATE sql) +TARGET_LINK_LIBRARIES(mysqld LINK_PRIVATE sql sql_builtins) + # Provide plugins with minimal set of libraries SET(INTERFACE_LIBS ${LIBRT}) @@ -352,8 +380,7 @@ IF (NOT BISON_FOUND) ELSE() BISON_TARGET(gen_sql_yacc ${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.yy ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc COMPILE_FLAGS "-p MYSQL") - - BISON_TARGET(gen_sql_yacc_ora ${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc_ora.yy ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc + BISON_TARGET(gen_sql_yacc_ora ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc COMPILE_FLAGS "-p ORA") ENDIF() @@ -381,6 +408,8 @@ ADD_CUSTOM_TARGET( ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc ) +ADD_DEPENDENCIES(GenServerSource gen_sql_yacc_ora_yy) + IF(WIN32 OR HAVE_DLOPEN AND NOT DISABLE_SHARED) ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def) SET_TARGET_PROPERTIES(udf_example PROPERTIES PREFIX "") @@ -404,16 +433,9 @@ ADD_CUSTOM_TARGET(distclean VERBATIM ) -IF(INSTALL_LAYOUT STREQUAL "STANDALONE") - -# Copy db.opt into data/test/ -SET(DBOPT_FILE ${CMAKE_SOURCE_DIR}/support-files/db.opt ) -INSTALL(FILES ${DBOPT_FILE} DESTINATION data/test COMPONENT DataFiles) - -# Install initial database on windows -IF(WIN32 AND TARGET mysqld AND NOT CMAKE_CROSSCOMPILING) - - IF(MSVC_IDE OR CMAKE_GENERATOR MATCHES "Xcode") +# Install initial database (default on windows, optional target elsewhere) +IF(TARGET mysqld AND NOT CMAKE_CROSSCOMPILING) + IF(GENERATOR_IS_MULTI_CONFIG) SET (CONFIG_PARAM -DCONFIG=${CMAKE_CFG_INTDIR}) ENDIF() MAKE_DIRECTORY(${CMAKE_CURRENT_BINARY_DIR}/data) @@ -432,15 +454,16 @@ IF(WIN32 AND TARGET mysqld AND NOT CMAKE_CROSSCOMPILING) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ DEPENDS mysqld ) + IF(WIN32) + SET(ALL_ON_WINDOWS ALL) + ELSE() + SET(ALL_ON_WINDOWS) + ENDIF() ADD_CUSTOM_TARGET(initial_database - ALL + ${ALL_ON_WINDOWS} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep ) -ELSE() - # Not windows or cross compiling, just install an empty directory - INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql COMPONENT DataFiles) -ENDIF(WIN32 AND TARGET mysqld AND NOT CMAKE_CROSSCOMPILING) -ENDIF(INSTALL_LAYOUT STREQUAL "STANDALONE") +ENDIF() IF(WIN32) SET(my_bootstrap_sql ${CMAKE_CURRENT_BINARY_DIR}/my_bootstrap.sql) |