diff options
author | Jonathan Perkin <jonathan.perkin@oracle.com> | 2010-05-12 12:51:23 +0100 |
---|---|---|
committer | Jonathan Perkin <jonathan.perkin@oracle.com> | 2010-05-12 12:51:23 +0100 |
commit | ce2aabb712622fa1e52d9f294f78f4def52a4c78 (patch) | |
tree | a78a148e61b420dbc018bdccd10f82401ea17468 | |
parent | 240176bfa3228316ac012575a924f3dad8f5bb3b (diff) | |
download | mariadb-git-ce2aabb712622fa1e52d9f294f78f4def52a4c78.tar.gz |
Changes to build using CMake according to existing release packages:
- Update/fix file layouts for each package type, add new types for
native package formats including deb, rpm and svr4.
- Build all plugins, including debug versions
- Update compiler flags to match current release
- Add missing @VAR@ expansions
- Install correct mysqclient library symlinks
- Fix icc/ia64 builds
- Fix install of libmysqld-debug
- Don't include mysql_embedded
- Remove unpackaged manual pages to avoid missing files warnings
- Don't install mtr's test suite
-rwxr-xr-x | CMakeLists.txt | 45 | ||||
-rw-r--r-- | cmake/build_configurations/mysql_release.cmake | 20 | ||||
-rwxr-xr-x | cmake/install_layout.cmake | 249 | ||||
-rw-r--r-- | cmake/install_macros.cmake | 33 | ||||
-rw-r--r-- | cmake/mysql_version.cmake | 12 | ||||
-rw-r--r-- | cmake/plugin.cmake | 1 | ||||
-rw-r--r-- | config.h.cmake | 1 | ||||
-rwxr-xr-x | libmysql/CMakeLists.txt | 34 | ||||
-rw-r--r-- | libmysqld/CMakeLists.txt | 2 | ||||
-rw-r--r-- | libmysqld/examples/CMakeLists.txt | 4 | ||||
-rw-r--r-- | man/CMakeLists.txt | 4 | ||||
-rw-r--r-- | mysql-test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | plugin/audit_null/CMakeLists.txt | 3 | ||||
-rw-r--r-- | plugin/daemon_example/CMakeLists.txt | 3 | ||||
-rw-r--r-- | plugin/fulltext/CMakeLists.txt | 4 | ||||
-rwxr-xr-x | scripts/CMakeLists.txt | 12 | ||||
-rw-r--r-- | scripts/mysqld_safe.sh | 2 | ||||
-rw-r--r-- | sql-bench/CMakeLists.txt | 9 | ||||
-rwxr-xr-x | sql/CMakeLists.txt | 3 | ||||
-rw-r--r-- | support-files/CMakeLists.txt | 18 |
20 files changed, 314 insertions, 146 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index d20939f33ac..889dc463769 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,8 +189,11 @@ ELSE() ENDIF() SET(DEFAULT_BASEDIR "${DEFAULT_MYSQL_HOME}") -SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH - "default MySQL data directory") +IF(INSTALL_MYSQLDATADIR MATCHES "^/.*") + SET(MYSQL_DATADIR ${INSTALL_MYSQLDATADIR} CACHE PATH "default MySQL data directory") +ELSE() + SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH "default MySQL data directory") +ENDIF() SET(DEFAULT_CHARSET_HOME "${DEFAULT_MYSQL_HOME}") SET(PLUGINDIR "${DEFAULT_MYSQL_HOME}/${INSTALL_PLUGINDIR}") IF(SYSCONFDIR) @@ -274,20 +277,28 @@ ELSE() SET(CPACK_GENERATOR "TGZ") ENDIF() INCLUDE(CPack) -INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL) -INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR}) IF(UNIX) - INSTALL(FILES Docs/INSTALL-BINARY DESTINATION - ${INSTALL_DOCREADMEDIR}) + INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL) +ENDIF() +# +# RPM installs documentation directly from the source tree +# +IF(NOT INSTALL_LAYOUT MATCHES "RPM") + INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL) + INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR}) + IF(UNIX) + INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR}) + ENDIF() + # MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory + SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") + MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) + INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} + PATTERN "INSTALL-BINARY" EXCLUDE + PATTERN "Makefile.*" EXCLUDE + PATTERN "glibc*" EXCLUDE + PATTERN "linuxthreads.txt" EXCLUDE + PATTERN "myisam.txt" EXCLUDE + PATTERN "mysql.info" EXCLUDE + PATTERN "sp-imp-spec.txt" EXCLUDE + ) ENDIF() -# MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory -SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied") -MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION) -INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR} - PATTERN "INSTALL-BINARY" EXCLUDE - PATTERN "Makefile.*" EXCLUDE - PATTERN "myisam.txt" EXCLUDE - PATTERN "glibc*" EXCLUDE - PATTERN "sp-imp-spec.txt" EXCLUDE - PATTERN "linuxthreads.txt" EXCLUDE -) diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index b329a09d56e..97de0965f6b 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -80,9 +80,6 @@ IF(FEATURE_SET) ENDFOREACH() ENDIF() -SET(WITHOUT_AUDIT_NULL ON CACHE BOOL "") -SET(WITHOUT_DAEMON_EXAMPLE ON CACHE BOOL "") - OPTION(ENABLE_LOCAL_INFILE "" ON) SET(WITH_SSL bundled CACHE STRING "") SET(WITH_ZLIB bundled CACHE STRING "") @@ -122,8 +119,12 @@ IF(UNIX) IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") IF(CMAKE_C_COMPILER_ID MATCHES "HP") IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -AC99") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -Aa") + SET(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} +DD64 +DSitanium2 -mt -AC99") + SET(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} +DD64 +DSitanium2 -mt -Aa") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} +O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} +O2") ENDIF() ENDIF() SET(WITH_SSL) @@ -132,15 +133,16 @@ IF(UNIX) # Linux flags IF(CMAKE_SYSTEM_NAME MATCHES "Linux") IF(CMAKE_C_COMPILER_ID MATCHES "Intel") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -g -O3 -unroll2 -ip -mp -restrict") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -g -O3 -unroll2 -ip -mp -restrict") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch") + SET(WITH_SSL no) ENDIF() ENDIF() # OSX flags IF(APPLE) - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_C_FLAGS_RELWITHDEBINFO}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -Os -fno-common") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Os -felide-constructors -fno-common") ENDIF() # Solaris flags diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 2d8c218a293..ade6cdb747f 100755 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -14,99 +14,184 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # The purpose of this file is to set the default installation layout. -# Currently, there are 2 different installation layouts , -# one is used in tar.gz packages (Windows zip is about the same), another one -# in RPMs. - -# There are currently 2 layouts defines, named STANDALONE (tar.gz layout) -# and UNIX (rpm layout). To force a directory layout when invoking cmake use -# -DINSTALL_LAYOUT=[STANDALONE|UNIX]. -# This wil use a predefined layout. There is a possibility to further fine-tune -# installation directories. Several variables are can be overwritten -# -# - INSTALL_BINDIR (directory with client executables and Unix shell scripts) -# - INSTALL_SBINDIR (directory with mysqld) -# - INSTALL_LIBDIR (directory with client end embedded libraries) -# - INSTALL_PLUGINDIR (directory for plugins) -# - INSTALL_INCLUDEDIR (directory for MySQL headers) -# - INSTALL_DOCDIR (documentation) -# - INSTALL_MANDIR (man pages) -# - INSTALL_SCRIPTDIR (several scripts, rarely used) -# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) -# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) -# - INSTALL_SQLBENCHDIR (sql-bench) -# - INSTALL_MYSQLTESTDIR (mysql-test) -# - INSTALL_DOCREADMEDIR (readme and similar) -# - INSTALL_SUPPORTFILESDIR (used only in standalone installer) +# +# The current choices of installation layout are: +# +# STANDALONE +# Build with prefix=/usr/local/mysql, create tarball with install prefix="." +# and relative links. Windows zip uses the same tarball layout but without +# the build prefix. +# +# RPM +# Build as per default RPM layout, with prefix=/usr +# +# DEB +# Build as per STANDALONE, prefix=/opt/mysql-$major.$minor +# +# SVR4 +# Solaris package layout suitable for pkg* tools, prefix=/opt/mysql/mysql +# +# To force a directory layout, use -DINSTALL_LAYOUT=<layout>. +# +# The default is STANDALONE. +# +# There is the possibility to further fine-tune installation directories. +# Several variables can be overwritten: +# +# - INSTALL_BINDIR (directory with client executables and scripts) +# - INSTALL_SBINDIR (directory with mysqld) +# - INSTALL_SCRIPTDIR (several scripts, rarely used) +# +# - INSTALL_LIBDIR (directory with client end embedded libraries) +# - INSTALL_PLUGINDIR (directory for plugins) +# +# - INSTALL_INCLUDEDIR (directory for MySQL headers) +# +# - INSTALL_DOCDIR (documentation) +# - INSTALL_DOCREADMEDIR (readme and similar) +# - INSTALL_MANDIR (man pages) +# - INSTALL_INFODIR (info pages) +# +# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) +# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) +# - INSTALL_MYSQLTESTDIR (mysql-test) +# - INSTALL_SQLBENCHDIR (sql-bench) +# - INSTALL_SUPPORTFILESDIR (various extra support files) +# +# - INSTALL_MYSQLDATADIR (data directory) -# Default installation layout on Unix is UNIX (kent wants it so) IF(NOT INSTALL_LAYOUT) - IF(WIN32) - SET(DEFAULT_INSTALL_LAYOUT "STANDALONE") - ELSE() - SET(DEFAULT_INSTALL_LAYOUT "UNIX") - ENDIF() + SET(DEFAULT_INSTALL_LAYOUT "STANDALONE") ENDIF() -SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" -CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") - -IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE") - IF(NOT INSTALL_LAYOUT MATCHES "UNIX") - SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}") - ENDIF() -ENDIF() +SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" +CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") IF(UNIX) - IF(INSTALL_LAYOUT MATCHES "UNIX") + IF(INSTALL_LAYOUT MATCHES "RPM") SET(default_prefix "/usr") + ELSEIF(INSTALL_LAYOUT MATCHES "DEB") + SET(default_prefix "/opt/${MYSQL_BASE_VERSION}") + # This is required to avoid "cpack -GDEB" default of prefix=/usr + SET(CPACK_SET_DESTDIR ON) + ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") + SET(default_prefix "/opt/mysql/mysql") ELSE() SET(default_prefix "/usr/local/mysql") ENDIF() IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET(CMAKE_INSTALL_PREFIX ${default_prefix} + SET(CMAKE_INSTALL_PREFIX ${default_prefix} CACHE PATH "install prefix" FORCE) ENDIF() - SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" + SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" CACHE PATH "config directory (for my.cnf)") MARK_AS_ADVANCED(SYSCONFDIR) ENDIF() - - - # STANDALONE layout - SET(INSTALL_BINDIR_STANDALONE "bin") - SET(INSTALL_SBINDIR_STANDALONE "bin") - SET(INSTALL_LIBDIR_STANDALONE "lib") - SET(INSTALL_INCLUDEDIR_STANDALONE "include") - SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") - SET(INSTALL_DOCDIR_STANDALONE "docs") - SET(INSTALL_MANDIR_STANDALONE "man") - SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") - SET(INSTALL_SHAREDIR_STANDALONE "share") - SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") - SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") - SET(INSTALL_SQLBENCHROOTDIR_STANDALONE ".") - SET(INSTALL_DOCREADMEDIR_STANDALONE ".") - SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") - SET(INSTALL_MYSQLDATADIR_STANDALONE "data") - - # UNIX layout - SET(INSTALL_BINDIR_UNIX "bin") - SET(INSTALL_SBINDIR_UNIX "sbin") - SET(INSTALL_LIBDIR_UNIX "lib/mysql") - SET(INSTALL_PLUGINDIR_UNIX "lib/mysql/plugin") - SET(INSTALL_DOCDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") - SET(INSTALL_MANDIR_UNIX "share/mysql/man") - SET(INSTALL_INCLUDEDIR_UNIX "include/mysql") - SET(INSTALL_MYSQLSHAREDIR_UNIX "share/mysql") - SET(INSTALL_SHAREDIR_UNIX "share") - SET(INSTALL_SCRIPTDIR_UNIX "bin") - SET(INSTALL_MYSQLTESTDIR_UNIX "mysql-test") - SET(INSTALL_SQLBENCHROOTDIR_UNIX "") - SET(INSTALL_DOCREADMEDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") - SET(INSTALL_SUPPORTFILESDIR_UNIX "") - SET(INSTALL_MYSQLDATADIR_UNIX "var") +# +# STANDALONE layout +# +SET(INSTALL_BINDIR_STANDALONE "bin") +SET(INSTALL_SBINDIR_STANDALONE "bin") +SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") +# +SET(INSTALL_LIBDIR_STANDALONE "lib") +SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") +# +SET(INSTALL_INCLUDEDIR_STANDALONE "include") +# +SET(INSTALL_DOCDIR_STANDALONE "docs") +SET(INSTALL_DOCREADMEDIR_STANDALONE ".") +SET(INSTALL_MANDIR_STANDALONE "man") +SET(INSTALL_INFODIR_STANDALONE "docs") +# +SET(INSTALL_SHAREDIR_STANDALONE "share") +SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") +SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") +SET(INSTALL_SQLBENCHDIR_STANDALONE ".") +SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") +# +SET(INSTALL_MYSQLDATADIR_STANDALONE "data") + +# +# RPM layout +# +SET(INSTALL_BINDIR_RPM "bin") +SET(INSTALL_SBINDIR_RPM "sbin") +SET(INSTALL_SCRIPTDIR_RPM "bin") +# +IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + SET(INSTALL_LIBDIR_RPM "lib64") + SET(INSTALL_PLUGINDIR_RPM "lib64/mysql/plugin") +ELSE() + SET(INSTALL_LIBDIR_RPM "lib") + SET(INSTALL_PLUGINDIR_RPM "lib/mysql/plugin") +ENDIF() +# +SET(INSTALL_INCLUDEDIR_RPM "include/mysql") +# +#SET(INSTALL_DOCDIR_RPM unset - installed directly by RPM) +#SET(INSTALL_DOCREADMEDIR_RPM unset - installed directly by RPM) +SET(INSTALL_INFODIR_RPM "share/info") +SET(INSTALL_MANDIR_RPM "share/man") +# +SET(INSTALL_SHAREDIR_RPM "share") +SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") +SET(INSTALL_MYSQLTESTDIR_RPM "share/mysql-test") +SET(INSTALL_SQLBENCHDIR_RPM "") +SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") +# +SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") + +# +# DEB layout +# +SET(INSTALL_BINDIR_DEB "bin") +SET(INSTALL_SBINDIR_DEB "bin") +SET(INSTALL_SCRIPTDIR_DEB "scripts") +# +SET(INSTALL_LIBDIR_DEB "lib") +SET(INSTALL_PLUGINDIR_DEB "lib/plugin") +# +SET(INSTALL_INCLUDEDIR_DEB "include") +# +SET(INSTALL_DOCDIR_DEB "docs") +SET(INSTALL_DOCREADMEDIR_DEB ".") +SET(INSTALL_MANDIR_DEB "man") +SET(INSTALL_INFODIR_DEB "docs") +# +SET(INSTALL_SHAREDIR_DEB "share") +SET(INSTALL_MYSQLSHAREDIR_DEB "share") +SET(INSTALL_MYSQLTESTDIR_DEB "mysql-test") +SET(INSTALL_SQLBENCHDIR_DEB ".") +SET(INSTALL_SUPPORTFILESDIR_DEB "support-files") +# +SET(INSTALL_MYSQLDATADIR_DEB "data") + +# +# SVR4 layout +# +SET(INSTALL_BINDIR_SVR4 "bin") +SET(INSTALL_SBINDIR_SVR4 "bin") +SET(INSTALL_SCRIPTDIR_SVR4 "scripts") +# +SET(INSTALL_LIBDIR_SVR4 "lib") +SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") +# +SET(INSTALL_INCLUDEDIR_SVR4 "include") +# +SET(INSTALL_DOCDIR_SVR4 "docs") +SET(INSTALL_DOCREADMEDIR_SVR4 ".") +SET(INSTALL_MANDIR_SVR4 "man") +SET(INSTALL_INFODIR_SVR4 "docs") +# +SET(INSTALL_SHAREDIR_SVR4 "share") +SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") +SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") +SET(INSTALL_SQLBENCHDIR_SVR4 ".") +SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") +# +SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql") # Clear cached variables if install layout was changed @@ -117,12 +202,12 @@ IF(OLD_INSTALL_LAYOUT) ENDIF() SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") -# Set INSTALL_FOODIR variables for chosen layout -# (for example, INSTALL_BINDIR will be defined as -# ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE layout is chosen) -FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN - MYSQLTEST SQLBENCHROOT DOCREADME SUPPORTFILES MYSQLDATA) - SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}} +# Set INSTALL_FOODIR variables for chosen layout (for example, INSTALL_BINDIR +# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE +# layout is chosen) +FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN + INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA) + SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}} CACHE STRING "${var} installation directory" ${FORCE}) MARK_AS_ADVANCED(INSTALL_${var}DIR) ENDFOREACH() diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 73da532ecf6..f049776b8f4 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -173,7 +173,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) "" ${ARGN} ) - GET_TARGET_PROPERTY(target_type ${target} TYPE) + GET_TARGET_PROPERTY(target_type ${target} TYPE) IF(ARG_RENAME) SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) ELSE() @@ -189,9 +189,40 @@ FUNCTION(INSTALL_DEBUG_TARGET target) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) ENDIF() + # Define permissions + # For executable files + SET(PERMISSIONS_EXECUTABLE + PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + # Permissions for shared library (honors CMAKE_INSTALL_NO_EXE which is + # typically set on Debian) + IF(CMAKE_INSTALL_SO_NO_EXE) + SET(PERMISSIONS_SHARED_LIBRARY + PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) + ELSE() + SET(PERMISSIONS_SHARED_LIBRARY ${PERMISSIONS_EXECUTABLE}) + ENDIF() + + # Shared modules get the same permissions as shared libraries + SET(PERMISSIONS_MODULE_LIBRARY ${PERMISSIONS_SHARED_LIBRARY}) + + # Define permissions for static library + SET(PERMISSIONS_STATIC_LIBRARY + PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) + INSTALL(FILES ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} + ${PERMISSIONS_${target_type}} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index 3a61bcf40ab..6adca2ccc2f 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -55,6 +55,7 @@ MACRO(GET_MYSQL_VERSION) ENDIF() SET(VERSION ${VERSION_STRING}) + STRING(REPLACE "-" "_" MYSQL_U_SCORE_VERSION "${VERSION_STRING}") # Remove trailing (non-numeric) part of the version string STRING(REGEX REPLACE "[^\\.0-9].*" "" VERSION_STRING ${VERSION_STRING}) @@ -106,6 +107,7 @@ ENDIF() IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME) SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}") ENDIF() +SET(CPACK_PACKAGE_CONTACT "MySQL Build Team <build@mysql.com>") SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc") SET(CPACK_SOURCE_GENERATOR "TGZ") INCLUDE(cpack_source_ignore_files) @@ -114,6 +116,16 @@ INCLUDE(cpack_source_ignore_files) SET(PRODUCTNAME "MySQL Server") SET(COMPANYNAME ${CPACK_PACKAGE_VENDOR}) +# Windows 'date' command has unpredictable output, so cannot rely on it to +# set MYSQL_COPYRIGHT_YEAR - if someone finds a portable way to do so then +# it might be useful +#IF (WIN32) +# EXECUTE_PROCESS(COMMAND "date" "/T" OUTPUT_VARIABLE TMP_DATE) +# STRING(REGEX REPLACE "(..)/(..)/..(..).*" "\\3\\2\\1" MYSQL_COPYRIGHT_YEAR ${TMP_DATE}) +IF(UNIX) + EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE MYSQL_COPYRIGHT_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE) +ENDIF() + # Add version information to the exe and dll files # Refer to http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx # for more info. diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index 30a7932a0d7..896624996d3 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -174,6 +174,7 @@ MACRO(MYSQL_ADD_PLUGIN) OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}") # Install dynamic library MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR}) + INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug) ENDIF() ENDMACRO() diff --git a/config.h.cmake b/config.h.cmake index f0473c83af6..b3b234a153b 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -38,6 +38,7 @@ #cmakedefine HAVE_FPU_CONTROL_H 1 #cmakedefine HAVE_GRP_H 1 #cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1 +#cmakedefine HAVE_IA64INTRIN_H 1 #cmakedefine HAVE_IEEEFP_H 1 #cmakedefine HAVE_INTTYPES_H 1 #cmakedefine HAVE_LIMITS_H 1 diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index 26af9c80a2b..cd23f825b9e 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -171,15 +171,24 @@ IF(UNIX) SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION}) ENDIF() ENDMACRO() + INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR}) ENDIF() IF(NOT DISABLE_SHARED) MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) IF(UNIX) + # libtool compatability + IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE) + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}") + ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0") + ELSE() + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0") + ENDIF() # Name of shared library is mysqlclient on Unix SET_TARGET_PROPERTIES(libmysql PROPERTIES OUTPUT_NAME mysqlclient - VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0" + VERSION "${OS_SHARED_LIB_VERSION}" SOVERSION "${SHARED_LIB_MAJOR_VERSION}") IF(LINK_FLAG_NO_UNDEFINED) GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS) @@ -194,14 +203,21 @@ IF(NOT DISABLE_SHARED) SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) - # Install 3 links to libmysqlclient.so (client_r) - FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}" - "${SHARED_LIB_MAJOR_VERSION}.0.0") - GET_VERSIONED_LIBNAME( - "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" - "${CMAKE_SHARED_LIBRARY_SUFFIX}" - "${ver}" - linkname) + # Install links to libmysqlclient.so (client_r) + GET_VERSIONED_LIBNAME( + "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "" + linkname) + INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) + SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") + LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS) + FOREACH(ver ${OS_SHARED_LIB_SYMLINKS}) + GET_VERSIONED_LIBNAME( + "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "${ver}" + linkname) INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) ENDFOREACH() ENDIF() diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index af48932a434..fa5088f288b 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -133,7 +133,7 @@ ENDIF() IF(UNIX) INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME - ${CMAKE_STATIC_LIBRARY_PREFIX}/mysqld-debug) + ${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug) ENDIF() IF(MSVC AND NOT DISABLE_SHARED) diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index f8adae9c931..f98470a2047 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -23,7 +23,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT) -MYSQL_ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc +# We never use "mysql_embedded", is more of a linktest, so we don't +# use MYSQL_ADD_EXECUTABLE as that would install it and package it +ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc ../../client/mysql.cc ../../client/readline.cc) TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver) IF(UNIX) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index 29de4432c0c..1113b73fd8d 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -15,8 +15,12 @@ # Copy man pages FILE(GLOB MAN1_FILES *.1) +FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1) FILE(GLOB MAN8_FILES *.8) IF(MAN1_FILES) + IF(MAN1_EXCLUDE) + LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE}) + ENDIF() INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) ENDIF() IF(MAN8_FILES) diff --git a/mysql-test/CMakeLists.txt b/mysql-test/CMakeLists.txt index b8b7d08135f..b309db292da 100644 --- a/mysql-test/CMakeLists.txt +++ b/mysql-test/CMakeLists.txt @@ -18,6 +18,7 @@ INSTALL( DESTINATION ${INSTALL_MYSQLTESTDIR} PATTERN "var/" EXCLUDE PATTERN "lib/My/SafeProcess" EXCLUDE + PATTERN "lib/t*" EXCLUDE PATTERN "CPack" EXCLUDE PATTERN "CMake*" EXCLUDE PATTERN "mtr.out*" EXCLUDE diff --git a/plugin/audit_null/CMakeLists.txt b/plugin/audit_null/CMakeLists.txt index 9f32181a163..4baa1da35fe 100644 --- a/plugin/audit_null/CMakeLists.txt +++ b/plugin/audit_null/CMakeLists.txt @@ -13,4 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -MYSQL_ADD_PLUGIN(audit_null audit_null.c) +MYSQL_ADD_PLUGIN(audit_null audit_null.c + MODULE_ONLY MODULE_OUTPUT_NAME "adt_null") diff --git a/plugin/daemon_example/CMakeLists.txt b/plugin/daemon_example/CMakeLists.txt index 1c21d57b326..de4310b0244 100644 --- a/plugin/daemon_example/CMakeLists.txt +++ b/plugin/daemon_example/CMakeLists.txt @@ -13,4 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc MODULE_ONLY) +MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc + MODULE_ONLY MODULE_OUTPUT_NAME "libdaemon_example") diff --git a/plugin/fulltext/CMakeLists.txt b/plugin/fulltext/CMakeLists.txt index ea71552a37a..394cb8dc51d 100644 --- a/plugin/fulltext/CMakeLists.txt +++ b/plugin/fulltext/CMakeLists.txt @@ -13,5 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -MYSQL_ADD_PLUGIN(ftexample plugin_example.c MODULE_ONLY MODULE_OUTPUT_NAME mypluglib) +MYSQL_ADD_PLUGIN(ftexample plugin_example.c + MODULE_ONLY MODULE_OUTPUT_NAME "mypluglib") diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index f39224b9457..fc55a2923f2 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -93,6 +93,10 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles") # No multiconfig build - use CMAKE_C_FLAGS SET(CFLAGS "@CMAKE_C_FLAGS@") SET(CXXFLAGS "@CMAKE_CXX_FLAGS@") + FOREACH(ARCH ${CMAKE_OSX_ARCHITECTURES}) + SET(CFLAGS "${CFLAGS} -arch ${ARCH}") + SET(CXXFLAGS "${CXXFLAGS} -arch ${ARCH}") + ENDFOREACH() ELSE() # Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO SET(CFLAGS "@CMAKE_C_FLAGS_RELWITHDEBINFO@") @@ -134,10 +138,9 @@ ELSE() SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null") ENDIF() -ENDIF(UNIX) - - +SET(HOSTNAME "hostname") +ENDIF(UNIX) # Really ugly, one script, "mysql_install_db", needs prefix set to ".", # i.e. makes access relative the current directory. This matches @@ -298,14 +301,13 @@ ELSE() mysql_secure_installation mysql_zap mysqlaccess + mysqlaccess.conf mysqlbug mysql_convert_table_format mysql_find_rows mysqlhotcopy mysqldumpslow mysqld_multi - mysqlaccess - mysqlaccess.conf mysqld_safe ) FOREACH(file ${BIN_SCRIPTS}) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 59e7e8b7ef7..4514b5437b7 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -306,7 +306,7 @@ set_malloc_lib() { malloc_lib= # This list is kept intentionally simple. Simply set --malloc-lib # to a full path if another location is desired. - for libdir in /usr/lib "$pkglibdir"; do + for libdir in /usr/lib "$pkglibdir" "$pkglibdir/mysql"; do for flavor in _minimal '' _and_profiler _debug; do tmp="$libdir/libtcmalloc$flavor.so" #log_notice "DEBUG: Checking for malloc lib '$tmp'" diff --git a/sql-bench/CMakeLists.txt b/sql-bench/CMakeLists.txt index 59dca2e84cc..be0aeca70b0 100644 --- a/sql-bench/CMakeLists.txt +++ b/sql-bench/CMakeLists.txt @@ -18,23 +18,22 @@ FILE(GLOB all_files ${CMAKE_SOURCE_DIR}/sql-bench/* ${CMAKE_SOURCE_DIR}/sql-bench/Data/ATIS/* ${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/* -${CMAKE_SOURCE_DIR}/sql-bench/Comments/* ${CMAKE_SOURCE_DIR}/sql-bench/limits/* ) -IF(NOT INSTALL_SQLBENCHROOTDIR) +IF(NOT INSTALL_SQLBENCHDIR) RETURN() ENDIF() -IF(INSTALL_SQLBENCHROOTDIR STREQUAL ".") +IF(INSTALL_SQLBENCHDIR STREQUAL ".") SET(prefix) ELSE() - SET(prefix ${INSTALL_SQLBENCHROOTDIR}/) + SET(prefix ${INSTALL_SQLBENCHDIR}/) ENDIF() GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE) FOREACH(file ${all_files}) - IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make" ) + IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make|as3ap|/example$" ) FILE(RELATIVE_PATH relpath ${basedir} ${file}) SET(target_relpath ${relpath}) GET_FILENAME_COMPONENT(ext ${file} EXT) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 253d546d4a4..357575c5b47 100755 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -280,7 +280,8 @@ IF(WIN32 AND MYSQLD_EXECUTABLE) ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/data/mysql/user.frm ) - INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data/mysql DESTINATION data) + INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data DESTINATION . + PATTERN "bootstrap.sql" EXCLUDE) ELSE() # Not windows or cross compiling, just install an empty directory INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql) diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 85be470e21b..d748b4b195c 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -29,16 +29,15 @@ ELSE() SET(CXXFLAGS ${CMAKE_CXX_FLAGS}) SET(MYSQLD_USER "mysql") SET(ini_file_extension "cnf") + SET(HOSTNAME "hostname") ENDIF() -IF(UNIX) - IF(INSTALL_LAYOUT MATCHES "STANDALONE") - SET(inst_location ${INSTALL_SUPPORTFILESDIR}) - ELSE() - SET(inst_location ${INSTALL_DOCREADMEDIR}) - ENDIF() -ELSE() +# XXX: shouldn't we just have variables for all this stuff and centralise +# XXX: their configuration in install_layout.cmake? +IF(WIN32) SET(inst_location ${INSTALL_DOCREADMEDIR}) +ELSE() + SET(inst_location ${INSTALL_SUPPORTFILESDIR}) ENDIF() FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small) @@ -48,14 +47,13 @@ FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small) ENDFOREACH() IF(UNIX) + # XXX: again, used elsewhere (scripts/), should be standardised in + # XXX: install_layout.cmake IF(INSTALL_LAYOUT MATCHES "STANDALONE") SET(prefix ".") - SET(inst_location ${INSTALL_SUPPORTFILESDIR}) ELSE() SET(prefix ${CMAKE_INSTALL_PREFIX}) - SET(inst_location ${INSTALL_MYSQLSHAREDIR}) ENDIF() - FOREACH(script mysqld_multi.server mysql-log-rotate binary-configure config.medium.ini config.small.ini config.huge.ini ndb-config-2-node.ini) |