1# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. 2# 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; version 2 of the License. 6# 7# This program is distributed in the hope that it will be useful, 8# but WITHOUT ANY WARRANTY; without even the implied warranty of 9# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10# GNU General Public License for more details. 11# 12# You should have received a copy of the GNU General Public License 13# along with this program; if not, write to the Free Software 14# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA 15 16# The purpose of this file is to set the default installation layout. 17# 18# The current choices of installation layout are: 19# 20# STANDALONE 21# Build with prefix=/usr/local/mysql, create tarball with install prefix="." 22# and relative links. Windows zip uses the same tarball layout but without 23# the build prefix. 24# 25# RPM 26# Build as per default RPM layout, with prefix=/usr 27# 28# DEB 29# Build as per STANDALONE, prefix=/opt/mysql/server-$major.$minor 30# 31# SVR4 32# Solaris package layout suitable for pkg* tools, prefix=/opt/mysql/mysql 33# 34# To force a directory layout, use -DINSTALL_LAYOUT=<layout>. 35# 36# The default is STANDALONE. 37# 38# There is the possibility to further fine-tune installation directories. 39# Several variables can be overwritten: 40# 41# - INSTALL_BINDIR (directory with client executables and scripts) 42# - INSTALL_SBINDIR (directory with mysqld) 43# - INSTALL_SCRIPTDIR (several scripts, rarely used) 44# - INSTALL_SYSCONFDIR (my.cnf config file. Usually /etc or nothing) 45# - INSTALL_SYSCONF2DIR (additional config files, e.g. /etc/mysql/conf.d) 46# 47# - INSTALL_LIBDIR (directory with client end embedded libraries) 48# - INSTALL_PLUGINDIR (directory for plugins) 49# 50# - INSTALL_INCLUDEDIR (directory for MySQL headers) 51# 52# - INSTALL_DOCDIR (documentation) 53# - INSTALL_DOCREADMEDIR (readme and similar) 54# - INSTALL_MANDIR (man pages) 55# - INSTALL_INFODIR (info pages) 56# 57# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) 58# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) 59# - INSTALL_MYSQLTESTDIR (mysql-test) 60# - INSTALL_SQLBENCHDIR (sql-bench) 61# - INSTALL_SUPPORTFILESDIR (various extra support files) 62# 63# - INSTALL_MYSQLDATADIR (data directory) 64# 65# - INSTALL_UNIX_ADDRDIR (path to mysql.sock) 66# 67# When changing this page, _please_ do not forget to update public Wiki 68# http://forge.mysql.com/wiki/CMake#Fine-tuning_installation_paths 69 70IF(NOT INSTALL_LAYOUT) 71 IF(DEB) 72 SET(INSTALL_LAYOUT "DEB") 73 ELSEIF(RPM) 74 SET(INSTALL_LAYOUT "RPM") 75 ELSE() 76 SET(INSTALL_LAYOUT "STANDALONE") 77 ENDIF() 78ENDIF() 79 80SET(INSTALL_LAYOUT "${INSTALL_LAYOUT}" 81CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) RPM DEB SVR4") 82 83IF(UNIX) 84 IF(INSTALL_LAYOUT MATCHES "RPM") 85 SET(default_prefix "/usr") 86 ELSEIF(INSTALL_LAYOUT MATCHES "DEB") 87 SET(default_prefix "/usr") 88 ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") 89 SET(default_prefix "/opt/mysql/mysql") 90 ELSE() 91 SET(default_prefix "/usr/local/mysql") 92 ENDIF() 93 IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) 94 SET(CMAKE_INSTALL_PREFIX ${default_prefix} 95 CACHE PATH "install prefix" FORCE) 96 ENDIF() 97 SET(VALID_INSTALL_LAYOUTS "RPM" "STANDALONE" "DEB" "SVR4") 98 LIST(FIND VALID_INSTALL_LAYOUTS "${INSTALL_LAYOUT}" ind) 99 IF(ind EQUAL -1) 100 MESSAGE(FATAL_ERROR "Invalid INSTALL_LAYOUT parameter:${INSTALL_LAYOUT}." 101 " Choose between ${VALID_INSTALL_LAYOUTS}" ) 102 ENDIF() 103ENDIF() 104 105# 106# STANDALONE layout 107# 108SET(INSTALL_BINDIR_STANDALONE "bin") 109SET(INSTALL_SBINDIR_STANDALONE "bin") 110SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") 111# 112SET(INSTALL_LIBDIR_STANDALONE "lib") 113SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") 114# 115SET(INSTALL_INCLUDEDIR_STANDALONE "include/mysql") 116# 117SET(INSTALL_DOCDIR_STANDALONE "docs") 118SET(INSTALL_DOCREADMEDIR_STANDALONE ".") 119SET(INSTALL_MANDIR_STANDALONE "man") 120SET(INSTALL_INFODIR_STANDALONE "docs") 121# 122SET(INSTALL_SHAREDIR_STANDALONE "share") 123SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") 124SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") 125SET(INSTALL_SQLBENCHDIR_STANDALONE ".") 126SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") 127# 128SET(INSTALL_MYSQLDATADIR_STANDALONE "data") 129 130SET(INSTALL_UNIX_ADDRDIR_STANDALONE "/tmp/mysql.sock") 131SET(INSTALL_PAMDIR_STANDALONE "share") 132SET(INSTALL_PAMDATADIR_STANDALONE "share") 133# 134# RPM layout 135# 136SET(INSTALL_BINDIR_RPM "bin") 137SET(INSTALL_SBINDIR_RPM "sbin") 138SET(INSTALL_SCRIPTDIR_RPM "bin") 139SET(INSTALL_SYSCONFDIR_RPM "/etc") 140SET(INSTALL_SYSCONF2DIR_RPM "/etc/my.cnf.d") 141# 142IF(CMAKE_SIZEOF_VOID_P EQUAL 8) 143 SET(INSTALL_LIBDIR_RPM "lib64") 144ELSE() 145 SET(INSTALL_LIBDIR_RPM "lib") 146ENDIF() 147SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") 148# 149SET(INSTALL_INCLUDEDIR_RPM "include/mysql") 150# 151SET(INSTALL_DOCDIR_RPM "share/doc") 152SET(INSTALL_DOCREADMEDIR_RPM "share/doc") 153SET(INSTALL_INFODIR_RPM "share/info") 154SET(INSTALL_MANDIR_RPM "share/man") 155# 156SET(INSTALL_SHAREDIR_RPM "share") 157SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") 158SET(INSTALL_MYSQLTESTDIR_RPM "share/mysql-test") 159SET(INSTALL_SQLBENCHDIR_RPM "") 160SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") 161# 162SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") 163 164SET(INSTALL_UNIX_ADDRDIR_RPM "${INSTALL_MYSQLDATADIR_RPM}/mysql.sock") 165SET(INSTALL_SYSTEMD_UNITDIR_RPM "/usr/lib/systemd/system") 166SET(INSTALL_SYSTEMD_SYSUSERSDIR_RPM "/usr/lib/sysusers.d") 167SET(INSTALL_SYSTEMD_TMPFILESDIR_RPM "/usr/lib/tmpfiles.d") 168SET(INSTALL_PAMDIR_RPM "/${INSTALL_LIBDIR_RPM}/security") 169SET(INSTALL_PAMDATADIR_RPM "/etc/security") 170 171# 172# DEB layout 173# 174SET(INSTALL_BINDIR_DEB "bin") 175SET(INSTALL_SBINDIR_DEB "sbin") 176SET(INSTALL_SCRIPTDIR_DEB "bin") 177SET(INSTALL_SYSCONFDIR_DEB "/etc") 178SET(INSTALL_SYSCONF2DIR_DEB "/etc/mysql/conf.d") 179# 180SET(INSTALL_LIBDIR_DEB "lib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}") 181SET(INSTALL_PLUGINDIR_DEB "lib/mysql/plugin") 182# 183SET(INSTALL_INCLUDEDIR_DEB "include/mariadb") 184# 185SET(INSTALL_DOCDIR_DEB "share/doc") 186SET(INSTALL_DOCREADMEDIR_DEB "share/doc") 187SET(INSTALL_MANDIR_DEB "share/man") 188SET(INSTALL_INFODIR_DEB "share/info") 189# 190SET(INSTALL_SHAREDIR_DEB "share") 191SET(INSTALL_MYSQLSHAREDIR_DEB "share/mysql") 192SET(INSTALL_MYSQLTESTDIR_DEB "share/mysql/mysql-test") 193SET(INSTALL_SQLBENCHDIR_DEB ".") 194SET(INSTALL_SUPPORTFILESDIR_DEB "share/mysql") 195# 196SET(INSTALL_MYSQLDATADIR_DEB "/var/lib/mysql") 197 198SET(INSTALL_UNIX_ADDRDIR_DEB "/var/run/mysqld/mysqld.sock") 199SET(INSTALL_SYSTEMD_UNITDIR_DEB "/lib/systemd/system") 200SET(INSTALL_SYSTEMD_SYSUSERSDIR_DEB "/usr/lib/sysusers.d") 201SET(INSTALL_SYSTEMD_TMPFILESDIR_DEB "/usr/lib/tmpfiles.d") 202SET(INSTALL_PAMDIR_DEB "/lib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/security") 203SET(INSTALL_PAMDATADIR_DEB "/etc/security") 204 205# 206# SVR4 layout 207# 208SET(INSTALL_BINDIR_SVR4 "bin") 209SET(INSTALL_SBINDIR_SVR4 "bin") 210SET(INSTALL_SCRIPTDIR_SVR4 "scripts") 211# 212SET(INSTALL_LIBDIR_SVR4 "lib") 213SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") 214# 215SET(INSTALL_INCLUDEDIR_SVR4 "include/mysql") 216# 217SET(INSTALL_DOCDIR_SVR4 "docs") 218SET(INSTALL_DOCREADMEDIR_SVR4 ".") 219SET(INSTALL_MANDIR_SVR4 "man") 220SET(INSTALL_INFODIR_SVR4 "docs") 221# 222SET(INSTALL_SHAREDIR_SVR4 "share") 223SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") 224SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") 225SET(INSTALL_SQLBENCHDIR_SVR4 ".") 226SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") 227# 228SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql") 229 230SET(INSTALL_UNIX_ADDRDIR_SVR "/tmp/mysql.sock") 231 232# Clear cached variables if install layout was changed 233IF(OLD_INSTALL_LAYOUT) 234 IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUT) 235 SET(FORCE FORCE) 236 ENDIF() 237ENDIF() 238SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") 239 240# Set INSTALL_FOODIR variables for chosen layout (for example, INSTALL_BINDIR 241# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE 242# layout is chosen) 243GET_CMAKE_PROPERTY(ALL_VARS VARIABLES) 244FOREACH (V ${ALL_VARS}) 245 IF (V MATCHES "^(INSTALL_([A-Z_0-9]+)DIR)_${INSTALL_LAYOUT}$") 246 SET(var ${CMAKE_MATCH_1}) 247 SET(${var} "${${V}}" CACHE STRING "${CMAKE_MATCH_2} installation directory" ${FORCE}) 248 MARK_AS_ADVANCED(${var}) 249 250 IF(IS_ABSOLUTE "${${var}}") 251 SET(${var}ABS "${${var}}") 252 ELSE() 253 SET(${var}ABS "${CMAKE_INSTALL_PREFIX}/${${var}}") 254 ENDIF() 255 ENDIF() 256ENDFOREACH() 257 258IF(NOT MYSQL_UNIX_ADDR) 259 SET(MYSQL_UNIX_ADDR ${INSTALL_UNIX_ADDRDIR}) 260ENDIF() 261 262