1 # Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
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.
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.
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
16 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
17 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
19 # Need to set USE_TLS, since __declspec(thread) approach to thread local
20 # storage does not work properly in DLLs.
22 ADD_DEFINITIONS(-DUSE_TLS)
25 ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY -DHAVE_DLOPEN)
27 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
28 ${CMAKE_SOURCE_DIR}/libmysqld
29 ${CMAKE_SOURCE_DIR}/libmysql
30 ${CMAKE_SOURCE_DIR}/sql
31 ${CMAKE_SOURCE_DIR}/regex
32 ${CMAKE_SOURCE_DIR}/extra/yassl/include
33 ${CMAKE_SOURCE_DIR}/zlib)
35 SET(GEN_SOURCES ${CMAKE_SOURCE_DIR}/sql/sql_yacc.cc
36 ${CMAKE_SOURCE_DIR}/sql/sql_yacc.h
37 ${CMAKE_SOURCE_DIR}/sql/message.h
38 ${CMAKE_SOURCE_DIR}/sql/message.rc
39 ${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
40 ${CMAKE_SOURCE_DIR}/sql/lex_hash.h)
42 SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED 1)
44 # Include and add the directory path
45 SET(SOURCE_SUBLIBS TRUE)
48 INCLUDE(${CMAKE_SOURCE_DIR}/zlib/CMakeLists.txt)
49 FOREACH(rpath ${ZLIB_SOURCES})
50 SET(LIB_SOURCES ${LIB_SOURCES} ../zlib/${rpath})
53 # FIXME only needed if build type is "Debug", but CMAKE_BUILD_TYPE is
54 # not set during configure time.
55 INCLUDE(${CMAKE_SOURCE_DIR}/dbug/CMakeLists.txt)
56 FOREACH(rpath ${DBUG_SOURCES})
57 SET(LIB_SOURCES ${LIB_SOURCES} ../dbug/${rpath})
60 INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/CMakeLists.txt)
61 FOREACH(rpath ${TAOCRYPT_SOURCES})
62 SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/taocrypt/${rpath})
65 INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/CMakeLists.txt)
66 FOREACH(rpath ${YASSL_SOURCES})
67 SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/${rpath})
70 INCLUDE(${CMAKE_SOURCE_DIR}/strings/CMakeLists.txt)
71 FOREACH(rpath ${STRINGS_SOURCES})
72 SET(LIB_SOURCES ${LIB_SOURCES} ../strings/${rpath})
75 INCLUDE(${CMAKE_SOURCE_DIR}/regex/CMakeLists.txt)
76 FOREACH(rpath ${REGEX_SOURCES})
77 SET(LIB_SOURCES ${LIB_SOURCES} ../regex/${rpath})
80 INCLUDE(${CMAKE_SOURCE_DIR}/mysys/CMakeLists.txt)
81 FOREACH(rpath ${MYSYS_SOURCES})
82 SET(LIB_SOURCES ${LIB_SOURCES} ../mysys/${rpath})
85 INCLUDE(${CMAKE_SOURCE_DIR}/vio/CMakeLists.txt)
86 FOREACH(rpath ${VIO_SOURCES})
87 SET(LIB_SOURCES ${LIB_SOURCES} ../vio/${rpath})
92 FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
93 STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
94 SET(ENGINE_DIR ${${ENGINE_LIB_UPPER}_DIR})
95 INCLUDE(${CMAKE_SOURCE_DIR}/storage/${ENGINE_DIR}/CMakeLists.txt)
96 FOREACH(rpath ${${ENGINE_LIB_UPPER}_SOURCES})
97 SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${ENGINE_DIR}/${rpath})
99 ENDFOREACH(ENGINE_LIB)
102 SET(SOURCE_SUBLIBS FALSE)
104 SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
105 ../libmysql/libmysql.c ../libmysql/errmsg.c ../client/get_password.c
106 ../sql-common/client.c ../sql-common/my_time.c
107 ../sql-common/my_user.c ../sql-common/pack.c
108 ../sql/password.c ../sql/discover.cc ../sql/derror.cc
109 ../sql/field.cc ../sql/field_conv.cc
110 ../sql/filesort.cc ../sql/gstream.cc ../sql/ha_partition.cc
111 ../sql/signal_handler.cc
112 ../sql/handler.cc ../sql/hash_filo.cc ../sql/hostname.cc
113 ../sql/init.cc ../sql/item_buff.cc ../sql/item_cmpfunc.cc
114 ../sql/item.cc ../sql/item_create.cc ../sql/item_func.cc
115 ../sql/item_geofunc.cc ../sql/item_row.cc ../sql/item_strfunc.cc
116 ../sql/item_subselect.cc ../sql/item_sum.cc ../sql/item_timefunc.cc
117 ../sql/item_xmlfunc.cc ../sql/key.cc ../sql/lock.cc ../sql/log.cc
118 ../sql/log_event.cc ../sql/mf_iocache.cc ../sql/my_decimal.cc
119 ../sql/net_serv.cc ../sql/opt_range.cc ../sql/opt_sum.cc
120 ../sql/parse_file.cc ../sql/procedure.cc ../sql/protocol.cc
121 ../sql/records.cc ../sql/repl_failsafe.cc ../sql/rpl_filter.cc
123 ../sql/rpl_injector.cc ../sql/set_var.cc ../sql/spatial.cc
124 ../sql/sp_cache.cc ../sql/sp.cc ../sql/sp_head.cc
125 ../sql/sp_pcontext.cc ../sql/sp_rcontext.cc ../sql/sql_acl.cc
126 ../sql/sql_analyse.cc ../sql/sql_base.cc ../sql/sql_cache.cc
127 ../sql/sql_class.cc ../sql/sql_crypt.cc ../sql/sql_cursor.cc
128 ../sql/sql_db.cc ../sql/sql_delete.cc ../sql/sql_derived.cc
129 ../sql/sql_do.cc ../sql/sql_error.cc ../sql/sql_handler.cc
130 ../sql/sql_help.cc ../sql/sql_insert.cc ../sql/sql_lex.cc
131 ../sql/sql_list.cc ../sql/sql_load.cc ../sql/sql_locale.cc
132 ../sql/sql_binlog.cc ../sql/sql_manager.cc ../sql/sql_map.cc
133 ../sql/sql_parse.cc ../sql/sql_partition.cc ../sql/sql_plugin.cc
135 ../sql/sql_prepare.cc ../sql/sql_rename.cc ../sql/sql_repl.cc
136 ../sql/sql_select.cc ../sql/sql_servers.cc
137 ../sql/sql_show.cc ../sql/sql_state.c ../sql/sql_string.cc
138 ../sql/sql_tablespace.cc ../sql/sql_table.cc ../sql/sql_test.cc
139 ../sql/sql_trigger.cc ../sql/sql_udf.cc ../sql/sql_union.cc
140 ../sql/sql_update.cc ../sql/sql_view.cc ../sql/sql_profile.cc
141 ../sql/strfunc.cc ../sql/table.cc ../sql/thr_malloc.cc
142 ../sql/time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc
143 ../sql/partition_info.cc ../sql/sql_connect.cc
144 ../sql/scheduler.cc ../sql/event_parse_data.cc
148 # Seems we cannot make a library without at least one source file. So use a
150 FILE(WRITE cmake_dummy.c " ")
152 # Tried use the correct ${GEN_SOURCES} as dependency, worked on Unix
153 # but not on Windows and Visual Studio generators. Likely because they
154 # are no real targets from the Visual Studio project files view. Added
155 # custom targets to "sql/CMakeLists.txt" and reference them here.
156 ADD_LIBRARY(mysqlserver STATIC ${LIBMYSQLD_SOURCES})
157 ADD_DEPENDENCIES(mysqlserver GenServerSource GenError)
158 TARGET_LINK_LIBRARIES(mysqlserver)
160 # Add any additional libraries requested by engine(s)
161 FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
162 STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
163 IF(${ENGINE_LIB_UPPER}_LIBS)
164 TARGET_LINK_LIBRARIES(mysqlserver ${${ENGINE_LIB_UPPER}_LIBS})
165 ENDIF(${ENGINE_LIB_UPPER}_LIBS)
166 ENDFOREACH(ENGINE_LIB)
168 ADD_LIBRARY(libmysqld SHARED cmake_dummy.c libmysqld.def)
169 ADD_DEPENDENCIES(libmysqld mysqlserver)
170 TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32)