~stewart/haildb/trunk

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Stewart Smith
  • Date: 2010-04-09 07:57:43 UTC
  • Revision ID: stewart@flamingspork.com-20100409075743-jfh1oml3el1uouvh
Embedded InnoDB 1.0.0 released

2009-04-21      The InnoDB Team

        Embedded InnoDB 1.0.0 released

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2009 Oracle/Innobase Oy
 
2
#
 
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.
 
6
 
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.
 
11
 
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
 
 
16
# This is the CMakeLists for Embedded InnoDB
 
17
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
 
18
 
 
19
PROJECT (EMBEDDED_INNODB)
 
20
 
 
21
# Set both LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH
 
22
SET (LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
 
23
SET (EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
 
24
 
 
25
# Print out CMake info
 
26
MESSAGE(STATUS "CMAKE_GENERATOR: " ${CMAKE_GENERATOR})
 
27
MESSAGE(STATUS "CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR})
 
28
 
 
29
# Print out system information
 
30
MESSAGE(STATUS "CMAKE_SYSTEM: " ${CMAKE_SYSTEM})
 
31
MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: " ${CMAKE_SYSTEM_PROCESSOR})
 
32
MESSAGE(STATUS "UNIX: " ${UNIX})
 
33
MESSAGE(STATUS "WIN32: " ${WIN32})
 
34
 
 
35
MESSAGE(STATUS "WIN64: " ${WIN64})
 
36
MESSAGE(STATUS "MSVC: " ${MSVC})
 
37
 
 
38
# Set the library version
 
39
SET(IB_MAJOR_VERSION 1)
 
40
SET(IB_MINOR_VERSION 0)
 
41
SET(IB_PATCH_VERSION 0)
 
42
 
 
43
SET(IB_LANG "english")
 
44
 
 
45
# Check for programs required to build InnoDB e.g., Bison and Flex
 
46
FIND_PROGRAM(FLEX flex)
 
47
FIND_PROGRAM(BISON bison)
 
48
 
 
49
include(CheckTypeSize)
 
50
CHECK_TYPE_SIZE(char SIZEOF_CHAR)
 
51
CHECK_TYPE_SIZE("unsigned char" SIZEOF_UCHAR)
 
52
CHECK_TYPE_SIZE(short SIZEOF_SHORT)
 
53
CHECK_TYPE_SIZE("unsigned short" SIZEOF_USHORT)
 
54
CHECK_TYPE_SIZE(int SIZEOF_INT)
 
55
CHECK_TYPE_SIZE("unsigned int" SIZEOF_UINT)
 
56
CHECK_TYPE_SIZE(long SIZEOF_LONG)
 
57
CHECK_TYPE_SIZE("unsigned long" SIZEOF_ULONG)
 
58
CHECK_TYPE_SIZE("long long int" SIZEOF_LONG_LONG)
 
59
CHECK_TYPE_SIZE("unsigned long long int" SIZEOF_ULONG_LONG)
 
60
CHECK_TYPE_SIZE(char* SIZEOF_CHARP)
 
61
CHECK_TYPE_SIZE(void* SIZEOF_VOIDP)
 
62
CHECK_TYPE_SIZE(off_t SIZEOF_OFF_T)
 
63
CHECK_TYPE_SIZE(int8_t HAVE_INT8_T)
 
64
CHECK_TYPE_SIZE(uint8_t HAVE_UINT8_T)
 
65
CHECK_TYPE_SIZE(int16_t HAVE_INT16_T)
 
66
CHECK_TYPE_SIZE(uint16_t HAVE_UINT16_T)
 
67
CHECK_TYPE_SIZE(int32_t HAVE_INT32_T)
 
68
CHECK_TYPE_SIZE(uint32_t HAVE_UINT32_T)
 
69
CHECK_TYPE_SIZE(int64_t HAVE_INT64_T)
 
70
CHECK_TYPE_SIZE(uint64_t HAVE_UINT64_T)
 
71
 
 
72
include(CheckIncludeFiles)
 
73
CHECK_INCLUDE_FILES(alloca.h HAVE_ALLOCA_H)
 
74
CHECK_INCLUDE_FILES(assert.h HAVE_ASSERT_H)
 
75
CHECK_INCLUDE_FILES(atomic.h HAVE_ATOMIC_H)
 
76
CHECK_INCLUDE_FILES(ctype.h  HAVE_CTYPE_H)
 
77
CHECK_INCLUDE_FILES(dirent.h HAVE_DIRENT_H)
 
78
CHECK_INCLUDE_FILES(errno.h HAVE_ERRNO_H)
 
79
CHECK_INCLUDE_FILES(fcntl.h HAVE_FCNTL_H)
 
80
CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H)
 
81
CHECK_INCLUDE_FILES(libintl.h HAVE_LIBINTL_H)
 
82
CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
 
83
CHECK_INCLUDE_FILES(math.h HAVE_MATH_H)
 
84
CHECK_INCLUDE_FILES(pthread.h HAVE_PTHREAD_H)
 
85
CHECK_INCLUDE_FILES(sched.h HAVE_SCHED_H)
 
86
CHECK_INCLUDE_FILES(stdarg.h HAVE_STDARG_H)
 
87
CHECK_INCLUDE_FILES(stddef.h HAVE_STDDEF_H)
 
88
CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
 
89
CHECK_INCLUDE_FILES(stdio.h HAVE_STDIO_H)
 
90
CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H)
 
91
CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
 
92
CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H)
 
93
CHECK_INCLUDE_FILES(sys/ipc.h sys/HAVE_IPC_H)
 
94
CHECK_INCLUDE_FILES(sys/mman.h sys/HAVE_MMAN_H)
 
95
CHECK_INCLUDE_FILES(sys/resource.h sys/HAVE_RESOURCE_H)
 
96
CHECK_INCLUDE_FILES(sys/shm.h sys/HAVE_SHM_H)
 
97
CHECK_INCLUDE_FILES(sys/stat.h sys/HAVE_STAT_H)
 
98
CHECK_INCLUDE_FILES(sys/time.h sys/HAVE_TIME_H)
 
99
CHECK_INCLUDE_FILES(sys/types.h sys/HAVE_TYPES_H)
 
100
CHECK_INCLUDE_FILES(sys/utsname.h sys/HAVE_UTSNAME_H)
 
101
CHECK_INCLUDE_FILES(time.h HAVE_TIME_H)
 
102
CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
 
103
CHECK_INCLUDE_FILES(valgrind/memcheck.h HAVE_MEMCHECK_H)
 
104
CHECK_INCLUDE_FILES(zlib.h HAVE_ZLIB_H)
 
105
 
 
106
include(CheckLibraryExists)
 
107
CHECK_LIBRARY_EXISTS(m floor "" HAVE_MATH)
 
108
CHECK_LIBRARY_EXISTS(z inflate "" HAVE_ZLIB)
 
109
CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_PTHREAD)
 
110
 
 
111
Include(CheckFunctionExists)
 
112
CHECK_FUNCTION_EXISTS(bcmp HAVE_BCMP)
 
113
CHECK_FUNCTION_EXISTS(fcntl HAVE_FCNTL)
 
114
CHECK_FUNCTION_EXISTS(finite HAVE_FINITE)
 
115
CHECK_FUNCTION_EXISTS(fsync HAVE_FSYNC)
 
116
CHECK_FUNCTION_EXISTS(ftruncate HAVE_FTRUNCATE)
 
117
CHECK_FUNCTION_EXISTS(getcwd HAVE_GETCWD)
 
118
CHECK_FUNCTION_EXISTS(getrusage HAVE_GETRUSAGE)
 
119
CHECK_FUNCTION_EXISTS(index HAVE_INDEX)
 
120
CHECK_FUNCTION_EXISTS(localtime_r HAVE_LOCALTIME_R)
 
121
CHECK_FUNCTION_EXISTS(locking HAVE_LOCKING)
 
122
CHECK_FUNCTION_EXISTS(memcpy HAVE_MEMCPY)
 
123
CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE)
 
124
CHECK_FUNCTION_EXISTS(perror HAVE_PERROR)
 
125
CHECK_FUNCTION_EXISTS(pread HAVE_PREAD)
 
126
CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
 
127
CHECK_FUNCTION_EXISTS(getpagesize HAVE_GETPAGESIZE)
 
128
CHECK_FUNCTION_EXISTS(pthread_attr_setstacksize HAVE_PTHREAD_ATTR_SETSTACKSIZE)
 
129
CHECK_FUNCTION_EXISTS(pthread_setprio HAVE_PTHREAD_SETPRIO)
 
130
CHECK_FUNCTION_EXISTS(rename HAVE_RENAME)
 
131
CHECK_FUNCTION_EXISTS(rint HAVE_RINT)
 
132
CHECK_FUNCTION_EXISTS(shmget HAVE_SHMGET)
 
133
CHECK_FUNCTION_EXISTS(shmat HAVE_SHMAT)
 
134
CHECK_FUNCTION_EXISTS(shmdt HAVE_SHMDT)
 
135
CHECK_FUNCTION_EXISTS(shmctl HAVE_SHMCTL)
 
136
CHECK_FUNCTION_EXISTS(sleep HAVE_SLEEP)
 
137
CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
 
138
CHECK_FUNCTION_EXISTS(stpcpy HAVE_STPCPY)
 
139
CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
 
140
CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR)
 
141
CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)
 
142
CHECK_FUNCTION_EXISTS(strtoul HAVE_STRTOUL)
 
143
CHECK_FUNCTION_EXISTS(tell HAVE_TELL)
 
144
 
 
145
# Checks for Solaris 10+ atomic functions
 
146
IF(CMAKE_SYSTEM_NAME MATCHES "Solaris")
 
147
        CHECK_FUNCTION_EXISTS(atomic_cas_ulong HAVE_ATOMIC_CAS_ULONG)
 
148
        CHECK_FUNCTION_EXISTS(atomic_cas_32 HAVE_ATOMIC_CAS_32)
 
149
        CHECK_FUNCTION_EXISTS(atomic_cas_64 HAVE_ATOMIC_CAS_64)
 
150
        CHECK_FUNCTION_EXISTS(atomic_add_long HAVE_ATOMIC_ADD_LONG)
 
151
 
 
152
        IF(DEFINED HAVE_ATOMIC_CAS_ULONG
 
153
           AND DEFINED HAVE_ATOMIC_CAS_32
 
154
           AND DEFINED HAVE_ATOMIC_CAS_64
 
155
           AND DEFINED HAVE_ATOMIC_ADD_LONG)
 
156
                SET(HAVE_SOLARIS_ATOMICS TRUE)
 
157
        ENDIF(DEFINED HAVE_ATOMIC_CAS_ULONG
 
158
              AND DEFINED HAVE_ATOMIC_CAS_32
 
159
              AND DEFINED HAVE_ATOMIC_CAS_64
 
160
              AND DEFINED HAVE_ATOMIC_ADD_LONG)
 
161
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Solaris")
 
162
 
 
163
SET(CMAKE_EXTRA_INCLUDE_FILES pthread.h)
 
164
CHECK_TYPE_SIZE(pthread_t SIZEOF_PTHREAD_T)
 
165
SET(CMAKE_EXTRA_INCLUDE_FILES)
 
166
 
 
167
# Include directories under innobase
 
168
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
 
169
 
 
170
SET(INNODB_SOURCES      btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c
 
171
                        btr/btr0sea.c buf/buf0buddy.c buf/buf0buf.c
 
172
                        buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
 
173
                        data/data0data.c data/data0type.c
 
174
                        dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c
 
175
                        dict/dict0load.c dict/dict0mem.c
 
176
                        dyn/dyn0dyn.c
 
177
                        eval/eval0eval.c eval/eval0proc.c
 
178
                        fil/fil0fil.c
 
179
                        fsp/fsp0fsp.c
 
180
                        fut/fut0fut.c fut/fut0lst.c
 
181
                        ha/ha0ha.c ha/hash0hash.c ha/ha0storage.c
 
182
                        ibuf/ibuf0ibuf.c
 
183
                        pars/lexyy.c pars/pars0grm.c pars/pars0opt.c
 
184
                        pars/pars0pars.c pars/pars0sym.c
 
185
                        lock/lock0lock.c lock/lock0iter.c
 
186
                        log/log0log.c log/log0recv.c
 
187
                        mach/mach0data.c
 
188
                        mem/mem0mem.c
 
189
                        mtr/mtr0log.c mtr/mtr0mtr.c
 
190
                        os/os0file.c os/os0proc.c os/os0sync.c os/os0thread.c
 
191
                        page/page0cur.c page/page0page.c page/page0zip.c
 
192
                        que/que0que.c
 
193
                        read/read0read.c
 
194
                        rem/rem0cmp.c rem/rem0rec.c
 
195
                        row/row0ext.c row/row0ins.c row/row0merge.c
 
196
                        row/row0purge.c row/row0row.c row/row0prebuilt.c
 
197
                        row/row0sel.c row/row0uins.c row/row0umod.c
 
198
                        row/row0undo.c row/row0upd.c row/row0vers.c
 
199
                        srv/srv0que.c srv/srv0srv.c srv/srv0start.c
 
200
                        sync/sync0arr.c sync/sync0rw.c sync/sync0sync.c
 
201
                        thr/thr0loc.c
 
202
                        trx/trx0purge.c trx/trx0rec.c
 
203
                        trx/trx0roll.c trx/trx0rseg.c
 
204
                        trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
 
205
                        usr/usr0sess.c ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c
 
206
                        ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c
 
207
                        ddl/ddl0ddl.c
 
208
                        api/api0api.c api/api0misc.c api/api0ucode.c
 
209
                        api/api0cfg.c)
 
210
 
 
211
IF(DEFINED WIN32)
 
212
 
 
213
        ADD_DEFINITIONS("-D__WIN__ -D_WINDOWS -D_CRT_SECURE_NO_DEPRECATE")
 
214
 
 
215
        # Check for 64 bit platform
 
216
        IF(CMAKE_SIZEOF_VOIDP MATCHES 8)
 
217
                SET(ARCH "amd64") 
 
218
                ADD_DEFINITIONS("-D_WIN64")
 
219
        ELSE(CMAKE_SIZEOF_VOIDP MATCHES 8)
 
220
                SET(ARCH "x86")
 
221
                ADD_DEFINITIONS("-D_WIN32")
 
222
        ENDIF(CMAKE_SIZEOF_VOIDP MATCHES 8)
 
223
 
 
224
        SET(CMAKE_EXE_LINKER_FLAGS 
 
225
                "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
 
226
 
 
227
        SET(CMAKE_EXE_LINKER_FLAGS
 
228
                "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
 
229
 
 
230
        # Removing compiler optimizations for innodb/mem/* files
 
231
        # on 64-bit Windows due to 64-bit compiler error, See MySQL
 
232
        # Bug #19424, #36366, #34297
 
233
        IF(ARCH MATCHES "amd64")
 
234
                SET_SOURCE_FILES_PROPERTIES(mem/mem0mem.c 
 
235
                        PROPERTIES COMPILE_FLAGS -Od)
 
236
        ENDIF(ARCH MATCHES "amd64")
 
237
 
 
238
        # By default we use the Windows InterLocked functions
 
239
        # Windows Interlocked functions require Windows 2000 or newer
 
240
        # operating systems
 
241
        ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS
 
242
                        -DINNODB_RW_LOCKS_USE_ATOMICS)
 
243
 
 
244
        # Windows we always build a DLL
 
245
        ADD_LIBRARY(innodb SHARED ${INNODB_SOURCES} win/innodb.def)
 
246
ELSEIF(DEFINED UNIX)
 
247
        IF(CMAKE_BUILD_TYPE MATCHES debug)
 
248
                ADD_DEFINITIONS(-g -Wall -DUNIV_DEBUG)
 
249
        ELSEIF(CMAKE_BUILD_TYPE MATCHES release)
 
250
                ADD_DEFINITIONS(-O2)
 
251
        ELSE(CMAKE_BUILD_TYPE MATCHES debug)
 
252
                ADD_DEFINITIONS(-g -Wall -Werror)
 
253
        ENDIF(CMAKE_BUILD_TYPE MATCHES debug)
 
254
 
 
255
        IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
 
256
 
 
257
                ADD_DEFINITIONS(-DUNIV_LINUX)
 
258
 
 
259
        ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Solaris"
 
260
                OR CMAKE_SYSTEM_NAME MATCHES "SunOS")
 
261
 
 
262
                ADD_DEFINITIONS(-DUNIV_SOLARIS)
 
263
 
 
264
        ELSEIF(CMAKE_SYSTEM_NAME MATCHES "aix")
 
265
 
 
266
                ADD_DEFINITIONS(-DUNIV_AIX)
 
267
 
 
268
        ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
 
269
        
 
270
        # Static build for now
 
271
        ADD_LIBRARY(innodb STATIC ${INNODB_SOURCES})
 
272
ENDIF(DEFINED WIN32)
 
273
 
 
274
SUBDIRS(tests)
 
275
 
 
276
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
 
277
                ${CMAKE_CURRENT_BINARY_DIR}/include/ib0config.h)
 
278
 
 
279
# List all install files and use CPack for packaging and installation
 
280
SET(CMAKE_INSTALL_PREFIX package)
 
281
 
 
282
INSTALL(FILES   include/api0api.h
 
283
                include/db0err.h
 
284
                include/ib0config.h
 
285
        DESTINATION include)
 
286
INSTALL(FILES   tests/ib_test1.c
 
287
                tests/ib_test2.c
 
288
                tests/ib_test3.c
 
289
                tests/ib_test5.c
 
290
                tests/ib_types.c
 
291
                tests/ib_perf1.c
 
292
                tests/ib_cursor.c
 
293
                tests/ib_shutdown.c
 
294
                tests/test0aux.c
 
295
                tests/test0aux.h
 
296
                tests/CMakeLists.txt
 
297
                tests/README
 
298
        DESTINATION examples)
 
299
INSTALL(TARGETS innodb
 
300
        RUNTIME DESTINATION bin
 
301
        LIBRARY DESTINATION lib
 
302
        ARCHIVE DESTINATION lib
 
303
)
 
 
b'\\ No newline at end of file'