CMakeLists.txt 9.39 KB
Newer Older
unknown's avatar
unknown committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Copyright (C) 2006 MySQL AB
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

16 17
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)

unknown's avatar
unknown committed
18 19 20 21 22 23 24 25 26
PROJECT(MySql)

# This reads user configuration, generated by configure.js.
INCLUDE(win/configure.data)

CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
               ${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)

# Set standard options
unknown's avatar
unknown committed
27 28
ADD_DEFINITIONS(-DCMAKE_BUILD)
ADD_DEFINITIONS(-DHAVE_YASSL)
unknown's avatar
unknown committed
29

unknown's avatar
unknown committed
30 31
# Set debug options
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
unknown's avatar
unknown committed
32

33
# Note that some engines are always compiled in, MyISAM, MyISAMMRG, HEAP
unknown's avatar
unknown committed
34

35 36 37 38
IF(WITH_COMMUNITY_FEATURES)
  ADD_DEFINITIONS(-DENABLED_PROFILING -DCOMMUNITY_SERVER)
ENDIF(WITH_COMMUNITY_FEATURES)

unknown's avatar
unknown committed
39
IF(WITH_ARCHIVE_STORAGE_ENGINE)
unknown's avatar
unknown committed
40
  ADD_DEFINITIONS(-DHAVE_ARCHIVE_DB)
unknown's avatar
unknown committed
41 42 43
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)

IF(WITH_BERKELEY_STORAGE_ENGINE)
unknown's avatar
unknown committed
44
  ADD_DEFINITIONS(-DHAVE_BERKELEY_DB)
unknown's avatar
unknown committed
45 46 47
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)

IF (WITH_BLACKHOLE_STORAGE_ENGINE)
unknown's avatar
unknown committed
48
  ADD_DEFINITIONS(-DHAVE_BLACKHOLE_DB)
unknown's avatar
unknown committed
49 50
ENDIF (WITH_BLACKHOLE_STORAGE_ENGINE)

51
IF(WITH_EXAMPLE_STORAGE_ENGINE)
unknown's avatar
unknown committed
52
  ADD_DEFINITIONS(-DHAVE_EXAMPLE_DB)
53 54 55
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)

IF(WITH_FEDERATED_STORAGE_ENGINE)
unknown's avatar
unknown committed
56
  ADD_DEFINITIONS(-DHAVE_FEDERATED_DB)
57 58 59
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)

IF(WITH_INNOBASE_STORAGE_ENGINE)
unknown's avatar
unknown committed
60
  ADD_DEFINITIONS(-DHAVE_INNOBASE_DB)
61 62
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)

unknown's avatar
unknown committed
63 64 65 66 67 68 69 70 71 72 73 74 75
SET(localstatedir "C:\\mysql\\data")
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
               ${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh
               ${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.ini @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-large.cnf.sh
               ${CMAKE_SOURCE_DIR}/support-files/my-large.ini @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-medium.cnf.sh
               ${CMAKE_SOURCE_DIR}/support-files/my-medium.ini @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh
               ${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY)

IF(__NT__)
unknown's avatar
unknown committed
76
  ADD_DEFINITIONS(-D__NT__)
unknown's avatar
unknown committed
77 78 79
ENDIF(__NT__)

# in some places we use DBUG_OFF
unknown's avatar
unknown committed
80 81 82 83
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
unknown's avatar
unknown committed
84

85 86 87 88
#TODO: update the code and remove the disabled warnings
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805")

unknown's avatar
unknown committed
89
# Disable warnings in Visual Studio 8 and above
90
IF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
unknown's avatar
unknown committed
91 92
    SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
unknown's avatar
unknown committed
93
    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
unknown's avatar
unknown committed
94 95
    SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
    SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
unknown's avatar
unknown committed
96
    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
97
ENDIF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
98

unknown's avatar
unknown committed
99
# Settings for Visual Studio 7 and above.  
100
IF(MSVC)
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
    # replace /MDd with /MTd
    STRING(REPLACE "/MD"  "/MT"  CMAKE_C_FLAGS_RELEASE          ${CMAKE_C_FLAGS_RELEASE})
    STRING(REPLACE "/MD"  "/MT"  CMAKE_C_FLAGS_RELWITHDEBINFO   ${CMAKE_C_FLAGS_RELWITHDEBINFO})
    STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG            ${CMAKE_C_FLAGS_DEBUG})
    STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT       ${CMAKE_C_FLAGS_DEBUG_INIT})

    STRING(REPLACE "/MD"  "/MT"  CMAKE_CXX_FLAGS_RELEASE        ${CMAKE_CXX_FLAGS_RELEASE})
    STRING(REPLACE "/MD"  "/MT"  CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
    STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG          ${CMAKE_CXX_FLAGS_DEBUG})
    STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT     ${CMAKE_CXX_FLAGS_DEBUG_INIT})

    # generate map files, set stack size (see bug#20815)
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")

    # remove support for Exception handling
    STRING(REPLACE "/GX"   "" CMAKE_CXX_FLAGS            ${CMAKE_CXX_FLAGS})
    STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS            ${CMAKE_CXX_FLAGS})
    STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT       ${CMAKE_CXX_FLAGS_INIT})
    STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
121 122 123 124 125 126 127
    
    # Mark 32 bit executables large address aware so they can 
    # use > 2GB address space
    IF(CMAKE_SIZEOF_VOID_P MATCHES 4)
      SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
    ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 4)
    
128 129 130 131 132 133 134 135
    # Disable automatic manifest generation.
    STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS 
    	   ${CMAKE_EXE_LINKER_FLAGS})
    # Explicitly disable it since it is the default for newer versions of VS
    STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
    IF(NOT tmp_manifest)
        SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
    ENDIF(NOT tmp_manifest)
136
ENDIF(MSVC)
unknown's avatar
unknown committed
137

unknown's avatar
unknown committed
138
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
unknown's avatar
unknown committed
139

140 141 142 143 144 145 146 147
# This definition is necessary to work around a bug with Intellisense described
# here: http://tinyurl.com/2cb428.  Syntax highlighting is important for proper
# debugger functionality.
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
    MESSAGE(STATUS "Detected 64-bit platform.")
    ADD_DEFINITIONS("-D_WIN64")
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)

148
IF(EMBED_MANIFESTS)
149 150 151 152 153 154 155 156 157 158 159 160
    # Search for the tools (mt, makecat, signtool) necessary for embedding
    # manifests and signing executables with the MySQL AB authenticode cert.
    #
    # CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH, 
    # CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and the system PATH) followed 
    # by the listed paths which are the current possible defaults and should be
    # updated when necessary.  
    # 
    # The custom manifests are designed to be compatible with all mt versions.
    # The MySQL AB Authenticode certificate is available only internally.  
    # Others should store a single signing certificate in a local cryptographic
    # service provider and alter the signtool command as necessary.
161 162 163 164 165
    FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt
                 PATHS
                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin"
                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
166 167 168 169 170 171 172 173
    FIND_PROGRAM(HAVE_CATALOG_TOOL NAMES makecat
                 PATHS
                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin")
    FIND_PROGRAM(HAVE_SIGN_TOOL NAMES signtool
                 PATHS
                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")

174
    IF(HAVE_MANIFEST_TOOL)
175
        MESSAGE(STATUS "Found Mainfest Tool.")
176 177 178
    ELSE(HAVE_MANIFEST_TOOL)
        MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
    ENDIF(HAVE_MANIFEST_TOOL)
179 180 181 182 183 184 185 186 187 188 189
    IF(HAVE_CATALOG_TOOL)
        MESSAGE(STATUS "Found Catalog Tool.")
    ELSE(HAVE_CATALOG_TOOL)
        MESSAGE(FATAL_ERROR "Catalog tool, makecat.exe, can't be found.")
    ENDIF(HAVE_CATALOG_TOOL)
    IF(HAVE_SIGN_TOOL)
        MESSAGE(STATUS "Found Sign Tool. Embedding custom manifests and signing executables.")
    ELSE(HAVE_SIGN_TOOL)
        MESSAGE(FATAL_ERROR "Sign tool, signtool.exe, can't be found.")
    ENDIF(HAVE_SIGN_TOOL)

190 191
    # Set the processor architecture.
    IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
192
    	SET(PROCESSOR_ARCH "amd64") 
193 194 195 196 197
    ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
    	SET(PROCESSOR_ARCH "X86")
    ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
ENDIF(EMBED_MANIFESTS)

198 199
# FIXME "debug" only needed if build type is "Debug", but
# CMAKE_BUILD_TYPE is not set during configure time.
unknown's avatar
unknown committed
200 201 202 203 204
ADD_SUBDIRECTORY(vio)
ADD_SUBDIRECTORY(dbug)
ADD_SUBDIRECTORY(strings)
ADD_SUBDIRECTORY(regex)
ADD_SUBDIRECTORY(mysys)
205
ADD_SUBDIRECTORY(scripts)
206
ADD_SUBDIRECTORY(zlib)
unknown's avatar
unknown committed
207 208 209 210 211 212 213
ADD_SUBDIRECTORY(extra/yassl)
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
ADD_SUBDIRECTORY(extra)
ADD_SUBDIRECTORY(heap)
ADD_SUBDIRECTORY(myisam)
ADD_SUBDIRECTORY(myisammrg)
ADD_SUBDIRECTORY(client)
214
IF(WITH_BERKELEY_STORAGE_ENGINE)
unknown's avatar
unknown committed
215
  ADD_SUBDIRECTORY(bdb)
216 217
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
IF(WITH_INNOBASE_STORAGE_ENGINE)
218
  ADD_SUBDIRECTORY(innobase)
219
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
unknown's avatar
unknown committed
220 221 222 223 224
ADD_SUBDIRECTORY(sql)
ADD_SUBDIRECTORY(sql/examples)
ADD_SUBDIRECTORY(server-tools/instance-manager)
ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY(tests)