12
12
# You should have received a copy of the GNU General Public License
13
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")
18
ADD_DEFINITIONS(-D_WIN32 -D_LIB)
20
# Bug 19424 - InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C)
21
# Removing Win64 compiler optimizations for all innodb/mem/* files.
22
IF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
23
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/storage/innobase/mem/mem0mem.c
24
${CMAKE_SOURCE_DIR}/storage/innobase/mem/mem0pool.c
25
PROPERTIES COMPILE_FLAGS -Od)
26
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
28
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
29
${CMAKE_SOURCE_DIR}/storage/innobase/include
30
${CMAKE_SOURCE_DIR}/storage/innobase/handler
31
${CMAKE_SOURCE_DIR}/sql
32
${CMAKE_SOURCE_DIR}/regex
33
${CMAKE_SOURCE_DIR}/extra/yassl/include)
35
SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
36
buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
37
data/data0data.c data/data0type.c
38
dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c
40
eval/eval0eval.c eval/eval0proc.c
43
fut/fut0fut.c fut/fut0lst.c
44
ha/ha0ha.c ha/hash0hash.c ha/ha0storage.c
46
pars/lexyy.c pars/pars0grm.c pars/pars0opt.c pars/pars0pars.c pars/pars0sym.c
47
lock/lock0lock.c lock/lock0iter.c
48
log/log0log.c log/log0recv.c
50
mem/mem0mem.c mem/mem0pool.c
51
mtr/mtr0log.c mtr/mtr0mtr.c
52
os/os0file.c os/os0proc.c os/os0sync.c os/os0thread.c
53
page/page0cur.c page/page0page.c page/page0zip.c
55
handler/ha_innodb.cc handler/handler0alter.cc handler/i_s.cc handler/mysql_addons.cc
57
rem/rem0cmp.c rem/rem0rec.c
58
row/row0ext.c row/row0ins.c row/row0merge.c row/row0mysql.c
59
row/row0purge.c row/row0row.c row/row0sel.c row/row0uins.c
60
row/row0umod.c row/row0undo.c row/row0upd.c row/row0vers.c
61
srv/srv0que.c srv/srv0srv.c srv/srv0start.c
62
sync/sync0arr.c sync/sync0rw.c sync/sync0sync.c
64
trx/trx0i_s.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c
65
trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
67
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c ut/ut0wqueue.c)
14
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
# This is the CMakeLists for InnoDB Plugin
18
# The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD
19
# property will not be set
20
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
22
# When PROJECT is defined, a separate .sln file will be generated.
23
# PROJECT (INNODB_PLUGIN)
25
MESSAGE(STATUS "Enter InnoDB ...")
26
MESSAGE(STATUS "INNODB_DYNAMIC_PLUGIN: " ${INNODB_DYNAMIC_PLUGIN})
28
# Print out CMake info
29
MESSAGE(STATUS "CMAKE_GENERATOR: " ${CMAKE_GENERATOR})
30
MESSAGE(STATUS "CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR})
32
# Print out system information
33
MESSAGE(STATUS "CMAKE_SYSTEM: " ${CMAKE_SYSTEM})
34
MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: " ${CMAKE_SYSTEM_PROCESSOR})
35
MESSAGE(STATUS "UNIX: " ${UNIX})
36
MESSAGE(STATUS "WIN32: " ${WIN32})
38
IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
40
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
42
MESSAGE(STATUS "WIN64: " ${WIN64})
43
MESSAGE(STATUS "MSVC: " ${MSVC})
46
include(CheckTypeSize)
48
# Currently, the checked results are not used.
49
CHECK_TYPE_SIZE(int SIZEOF_INT)
50
CHECK_TYPE_SIZE(long SIZEOF_LONG)
51
CHECK_TYPE_SIZE(void* SIZEOF_VOID_P)
53
# Include directories under innobase
54
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include
55
${CMAKE_SOURCE_DIR}/storage/innobase/handler)
57
# Include directories under mysql
58
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
59
${CMAKE_SOURCE_DIR}/sql
60
${CMAKE_SOURCE_DIR}/regex
61
${CMAKE_SOURCE_DIR}/zlib
62
${CMAKE_SOURCE_DIR}/extra/yassl/include)
64
# Removing compiler optimizations for innodb/mem/* files on 64-bit Windows
65
# due to 64-bit compiler error, See MySQL Bug #19424, #36366, #34297
67
SET_SOURCE_FILES_PROPERTIES(mem/mem0mem.c mem/mem0pool.c
68
PROPERTIES COMPILE_FLAGS -Od)
69
ENDIF(MSVC AND $(WIN64))
71
SET(INNODB_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
72
buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
73
data/data0data.c data/data0type.c
74
dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c
76
eval/eval0eval.c eval/eval0proc.c
79
fut/fut0fut.c fut/fut0lst.c
80
ha/ha0ha.c ha/hash0hash.c ha/ha0storage.c
82
pars/lexyy.c pars/pars0grm.c pars/pars0opt.c pars/pars0pars.c pars/pars0sym.c
83
lock/lock0lock.c lock/lock0iter.c
84
log/log0log.c log/log0recv.c
86
mem/mem0mem.c mem/mem0pool.c
87
mtr/mtr0log.c mtr/mtr0mtr.c
88
os/os0file.c os/os0proc.c os/os0sync.c os/os0thread.c
89
page/page0cur.c page/page0page.c page/page0zip.c
91
handler/ha_innodb.cc handler/handler0alter.cc handler/i_s.cc handler/mysql_addons.cc
93
rem/rem0cmp.c rem/rem0rec.c
94
row/row0ext.c row/row0ins.c row/row0merge.c row/row0mysql.c row/row0purge.c row/row0row.c
95
row/row0sel.c row/row0uins.c row/row0umod.c row/row0undo.c row/row0upd.c row/row0vers.c
96
srv/srv0que.c srv/srv0srv.c srv/srv0start.c
97
sync/sync0arr.c sync/sync0rw.c sync/sync0sync.c
99
trx/trx0i_s.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c
100
trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
102
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c
103
ut/ut0list.c ut/ut0wqueue.c)
69
105
IF(NOT SOURCE_SUBLIBS)
70
ADD_LIBRARY(innobase ${INNOBASE_SOURCES})
71
ADD_DEPENDENCIES(innobase GenError)
72
SET_TARGET_PROPERTIES(innobase PROPERTIES COMPILE_FLAGS "-DMYSQL_SERVER")
74
IF(INNODB_DYNAMIC_PLUGIN)
75
# The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD property
77
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
78
ADD_LIBRARY(ha_innodb SHARED ${INNOBASE_SOURCES} ha_innodb.def handler/win_delay_loader.cc)
79
ADD_DEPENDENCIES(ha_innodb GenError mysqld)
80
# If build type is not specified as Release, default to Debug
81
# This is a workaround to a problem in CMake 2.6, which does not
82
# set the path of mysqld.lib correctly
83
IF(CMAKE_BUILD_TYPE MATCHES Release)
84
SET(CMAKE_BUILD_TYPE "Release")
85
ELSE(CMAKE_BUILD_TYPE MATCHES Release)
86
SET(CMAKE_BUILD_TYPE "Debug")
87
ENDIF(CMAKE_BUILD_TYPE MATCHES Release)
88
TARGET_LINK_LIBRARIES(ha_innodb strings zlib)
89
TARGET_LINK_LIBRARIES(ha_innodb ${CMAKE_SOURCE_DIR}/sql/${CMAKE_BUILD_TYPE}/mysqld.lib)
90
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES OUTPUT_NAME ha_innodb)
91
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/MAP /MAPINFO:EXPORTS")
92
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/ENTRY:\"_DllMainCRTStartup@12\"")
93
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN")
94
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/DELAYLOAD:mysqld.exe")
95
ENDIF(INNODB_DYNAMIC_PLUGIN)
106
# INNODB_RW_LOCKS_USE_ATOMICS may be defined only if HAVE_WINDOWS_ATOMICS is defined.
107
# Windows Interlocked functions require Windows 2000 or newer operating system
108
ADD_DEFINITIONS(-D_WIN32 -DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION)
109
ADD_LIBRARY(innobase STATIC ${INNODB_SOURCES})
110
# Require mysqld_error.h, which is built as part of the GenError
111
ADD_DEPENDENCIES(innobase GenError)
112
# only set MYSQL_SERVER for the builtin engine, not the plugin
113
SET_TARGET_PROPERTIES(innobase PROPERTIES COMPILE_FLAGS "-DMYSQL_SERVER")
115
# Dynamic plugin ha_innodb.dll
116
IF(INNODB_DYNAMIC_PLUGIN)
117
ADD_LIBRARY(ha_innodb SHARED ${INNODB_SOURCES} ha_innodb.def handler/win_delay_loader.cc)
118
# Require mysqld_error.h, which is built as part of the GenError
119
# Also require mysqld.lib, which is built as part of the mysqld
120
ADD_DEPENDENCIES(ha_innodb GenError mysqld)
122
TARGET_LINK_LIBRARIES(ha_innodb ${CMAKE_SOURCE_DIR}/sql/\$\(OutDir\)/mysqld.lib)
123
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES OUTPUT_NAME ha_innodb)
124
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/MAP /MAPINFO:EXPORTS")
125
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/ENTRY:\"_DllMainCRTStartup@12\"")
126
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN")
127
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/DELAYLOAD:mysqld.exe")
128
ENDIF(INNODB_DYNAMIC_PLUGIN)
97
129
ENDIF(NOT SOURCE_SUBLIBS)
131
MESSAGE(STATUS "Exit InnoDB ...")