mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
05c9acaaf7
options/settings 1. Changed the default value for socket on Windows to the windows default 2. Removed hard-coded trailing slashes from innodb_data_home_dir and innodb_log_group_name_dir. 3. Added extra backslashes to the innodb directory example 4. Made the tempdir platform "dependent" 5. Fixed the comments in the .ini files 6. Removed the tmpdir from the templates and the scripts
311 lines
14 KiB
CMake
Executable file
311 lines
14 KiB
CMake
Executable file
# 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
|
|
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
|
|
IF(COMMAND cmake_policy)
|
|
cmake_policy(SET CMP0005 NEW)
|
|
ENDIF(COMMAND cmake_policy)
|
|
|
|
PROJECT(MySql)
|
|
|
|
# This reads user configuration, generated by configure.js.
|
|
INCLUDE(win/configure.data)
|
|
|
|
# Hardcode support for CSV storage engine
|
|
SET(WITH_CSV_STORAGE_ENGINE TRUE)
|
|
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
|
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
|
|
|
|
# Set standard options
|
|
ADD_DEFINITIONS(-DHAVE_YASSL)
|
|
ADD_DEFINITIONS(-DCMAKE_CONFIGD)
|
|
ADD_DEFINITIONS(-DDEFAULT_MYSQL_HOME="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/")
|
|
ADD_DEFINITIONS(-DDEFAULT_BASEDIR="c:/Program Files/MySQL/")
|
|
ADD_DEFINITIONS(-DMYSQL_DATADIR="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/data")
|
|
ADD_DEFINITIONS(-DDEFAULT_CHARSET_HOME="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/")
|
|
ADD_DEFINITIONS(-DPACKAGE=mysql)
|
|
ADD_DEFINITIONS(-DSHAREDIR="share")
|
|
|
|
# Set debug options
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
|
|
|
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)
|
|
|
|
|
|
ADD_DEFINITIONS(-D__NT__)
|
|
|
|
IF(CYBOZU)
|
|
ADD_DEFINITIONS(-DCYBOZU)
|
|
ENDIF(CYBOZU)
|
|
|
|
IF(EXTRA_DEBUG)
|
|
ADD_DEFINITIONS(-D EXTRA_DEBUG)
|
|
ENDIF(EXTRA_DEBUG)
|
|
|
|
IF(ENABLED_DEBUG_SYNC)
|
|
ADD_DEFINITIONS(-D ENABLED_DEBUG_SYNC)
|
|
ENDIF(ENABLED_DEBUG_SYNC)
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
|
|
|
|
# in some places we use DBUG_OFF
|
|
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")
|
|
|
|
#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")
|
|
|
|
# Disable warnings in Visual Studio 8 and above
|
|
IF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
|
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
|
|
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
|
|
ENDIF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
|
|
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
|
# VS2003 has a bug that prevents linking mysqld with module definition file
|
|
# (/DEF option for linker). Linker would incorrectly complain about multiply
|
|
# defined symbols. Workaround is to disable dynamic plugins, so /DEF is not
|
|
# used.
|
|
MESSAGE("Warning: Building MySQL with Visual Studio 2003.NET is no more supported.")
|
|
MESSAGE("Please use a newer version of Visual Studio.")
|
|
SET(WITHOUT_DYNAMIC_PLUGINS TRUE)
|
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
|
|
|
# Settings for Visual Studio 7 and above.
|
|
IF(MSVC)
|
|
# 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})
|
|
|
|
# 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)
|
|
|
|
# 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)
|
|
ENDIF(MSVC)
|
|
|
|
IF(WIN32)
|
|
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
|
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
|
|
ENDIF(WIN32)
|
|
|
|
# default to x86 platform. We'll check for X64 in a bit
|
|
SET (PLATFORM X86)
|
|
|
|
# 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")
|
|
SET (PLATFORM X64)
|
|
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
|
|
|
IF(EMBED_MANIFESTS)
|
|
# 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.
|
|
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")
|
|
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")
|
|
|
|
IF(HAVE_MANIFEST_TOOL)
|
|
MESSAGE(STATUS "Found Mainfest Tool.")
|
|
ELSE(HAVE_MANIFEST_TOOL)
|
|
MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
|
|
ENDIF(HAVE_MANIFEST_TOOL)
|
|
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)
|
|
|
|
# Set the processor architecture.
|
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
|
SET(PROCESSOR_ARCH "amd64")
|
|
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)
|
|
|
|
# Figure out what engines to build and how (statically or dynamically),
|
|
# add preprocessor defines for storage engines.
|
|
IF(WITHOUT_DYNAMIC_PLUGINS)
|
|
MESSAGE("Dynamic plugins are disabled.")
|
|
ENDIF(WITHOUT_DYNAMIC_PLUGINS)
|
|
|
|
FILE(GLOB STORAGE_SUBDIRS storage/*)
|
|
FOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
|
FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/storage ${SUBDIR})
|
|
IF (EXISTS ${SUBDIR}/CMakeLists.txt)
|
|
# Check MYSQL_STORAGE_ENGINE macro is present
|
|
FILE(STRINGS ${SUBDIR}/CMakeLists.txt HAVE_STORAGE_ENGINE REGEX MYSQL_STORAGE_ENGINE)
|
|
IF(HAVE_STORAGE_ENGINE)
|
|
# Extract name of engine from HAVE_STORAGE_ENGINE
|
|
STRING(REGEX REPLACE ".*MYSQL_STORAGE_ENGINE\\((.*\)\\).*"
|
|
"\\1" ENGINE_NAME ${HAVE_STORAGE_ENGINE})
|
|
STRING(TOUPPER ${ENGINE_NAME} ENGINE)
|
|
STRING(TOLOWER ${ENGINE_NAME} ENGINE_LOWER)
|
|
|
|
SET(ENGINE_BUILD_TYPE "DYNAMIC")
|
|
# Read plug.in to find out if a plugin is mandatory and whether it supports
|
|
# build as shared library (dynamic).
|
|
IF(EXISTS ${SUBDIR}/plug.in)
|
|
FILE(READ ${SUBDIR}/plug.in PLUGIN_FILE_CONTENT)
|
|
STRING (REGEX MATCH "MYSQL_PLUGIN_DYNAMIC" MYSQL_PLUGIN_DYNAMIC ${PLUGIN_FILE_CONTENT})
|
|
STRING (REGEX MATCH "MYSQL_PLUGIN_MANDATORY" MYSQL_PLUGIN_MANDATORY ${PLUGIN_FILE_CONTENT})
|
|
STRING (REGEX MATCH "MYSQL_PLUGIN_STATIC" MYSQL_PLUGIN_STATIC ${PLUGIN_FILE_CONTENT})
|
|
|
|
IF(MYSQL_PLUGIN_MANDATORY)
|
|
SET(WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
|
ENDIF(MYSQL_PLUGIN_MANDATORY)
|
|
|
|
IF (WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
|
SET(ENGINE_BUILD_TYPE "STATIC")
|
|
ELSEIF(NOT WITHOUT_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_DYNAMIC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
|
SET(ENGINE_BUILD_TYPE "DYNAMIC")
|
|
ELSE(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
|
SET(ENGINE_BUILD_TYPE "NONE")
|
|
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
|
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${ENGINE_LOWER}_plugin")
|
|
SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${ENGINE_LOWER})
|
|
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE")
|
|
SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
|
SET (${ENGINE}_DIR ${DIRNAME})
|
|
ENDIF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
|
ENDIF(EXISTS ${SUBDIR}/plug.in)
|
|
|
|
IF(NOT ENGINE_BUILD_TYPE STREQUAL "NONE")
|
|
LIST(APPEND ${ENGINE_BUILD_TYPE}_ENGINE_DIRECTORIES ${SUBDIR})
|
|
ENDIF(NOT ENGINE_BUILD_TYPE STREQUAL "NONE")
|
|
|
|
ENDIF(HAVE_STORAGE_ENGINE)
|
|
ENDIF(EXISTS ${SUBDIR}/CMakeLists.txt)
|
|
ENDFOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
|
|
|
# Special handling for partition(not really pluggable)
|
|
IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
|
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_PARTITION_STORAGE_ENGINE")
|
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
|
|
ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
|
|
|
ADD_DEFINITIONS(${STORAGE_ENGINE_DEFS})
|
|
|
|
# Now write out our mysql_plugin_defs struct
|
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
|
|
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc @ONLY)
|
|
|
|
# Add subdirectories for storage engines
|
|
SET (ENGINE_BUILD_TYPE "STATIC")
|
|
FOREACH(DIR ${STATIC_ENGINE_DIRECTORIES})
|
|
ADD_SUBDIRECTORY(${DIR})
|
|
ENDFOREACH(DIR ${STATIC_ENGINE_DIRECTORIES})
|
|
|
|
SET (ENGINE_BUILD_TYPE "DYNAMIC")
|
|
FOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
|
|
ADD_SUBDIRECTORY(${DIR})
|
|
ENDFOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
|
|
|
|
|
|
# FIXME "debug" only needed if build type is "Debug", but
|
|
# CMAKE_BUILD_TYPE is not set during configure time.
|
|
ADD_SUBDIRECTORY(vio)
|
|
ADD_SUBDIRECTORY(dbug)
|
|
ADD_SUBDIRECTORY(strings)
|
|
ADD_SUBDIRECTORY(regex)
|
|
ADD_SUBDIRECTORY(mysys)
|
|
ADD_SUBDIRECTORY(scripts)
|
|
ADD_SUBDIRECTORY(zlib)
|
|
ADD_SUBDIRECTORY(extra/yassl)
|
|
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
|
|
ADD_SUBDIRECTORY(extra)
|
|
ADD_SUBDIRECTORY(client)
|
|
ADD_SUBDIRECTORY(sql)
|
|
ADD_SUBDIRECTORY(server-tools/instance-manager)
|
|
ADD_SUBDIRECTORY(libmysql)
|
|
ADD_SUBDIRECTORY(tests)
|
|
IF(WITH_EMBEDDED_SERVER)
|
|
ADD_SUBDIRECTORY(libmysqld)
|
|
ADD_SUBDIRECTORY(libmysqld/examples)
|
|
ENDIF(WITH_EMBEDDED_SERVER)
|
|
ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
|