summaryrefslogtreecommitdiff
path: root/cmake/install_layout.cmake
diff options
context:
space:
mode:
authorVladislav Vaintroub <vvaintroub@mysql.com>2010-01-24 16:23:16 +0100
committerVladislav Vaintroub <vvaintroub@mysql.com>2010-01-24 16:23:16 +0100
commitc514d75ebb0651dcc65ca9e09cf8458dc904f242 (patch)
treec43eba4b5b19fd0edbb74db874eadf3a2a91f9c7 /cmake/install_layout.cmake
parentdf9f68e9730d5d1f00ad82536c27352b9915c018 (diff)
downloadmariadb-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-xcmake/install_layout.cmake128
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()