summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@montyprogram.com>2011-01-29 18:51:12 +0100
committerVladislav Vaintroub <wlad@montyprogram.com>2011-01-29 18:51:12 +0100
commitb19e99865ccf3e946ebe59bf09add8e0452904ac (patch)
tree23cb9e8176ef9d0e276b47d197e11d195b2ecafb /CMakeLists.txt
parent3edf4dcd5a36be8d5acc94e0c5e29e77e47cd15b (diff)
downloadmariadb-git-b19e99865ccf3e946ebe59bf09add8e0452904ac.tar.gz
MWL#55 : cherrypick MySQL 5.5 CMake/build improvements in order
to be able to build MSI based installer
Diffstat (limited to 'CMakeLists.txt')
-rwxr-xr-xCMakeLists.txt209
1 files changed, 73 insertions, 136 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8d918a4a71e..f00b53b9abb 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,25 +17,55 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
IF(COMMAND cmake_policy)
cmake_policy(SET CMP0005 NEW)
ENDIF(COMMAND cmake_policy)
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/win/cmake)
PROJECT(MySql)
+include(package_name)
+include(mysql_version)
+include(mysql_add_executable)
+include(install_macros)
+include(install_layout)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include)
+
+# Hardcode WITH_XXX_STORAGE_ENGINE to ON for storage engines that go into the
+# distributable package, this is temporary solution to get rid of configure.js stuff,
+# 5.5 will handle it more nicely.
+
+SET(WITH_ARCHIVE_STORAGE_ENGINE 1 CACHE BOOL "Include archive storage engine")
+SET(WITH_BLACKHOLE_STORAGE_ENGINE 1 CACHE BOOL "Include blockhole storage engine")
+SET(WITH_FEDERATEDX_STORAGE_ENGINE 1 CACHE BOOL "Include federatedx storage engine")
+SET(WITH_PARTITION_STORAGE_ENGINE 1 CACHE BOOL "Include partition storage engine")
+SET(WITH_ARIA_STORAGE_ENGINE 1 CACHE BOOL "Include aria storage engine")
+SET(WITH_PBXT_STORAGE_ENGINE 1 CACHE BOOL "Include pbxt storage engine")
+SET(WITH_XTRADB_STORAGE_ENGINE 1 CACHE BOOL "Include xtradb storage engine")
+IF(WIN32)
+ LINK_LIBRARIES(ws2_32)
+ # This reads user configuration, generated by configure.js.
+ INCLUDE(win/configure.data OPTIONAL)
+ENDIF()
-# 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)
+ ${CMAKE_BINARY_DIR}/include/mysql_version.h @ONLY)
+
+# Speed up multiprocessor build
+IF (MSVC_VERSION GREATER 1400)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
+ENDIF()
+
+SET(CMAKE_INSTALL_PREFIX "C:/MariaDB${MYSQL_BASE_VERSION}")
+SET(INSTALL_ROOT "${CMAKE_INSTALL_PREFIX}")
# 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(-DDEFAULT_MYSQL_HOME="${INSTALL_ROOT}")
+ADD_DEFINITIONS(-DDEFAULT_BASEDIR="${INSTALL_ROOT}")
+ADD_DEFINITIONS(-DMYSQL_DATADIR="data")
+ADD_DEFINITIONS(-DDEFAULT_CHARSET_HOME="${INSTALL_ROOT}")
ADD_DEFINITIONS(-DPACKAGE=mysql)
ADD_DEFINITIONS(-DSHAREDIR="share")
ADD_DEFINITIONS(-DPLUGINDIR="lib/plugin")
@@ -46,15 +76,15 @@ 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)
+ ${CMAKE_BINARY_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)
+ ${CMAKE_BINARY_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)
+ ${CMAKE_BINARY_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)
+ ${CMAKE_BINARY_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)
+ ${CMAKE_BINARY_DIR}/support-files/my-small.ini @ONLY)
ADD_DEFINITIONS(-D__NT__)
@@ -303,7 +333,7 @@ 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)
+ ${CMAKE_BINARY_DIR}/sql/sql_builtin.cc @ONLY)
# Add subdirectories for storage engines
SET (ENGINE_BUILD_TYPE "STATIC")
@@ -330,12 +360,14 @@ ADD_SUBDIRECTORY(extra/yassl)
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
ADD_SUBDIRECTORY(extra/libevent)
ADD_SUBDIRECTORY(extra)
-ADD_SUBDIRECTORY(client)
ADD_SUBDIRECTORY(sql)
+ADD_SUBDIRECTORY(client)
ADD_SUBDIRECTORY(server-tools/instance-manager)
ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY(libservices)
ADD_SUBDIRECTORY(tests)
+ADD_SUBDIRECTORY(mysql-test)
+ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(unittest/mytap)
ADD_SUBDIRECTORY(unittest/mysys)
IF(WITH_EMBEDDED_SERVER)
@@ -343,126 +375,31 @@ IF(WITH_EMBEDDED_SERVER)
ADD_SUBDIRECTORY(libmysqld/examples)
ENDIF(WITH_EMBEDDED_SERVER)
ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
+IF(WIN32)
+ ADD_SUBDIRECTORY(win/upgrade_wizard)
+ ADD_SUBDIRECTORY(win/packaging)
+ENDIF()
-# Set up the installer
-SET(CPACK_PACKAGE_NAME "MariaDB")
-STRING(REPLACE "-MariaDB" "" CPACK_PACKAGE_VERSION ${VERSION})
-SET(CPACK_PACKAGE_VENDOR "Monty Program AB http://www.montyprogram.com")
-SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB")
-SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING)
-SET(CPACK_GENERATOR NSIS)
-
-# Use our own NSIS template
-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/win/cmake" ${CMAKE_MODULE_PATH})
-
-# Installer components and grouping
-SET(CPACK_COMPONENT_GROUP_SERVER_DESCRIPTION "The files necessary for running the MariaDB server.")
-SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Files used in development on the MariaDB server.")
-SET(CPACK_ALL_INSTALL_TYPES Normal Development)
-SET(CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "MariaDB server")
-SET(CPACK_COMPONENT_RUNTIME_DESCRIPTION "The server itself. You want to install this one.")
-SET(CPACK_COMPONENT_RUNTIME_GROUP "Server")
-SET(CPACK_COMPONENT_RUNTIME_INSTALL_TYPES Normal Development)
-SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Development headers")
-SET(CPACK_COMPONENT_HEADERS_DESCRIPTION "Header files for development on MariaDB.")
-SET(CPACK_COMPONENT_HEADERS_DEPENDS runtime)
-SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
-SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Development)
-SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded")
-SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Files for embedding MariaDB in other projects.")
-SET(CPACK_COMPONENT_EMBEDDED_DEPENDS headers)
-SET(CPACK_COMPONENT_EMBEDDED_GROUP "Development")
-SET(CPACK_COMPONENT_EMBEDDED_INSTALL_TYPES Development)
-SET(CPACK_COMPONENT_SCRIPTS_DISPLAY_NAME "Server scripts")
-SET(CPACK_COMPONENT_SCRIPTS_DESCRIPTION "SQL and Perl scripts to control and modify the server. You need a perl installation for some of these to work.")
-SET(CPACK_COMPONENT_SCRIPTS_DEPENDS runtime)
-SET(CPACK_COMPONENT_SCRIPTS_GROUP "Server")
-SET(CPACK_COMPONENT_SCRIPTS_INSTALL_TYPES Normal Development)
-SET(CPACK_COMPONENT_MYSQLTEST_DISPLAY_NAME "MariaDB test suite")
-SET(CPACK_COMPONENT_MYSQLTEST_DESCRIPTION "The MariaDB regression test suite.")
-SET(CPACK_COMPONENT_MYSQLTEST_DEPENDS runtime)
-SET(CPACK_COMPONENT_MYSQLTEST_GROUP "Testing")
-SET(CPACK_COMPONENT_MYSQLTEST_INSTALL_TYPES Normal Development)
-SET(CPACK_COMPONENT_SQLBENCH_DISPLAY_NAME "SQL Bench")
-SET(CPACK_COMPONENT_SQLBENCH_DESCRIPTION "The MariaDB benchmark suite.")
-SET(CPACK_COMPONENT_SQLBENCH_DEPENDS runtime)
-SET(CPACK_COMPONENT_SQLBENCH_GROUP "Testing")
-SET(CPACK_COMPONENT_SQLBENCH_INSTALL_TYPES Normal Development)
-
-# Add files to the installer
-INSTALL(FILES COPYING EXCEPTIONS-CLIENT DESTINATION .)
-INSTALL(FILES support-files/my-huge.ini support-files/my-innodb-heavy-4G.ini DESTINATION .)
-INSTALL(FILES support-files/my-large.ini support-files/my-medium.ini DESTINATION .)
-INSTALL(FILES support-files/my-small.ini DESTINATION .)
-INSTALL(FILES Docs/INSTALL-BINARY DESTINATION Docs)
-INSTALL(FILES COPYING DESTINATION Docs)
-FILE(GLOB headerfiles "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
-INSTALL(FILES ${headerfiles} DESTINATION include COMPONENT headers)
-INSTALL(FILES include/mysql/plugin.h DESTINATION include/mysql COMPONENT headers)
-INSTALL(FILES libmysql/libmysql.def DESTINATION include COMPONENT headers)
-
-# Handle the database files
-FILE(GLOB datafiles "${CMAKE_CURRENT_SOURCE_DIR}/win/data/mysql/*")
-INSTALL(FILES ${datafiles} DESTINATION data/clean/mysql)
-INSTALL(FILES win/data/aria_log.00000001 win/data/aria_log_control DESTINATION data/clean)
-INSTALL(DIRECTORY win/data/test DESTINATION data/clean)
-SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}
- IfFileExists '$INSTDIR\\\\data\\\\mysql\\\\db.frm' 0 CopyDatabaseFiles
- MessageBox MB_OK 'There are already database files present in the data directory. Clean database files are not written to the directory'
- GoTo EndCopyDatabaseFiles
- CopyDatabaseFiles:
- CopyFiles '$INSTDIR\\\\data\\\\clean\\\\*' '$INSTDIR\\\\data'
- EndCopyDatabaseFiles:")
-SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}
- MessageBox MB_OK 'This will not delete the database files in $INSTDIR\\\\data'")
-
-# Files in the share dir
-INSTALL(FILES sql/share/errmsg.txt DESTINATION share COMPONENT runtime)
-FILE(GLOB charsets sql/share/charsets/*)
-INSTALL(FILES ${charsets} DESTINATION share/charsets COMPONENT runtime)
-FILE(GLOB share_dirs sql/share/*/errmsg.sys)
-FOREACH(ERRMSGFILE ${share_dirs})
- STRING(REPLACE "//" "/" ERRMSGFILE ${ERRMSGFILE}) # Work around a cmake bug
- FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/sql/share ${ERRMSGFILE})
- STRING(REPLACE "/errmsg.sys" "" DIRNAME ${DIRNAME})
- INSTALL(FILES ${ERRMSGFILE} DESTINATION share/${DIRNAME} COMPONENT runtime)
-ENDFOREACH(ERRMSGFILE ${share_dirs})
-
-# MTR files
-FILE(GLOB_RECURSE testfiles mysql-test/*)
-FOREACH(testfile ${testfiles})
- FILE(RELATIVE_PATH dirname ${PROJECT_SOURCE_DIR} ${testfile})
- GET_FILENAME_COMPONENT(dirname ${dirname} PATH)
- GET_FILENAME_COMPONENT(filename ${testfile} NAME)
- GET_FILENAME_COMPONENT(ext ${testfile} EXT)
- SET(ok "yes")
- IF (NOT "x_${ext}" STREQUAL "x_")
- # Test if this is one of the extensions we don't want to install
- STRING(TOLOWER ${ext} ext)
- IF(${ext} STREQUAL ".dir" OR ${ext} STREQUAL ".vcproj" OR ${ext} STREQUAL ".user" OR ${ext} STREQUAL ".ilk"
- OR ${ext} STREQUAL ".idb" OR ${ext} STREQUAL ".map" OR ${ext} STREQUAL ".gcov"
- OR ${ext} STREQUAL ".supp" OR ${ext} STREQUAL ".am" OR ${ext} STREQUAL ".stress")
- SET(ok "no")
- ENDIF()
- ENDIF(NOT "x_${ext}" STREQUAL "x_")
- IF (${ok} STREQUAL "yes")
- # Message("Dir: ${dirname}. File: ${filename}. Ext: ${ext}")
- INSTALL(FILES ${testfile} DESTINATION ${dirname} COMPONENT mysqltest)
- ENDIF(${ok} STREQUAL "yes")
-ENDFOREACH(testfile ${testfiles})
-
-# SQL Bench
-FILE(GLOB_RECURSE benchfiles sql-bench/*)
-FOREACH(testfile ${testfiles})
- FILE(RELATIVE_PATH dirname ${PROJECT_SOURCE_DIR} ${testfile})
- GET_FILENAME_COMPONENT(dirname ${dirname} PATH)
- GET_FILENAME_COMPONENT(filename ${testfile} NAME)
- IF(NOT ${dirname} STREQUAL "sql-bench" OR ${filename} STREQUAL "README")
- INSTALL(FILES ${testfile} DESTINATION ${dirname} COMPONENT sqlbench)
- ENDIF()
-ENDFOREACH(testfile ${testfiles})
-
-INCLUDE(InstallRequiredSystemLibraries)
-
+IF(WIN32)
+ SET(CPACK_GENERATOR "ZIP")
+ENDIF()
+INSTALL(FILES
+ ${CMAKE_BINARY_DIR}/support-files/my-huge.ini
+ ${CMAKE_BINARY_DIR}/support-files/my-large.ini
+ ${CMAKE_BINARY_DIR}/support-files/my-medium.ini
+ ${CMAKE_BINARY_DIR}/support-files/my-small.ini
+ DESTINATION .
+ COMPONENT IniFiles
+)
+INSTALL(FILES
+ COPYING
+ EXCEPTIONS-CLIENT
+ DESTINATION .
+ COMPONENT Readme
+)
+IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" STREQUAL "2.8.3")
+ # CMake bug#11452, only in 2.8.3
+ SET(CPACK_MONOLITHIC_INSTALL 1 CACHE INTERNAL "")
+ENDIF()
# This must always be the last line
INCLUDE(CPack)