| 1 |
# Copyright (C) 2006 MySQL AB |
| 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| 15 |
|
| 16 |
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR) |
| 17 |
|
| 18 |
PROJECT(MySql) |
| 19 |
|
| 20 |
# This reads user configuration, generated by configure.js. |
| 21 |
INCLUDE(win/configure.data) |
| 22 |
|
| 23 |
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in |
| 24 |
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY) |
| 25 |
|
| 26 |
# Set standard options |
| 27 |
ADD_DEFINITIONS(-DCMAKE_BUILD) |
| 28 |
ADD_DEFINITIONS(-DHAVE_YASSL) |
| 29 |
|
| 30 |
# Set debug options |
| 31 |
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS") |
| 32 |
|
| 33 |
# Note that some engines are always compiled in, MyISAM, MyISAMMRG, HEAP |
| 34 |
|
| 35 |
IF(WITH_ARCHIVE_STORAGE_ENGINE) |
| 36 |
ADD_DEFINITIONS(-DHAVE_ARCHIVE_DB) |
| 37 |
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE) |
| 38 |
|
| 39 |
IF(WITH_BERKELEY_STORAGE_ENGINE) |
| 40 |
ADD_DEFINITIONS(-DHAVE_BERKELEY_DB) |
| 41 |
ENDIF(WITH_BERKELEY_STORAGE_ENGINE) |
| 42 |
|
| 43 |
IF (WITH_BLACKHOLE_STORAGE_ENGINE) |
| 44 |
ADD_DEFINITIONS(-DHAVE_BLACKHOLE_DB) |
| 45 |
ENDIF (WITH_BLACKHOLE_STORAGE_ENGINE) |
| 46 |
|
| 47 |
IF(WITH_EXAMPLE_STORAGE_ENGINE) |
| 48 |
ADD_DEFINITIONS(-DHAVE_EXAMPLE_DB) |
| 49 |
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE) |
| 50 |
|
| 51 |
IF(WITH_FEDERATED_STORAGE_ENGINE) |
| 52 |
ADD_DEFINITIONS(-DHAVE_FEDERATED_DB) |
| 53 |
ENDIF(WITH_FEDERATED_STORAGE_ENGINE) |
| 54 |
|
| 55 |
IF(WITH_INNOBASE_STORAGE_ENGINE) |
| 56 |
ADD_DEFINITIONS(-DHAVE_INNOBASE_DB) |
| 57 |
ENDIF(WITH_INNOBASE_STORAGE_ENGINE) |
| 58 |
|
| 59 |
SET(localstatedir "C:\\mysql\\data") |
| 60 |
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh |
| 61 |
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY) |
| 62 |
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh |
| 63 |
${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.ini @ONLY) |
| 64 |
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-large.cnf.sh |
| 65 |
${CMAKE_SOURCE_DIR}/support-files/my-large.ini @ONLY) |
| 66 |
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-medium.cnf.sh |
| 67 |
${CMAKE_SOURCE_DIR}/support-files/my-medium.ini @ONLY) |
| 68 |
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh |
| 69 |
${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY) |
| 70 |
|
| 71 |
IF(__NT__) |
| 72 |
ADD_DEFINITIONS(-D__NT__) |
| 73 |
ENDIF(__NT__) |
| 74 |
|
| 75 |
# in some places we use DBUG_OFF |
| 76 |
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF") |
| 77 |
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF") |
| 78 |
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF") |
| 79 |
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF") |
| 80 |
|
| 81 |
#TODO: update the code and remove the disabled warnings |
| 82 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805") |
| 83 |
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805") |
| 84 |
|
| 85 |
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8") |
| 86 |
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996") |
| 87 |
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996") |
| 88 |
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996") |
| 89 |
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996") |
| 90 |
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996") |
| 91 |
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996") |
| 92 |
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8") |
| 93 |
|
| 94 |
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR |
| 95 |
CMAKE_GENERATOR MATCHES "Visual Studio 8") |
| 96 |
|
| 97 |
# replace /MDd with /MTd |
| 98 |
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) |
| 99 |
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO}) |
| 100 |
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) |
| 101 |
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT ${CMAKE_C_FLAGS_DEBUG_INIT}) |
| 102 |
|
| 103 |
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) |
| 104 |
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}) |
| 105 |
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) |
| 106 |
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT}) |
| 107 |
|
| 108 |
# generate map files, set stack size (see bug#20815) |
| 109 |
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS") |
| 110 |
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576") |
| 111 |
|
| 112 |
# remove support for Exception handling |
| 113 |
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
| 114 |
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
| 115 |
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT ${CMAKE_CXX_FLAGS_INIT}) |
| 116 |
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT}) |
| 117 |
|
| 118 |
# Disable automatic manifest generation. |
| 119 |
STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS |
| 120 |
${CMAKE_EXE_LINKER_FLAGS}) |
| 121 |
# Explicitly disable it since it is the default for newer versions of VS |
| 122 |
STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS}) |
| 123 |
IF(NOT tmp_manifest) |
| 124 |
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") |
| 125 |
ENDIF(NOT tmp_manifest) |
| 126 |
|
| 127 |
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR |
| 128 |
CMAKE_GENERATOR MATCHES "Visual Studio 8") |
| 129 |
|
| 130 |
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE") |
| 131 |
|
| 132 |
# This definition is necessary to work around a bug with Intellisense described |
| 133 |
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper |
| 134 |
# debugger functionality. |
| 135 |
IF(CMAKE_SIZEOF_VOID_P MATCHES 8) |
| 136 |
MESSAGE(STATUS "Detected 64-bit platform.") |
| 137 |
ADD_DEFINITIONS("-D_WIN64") |
| 138 |
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8) |
| 139 |
|
| 140 |
IF(EMBED_MANIFESTS) |
| 141 |
# Search for the tools (mt, makecat, signtool) necessary for embedding |
| 142 |
# manifests and signing executables with the MySQL AB authenticode cert. |
| 143 |
# |
| 144 |
# CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH, |
| 145 |
# CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and the system PATH) followed |
| 146 |
# by the listed paths which are the current possible defaults and should be |
| 147 |
# updated when necessary. |
| 148 |
# |
| 149 |
# The custom manifests are designed to be compatible with all mt versions. |
| 150 |
# The MySQL AB Authenticode certificate is available only internally. |
| 151 |
# Others should store a single signing certificate in a local cryptographic |
| 152 |
# service provider and alter the signtool command as necessary. |
| 153 |
FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt |
| 154 |
PATHS |
| 155 |
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin" |
| 156 |
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin" |
| 157 |
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin") |
| 158 |
FIND_PROGRAM(HAVE_CATALOG_TOOL NAMES makecat |
| 159 |
PATHS |
| 160 |
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin") |
| 161 |
FIND_PROGRAM(HAVE_SIGN_TOOL NAMES signtool |
| 162 |
PATHS |
| 163 |
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin" |
| 164 |
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin") |
| 165 |
|
| 166 |
IF(HAVE_MANIFEST_TOOL) |
| 167 |
MESSAGE(STATUS "Found Mainfest Tool.") |
| 168 |
ELSE(HAVE_MANIFEST_TOOL) |
| 169 |
MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.") |
| 170 |
ENDIF(HAVE_MANIFEST_TOOL) |
| 171 |
IF(HAVE_CATALOG_TOOL) |
| 172 |
MESSAGE(STATUS "Found Catalog Tool.") |
| 173 |
ELSE(HAVE_CATALOG_TOOL) |
| 174 |
MESSAGE(FATAL_ERROR "Catalog tool, makecat.exe, can't be found.") |
| 175 |
ENDIF(HAVE_CATALOG_TOOL) |
| 176 |
IF(HAVE_SIGN_TOOL) |
| 177 |
MESSAGE(STATUS "Found Sign Tool. Embedding custom manifests and signing executables.") |
| 178 |
ELSE(HAVE_SIGN_TOOL) |
| 179 |
MESSAGE(FATAL_ERROR "Sign tool, signtool.exe, can't be found.") |
| 180 |
ENDIF(HAVE_SIGN_TOOL) |
| 181 |
|
| 182 |
# Set the processor architecture. |
| 183 |
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") |
| 184 |
SET(PROCESSOR_ARCH "amd64") |
| 185 |
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") |
| 186 |
SET(PROCESSOR_ARCH "X86") |
| 187 |
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") |
| 188 |
ENDIF(EMBED_MANIFESTS) |
| 189 |
|
| 190 |
# FIXME "debug" only needed if build type is "Debug", but |
| 191 |
# CMAKE_BUILD_TYPE is not set during configure time. |
| 192 |
ADD_SUBDIRECTORY(vio) |
| 193 |
ADD_SUBDIRECTORY(dbug) |
| 194 |
ADD_SUBDIRECTORY(strings) |
| 195 |
ADD_SUBDIRECTORY(regex) |
| 196 |
ADD_SUBDIRECTORY(mysys) |
| 197 |
ADD_SUBDIRECTORY(scripts) |
| 198 |
ADD_SUBDIRECTORY(zlib) |
| 199 |
ADD_SUBDIRECTORY(extra/yassl) |
| 200 |
ADD_SUBDIRECTORY(extra/yassl/taocrypt) |
| 201 |
ADD_SUBDIRECTORY(extra) |
| 202 |
ADD_SUBDIRECTORY(heap) |
| 203 |
ADD_SUBDIRECTORY(myisam) |
| 204 |
ADD_SUBDIRECTORY(myisammrg) |
| 205 |
ADD_SUBDIRECTORY(client) |
| 206 |
IF(WITH_BERKELEY_STORAGE_ENGINE) |
| 207 |
ADD_SUBDIRECTORY(bdb) |
| 208 |
ENDIF(WITH_BERKELEY_STORAGE_ENGINE) |
| 209 |
IF(WITH_INNOBASE_STORAGE_ENGINE) |
| 210 |
ADD_SUBDIRECTORY(innobase) |
| 211 |
ENDIF(WITH_INNOBASE_STORAGE_ENGINE) |
| 212 |
ADD_SUBDIRECTORY(sql) |
| 213 |
ADD_SUBDIRECTORY(sql/examples) |
| 214 |
ADD_SUBDIRECTORY(server-tools/instance-manager) |
| 215 |
ADD_SUBDIRECTORY(libmysql) |
| 216 |
ADD_SUBDIRECTORY(tests) |