~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/innobase/CMakeLists.txt

  • Committer: Monty Taylor
  • Date: 2009-08-12 06:25:19 UTC
  • mto: (1114.1.1 innodb-plugin-merge)
  • mto: This revision was merged to the branch mainline in revision 1183.
  • Revision ID: mordred@inaugust.com-20090812062519-cij02mrrunvnxblt
Tags: innodb-plugin-1.0.4
InnoDB Plugin 1.0.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 MySQL AB
2
 
 
1
# Copyright (C) 2009 Oracle/Innobase Oy
 
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; version 2 of the License.
11
11
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
15
 
 
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)
19
 
 
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)
27
 
 
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)
34
 
 
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 
39
 
                                         dyn/dyn0dyn.c 
40
 
                                         eval/eval0eval.c eval/eval0proc.c 
41
 
                                         fil/fil0fil.c 
42
 
                                         fsp/fsp0fsp.c
43
 
                                         fut/fut0fut.c fut/fut0lst.c 
44
 
                                         ha/ha0ha.c ha/hash0hash.c ha/ha0storage.c 
45
 
                                         ibuf/ibuf0ibuf.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 
49
 
                                         mach/mach0data.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 
54
 
                                         que/que0que.c 
55
 
                                         handler/ha_innodb.cc handler/handler0alter.cc handler/i_s.cc handler/mysql_addons.cc 
56
 
                                         read/read0read.c 
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 
63
 
                                         thr/thr0loc.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 
66
 
                                         usr/usr0sess.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
 
15
 
 
16
# This is the CMakeLists for InnoDB Plugin
 
17
 
 
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)
 
21
 
 
22
# When PROJECT is defined, a separate .sln file will be generated.
 
23
# PROJECT (INNODB_PLUGIN)
 
24
 
 
25
MESSAGE(STATUS "Enter InnoDB ...")
 
26
MESSAGE(STATUS "INNODB_DYNAMIC_PLUGIN: " ${INNODB_DYNAMIC_PLUGIN})
 
27
 
 
28
# Print out CMake info
 
29
MESSAGE(STATUS "CMAKE_GENERATOR: " ${CMAKE_GENERATOR})
 
30
MESSAGE(STATUS "CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR})
 
31
 
 
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})
 
37
 
 
38
IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
 
39
        SET(WIN64 TRUE)
 
40
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
 
41
 
 
42
MESSAGE(STATUS "WIN64: " ${WIN64})
 
43
MESSAGE(STATUS "MSVC: " ${MSVC})
 
44
 
 
45
# Check type sizes
 
46
include(CheckTypeSize)
 
47
 
 
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)
 
52
 
 
53
# Include directories under innobase
 
54
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include
 
55
                    ${CMAKE_SOURCE_DIR}/storage/innobase/handler)
 
56
 
 
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)
 
63
 
 
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
 
66
IF(MSVC AND $(WIN64))
 
67
        SET_SOURCE_FILES_PROPERTIES(mem/mem0mem.c mem/mem0pool.c
 
68
                                    PROPERTIES COMPILE_FLAGS -Od)
 
69
ENDIF(MSVC AND $(WIN64))
 
70
 
 
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
 
75
                        dyn/dyn0dyn.c
 
76
                        eval/eval0eval.c eval/eval0proc.c
 
77
                        fil/fil0fil.c
 
78
                        fsp/fsp0fsp.c
 
79
                        fut/fut0fut.c fut/fut0lst.c
 
80
                        ha/ha0ha.c ha/hash0hash.c ha/ha0storage.c
 
81
                        ibuf/ibuf0ibuf.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
 
85
                        mach/mach0data.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
 
90
                        que/que0que.c
 
91
                        handler/ha_innodb.cc handler/handler0alter.cc handler/i_s.cc handler/mysql_addons.cc
 
92
                        read/read0read.c
 
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
 
98
                        thr/thr0loc.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
 
101
                        usr/usr0sess.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)
68
104
 
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")
73
 
 
74
 
  IF(INNODB_DYNAMIC_PLUGIN)
75
 
    # The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD property
76
 
    # will not be set
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)
96
 
 
 
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")
 
114
 
 
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)
 
121
 
 
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)
 
130
 
 
131
MESSAGE(STATUS "Exit InnoDB ...")