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 68IF(NOT INSTALL_LAYOUT) 69 IF(DEB) 70 SET(INSTALL_LAYOUT "DEB") 71 ELSEIF(RPM) 72 SET(INSTALL_LAYOUT "RPM") 73 ELSE() 74 SET(INSTALL_LAYOUT "STANDALONE") 75 ENDIF() 76ENDIF() 77 78SET(INSTALL_LAYOUT "${INSTALL_LAYOUT}" 79CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) RPM DEB SVR4") 80 81IF(UNIX) 82 IF(INSTALL_LAYOUT MATCHES "RPM") 83 SET(default_prefix "/usr") 84 ELSEIF(INSTALL_LAYOUT MATCHES "DEB") 85 SET(default_prefix "/usr") 86 ELSEIF(INSTALL_LAYOUT MATCHES "SVR4") 87 SET(default_prefix "/opt/mysql/mysql") 88 ELSE() 89 SET(default_prefix "/usr/local/mysql") 90 ENDIF() 91 IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) 92 SET(CMAKE_INSTALL_PREFIX ${default_prefix} 93 CACHE PATH "install prefix" FORCE) 94 ENDIF() 95 SET(VALID_INSTALL_LAYOUTS "RPM" "STANDALONE" "DEB" "SVR4") 96 LIST(FIND VALID_INSTALL_LAYOUTS "${INSTALL_LAYOUT}" ind) 97 IF(ind EQUAL -1) 98 MESSAGE(FATAL_ERROR "Invalid INSTALL_LAYOUT parameter:${INSTALL_LAYOUT}." 99 " Choose between ${VALID_INSTALL_LAYOUTS}" ) 100 ENDIF() 101ENDIF() 102 103# 104# STANDALONE layout 105# 106SET(INSTALL_BINDIR_STANDALONE "bin") 107SET(INSTALL_SBINDIR_STANDALONE "bin") 108SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") 109# 110SET(INSTALL_LIBDIR_STANDALONE "lib") 111SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") 112# 113SET(INSTALL_INCLUDEDIR_STANDALONE "include/mysql") 114# 115SET(INSTALL_DOCDIR_STANDALONE "docs") 116SET(INSTALL_DOCREADMEDIR_STANDALONE ".") 117SET(INSTALL_MANDIR_STANDALONE "man") 118SET(INSTALL_INFODIR_STANDALONE "docs") 119# 120SET(INSTALL_SHAREDIR_STANDALONE "share") 121SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") 122SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") 123SET(INSTALL_SQLBENCHDIR_STANDALONE ".") 124SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") 125# 126SET(INSTALL_MYSQLDATADIR_STANDALONE "data") 127 128SET(INSTALL_UNIX_ADDRDIR_STANDALONE "/tmp/mysql.sock") 129SET(INSTALL_PAMDIR_STANDALONE "share") 130SET(INSTALL_PAMDATADIR_STANDALONE "share") 131# 132# RPM layout 133# 134SET(INSTALL_BINDIR_RPM "bin") 135SET(INSTALL_SBINDIR_RPM "sbin") 136SET(INSTALL_SCRIPTDIR_RPM "bin") 137SET(INSTALL_SYSCONFDIR_RPM "/etc") 138SET(INSTALL_SYSCONF2DIR_RPM "/etc/my.cnf.d") 139# 140IF(CMAKE_SIZEOF_VOID_P EQUAL 8) 141 SET(INSTALL_LIBDIR_RPM "lib64") 142ELSE() 143 SET(INSTALL_LIBDIR_RPM "lib") 144ENDIF() 145SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") 146# 147SET(INSTALL_INCLUDEDIR_RPM "include/mysql") 148# 149SET(INSTALL_DOCDIR_RPM "share/doc") 150SET(INSTALL_DOCREADMEDIR_RPM "share/doc") 151SET(INSTALL_INFODIR_RPM "share/info") 152SET(INSTALL_MANDIR_RPM "share/man") 153# 154SET(INSTALL_SHAREDIR_RPM "share") 155SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql") 156SET(INSTALL_MYSQLTESTDIR_RPM "share/mysql-test") 157SET(INSTALL_SQLBENCHDIR_RPM "") 158SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql") 159# 160SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql") 161 162SET(INSTALL_UNIX_ADDRDIR_RPM "${INSTALL_MYSQLDATADIR_RPM}/mysql.sock") 163SET(INSTALL_SYSTEMD_UNITDIR_RPM "/usr/lib/systemd/system") 164SET(INSTALL_SYSTEMD_SYSUSERSDIR_RPM "/usr/lib/sysusers.d") 165SET(INSTALL_SYSTEMD_TMPFILESDIR_RPM "/usr/lib/tmpfiles.d") 166SET(INSTALL_PAMDIR_RPM "/${INSTALL_LIBDIR_RPM}/security") 167SET(INSTALL_PAMDATADIR_RPM "/etc/security") 168 169# 170# DEB layout 171# 172SET(INSTALL_BINDIR_DEB "bin") 173SET(INSTALL_SBINDIR_DEB "sbin") 174SET(INSTALL_SCRIPTDIR_DEB "bin") 175SET(INSTALL_SYSCONFDIR_DEB "/etc") 176SET(INSTALL_SYSCONF2DIR_DEB "/etc/mysql/mariadb.conf.d") 177# 178SET(INSTALL_LIBDIR_DEB "lib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}") 179SET(INSTALL_PLUGINDIR_DEB "lib/mysql/plugin") 180# 181SET(INSTALL_INCLUDEDIR_DEB "include/mariadb") 182# 183SET(INSTALL_DOCDIR_DEB "share/doc") 184SET(INSTALL_DOCREADMEDIR_DEB "share/doc") 185SET(INSTALL_MANDIR_DEB "share/man") 186SET(INSTALL_INFODIR_DEB "share/info") 187# 188SET(INSTALL_SHAREDIR_DEB "share") 189SET(INSTALL_MYSQLSHAREDIR_DEB "share/mysql") 190SET(INSTALL_MYSQLTESTDIR_DEB "share/mysql/mysql-test") 191SET(INSTALL_SQLBENCHDIR_DEB ".") 192SET(INSTALL_SUPPORTFILESDIR_DEB "share/mysql") 193# 194SET(INSTALL_MYSQLDATADIR_DEB "/var/lib/mysql") 195 196SET(INSTALL_UNIX_ADDRDIR_DEB "/run/mysqld/mysqld.sock") 197SET(INSTALL_SYSTEMD_UNITDIR_DEB "/lib/systemd/system") 198SET(INSTALL_SYSTEMD_SYSUSERSDIR_DEB "/usr/lib/sysusers.d") 199SET(INSTALL_SYSTEMD_TMPFILESDIR_DEB "/usr/lib/tmpfiles.d") 200SET(INSTALL_PAMDIR_DEB "/lib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}/security") 201SET(INSTALL_PAMDATADIR_DEB "/etc/security") 202 203# 204# SVR4 layout 205# 206SET(INSTALL_BINDIR_SVR4 "bin") 207SET(INSTALL_SBINDIR_SVR4 "bin") 208SET(INSTALL_SCRIPTDIR_SVR4 "scripts") 209# 210SET(INSTALL_LIBDIR_SVR4 "lib") 211SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") 212# 213SET(INSTALL_INCLUDEDIR_SVR4 "include/mysql") 214# 215SET(INSTALL_DOCDIR_SVR4 "docs") 216SET(INSTALL_DOCREADMEDIR_SVR4 ".") 217SET(INSTALL_MANDIR_SVR4 "man") 218SET(INSTALL_INFODIR_SVR4 "docs") 219# 220SET(INSTALL_SHAREDIR_SVR4 "share") 221SET(INSTALL_MYSQLSHAREDIR_SVR4 "share") 222SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test") 223SET(INSTALL_SQLBENCHDIR_SVR4 ".") 224SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files") 225# 226SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql") 227 228SET(INSTALL_UNIX_ADDRDIR_SVR "/tmp/mysql.sock") 229 230# Clear cached variables if install layout was changed 231IF(OLD_INSTALL_LAYOUT) 232 IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUT) 233 SET(FORCE FORCE) 234 ENDIF() 235ENDIF() 236SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") 237 238# Set INSTALL_FOODIR variables for chosen layout (for example, INSTALL_BINDIR 239# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE 240# layout is chosen) 241GET_CMAKE_PROPERTY(ALL_VARS VARIABLES) 242FOREACH (V ${ALL_VARS}) 243 IF (V MATCHES "^(INSTALL_([A-Z_0-9]+)DIR)_${INSTALL_LAYOUT}$") 244 SET(var ${CMAKE_MATCH_1}) 245 SET(${var} "${${V}}" CACHE STRING "${CMAKE_MATCH_2} installation directory" ${FORCE}) 246 MARK_AS_ADVANCED(${var}) 247 248 IF(IS_ABSOLUTE "${${var}}") 249 SET(${var}ABS "${${var}}") 250 ELSE() 251 SET(${var}ABS "${CMAKE_INSTALL_PREFIX}/${${var}}") 252 ENDIF() 253 ENDIF() 254ENDFOREACH() 255 256IF(NOT MYSQL_UNIX_ADDR) 257 SET(MYSQL_UNIX_ADDR ${INSTALL_UNIX_ADDRDIR}) 258ENDIF() 259 260