diff options
author | Vladislav Vaintroub <vvaintroub@mysql.com> | 2010-01-24 16:23:16 +0100 |
---|---|---|
committer | Vladislav Vaintroub <vvaintroub@mysql.com> | 2010-01-24 16:23:16 +0100 |
commit | c514d75ebb0651dcc65ca9e09cf8458dc904f242 (patch) | |
tree | c43eba4b5b19fd0edbb74db874eadf3a2a91f9c7 /cmake/install_layout.cmake | |
parent | df9f68e9730d5d1f00ad82536c27352b9915c018 (diff) | |
download | mariadb-git-c514d75ebb0651dcc65ca9e09cf8458dc904f242.tar.gz |
Handle different installation layouts.
using cmake option INSTALL_LAYOUT=STANDALONE would produce the layout as in
tar.gz or zip packages.
INSTALL_LAYOUT=UNIX will produce unixish install layout (with mysqld being in sbin subdirectory , libs in lib/mysql etc). This layout is used for RPM packages.
Subtle differences in both packages unfortunately lead to the need to recompile MySQL to use with other package type - as otherwise for example default plugins or data directories would be wrong set.
There are numerous other variables that allow fine-tuning packaging layout. (INSTALL_BINDIR, INSTALL_LIBDIR , INSTALL_PLUGINDIR etc).
This options are different from autotools as they do not expect full paths to directories, but only subdirectory of CMAKE_INSTALL_PREFIX.
There are 2 special options that expect full directory paths
- MYSQL_DATADIR that defines default MYSQL data directory (autotools equivalent
is --localstatedir)
- SYSCONFDIR can be added to search my.cnf search path (autotools equivalent is --sysconfdir)
Diffstat (limited to 'cmake/install_layout.cmake')
-rwxr-xr-x | cmake/install_layout.cmake | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake new file mode 100755 index 00000000000..b1a285a0695 --- /dev/null +++ b/cmake/install_layout.cmake @@ -0,0 +1,128 @@ +# Copyright (C) 2010 Sun Microsystems, Inc +# +# 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 + +# 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) + +# 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() +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() + +IF(UNIX) + IF(INSTALL_LAYOUT MATCHES "UNIX") + SET(default_prefix "/usr") + ELSE() + SET(default_prefix "/usr/local/mysql") + ENDIF() + IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + SET(CMAKE_INSTALL_PREFIX ${default_prefix} + CACHE PATH "install prefix" FORCE) + ENDIF() + 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 "doc") + 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_STANDALONE "var") + + +# Clear cached variables if install layout was changed +IF(OLD_INSTALL_LAYOUT) + IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUR) + SET(FORCE FORCE) + ENDIF() +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}} + CACHE STRING "${var} installation directory" ${FORCE}) + MARK_AS_ADVANCED(INSTALL_${var}DIR) +ENDFOREACH() |