diff options
author | Vladislav Vaintroub <wlad@montyprogram.com> | 2011-01-29 18:51:12 +0100 |
---|---|---|
committer | Vladislav Vaintroub <wlad@montyprogram.com> | 2011-01-29 18:51:12 +0100 |
commit | b19e99865ccf3e946ebe59bf09add8e0452904ac (patch) | |
tree | 23cb9e8176ef9d0e276b47d197e11d195b2ecafb /CMakeLists.txt | |
parent | 3edf4dcd5a36be8d5acc94e0c5e29e77e47cd15b (diff) | |
download | mariadb-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-x | CMakeLists.txt | 209 |
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) |