Permalink
Browse files

Add GNUInstallDirs module to define GNU layout (#3976)

Provide CMAKE_INSTALL_* variables to help install files according
to the GNU standard layout:

  http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
  • Loading branch information...
krnekit authored and bradking committed Feb 23, 2011
1 parent 2465b5e commit a262fe0917364cb003f7319b3d17c46280d75927
Showing with 166 additions and 0 deletions.
  1. +166 −0 Modules/GNUInstallDirs.cmake
@@ -0,0 +1,166 @@
# - Define the installation directories conforming to GNU standards.
# This module defines installation directories, as described by GNU standards.
# For more information about this standards, see the following site:
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
#
# Module defines variables for installation directories and for resulting paths
# of this directories.
#
# Installation directories appointed to use during install. If such variable
# contains relative path, during install resulting path will be created by
# prepending it with CMAKE_INSTALL_PREFIX. If it contains absolute path, it
# would be taken as is.
# This variables only set if not defined already, thus allowing to override them
# and are stored in cache.
# CMAKE_INSTALL_BINDIR - user executables (bin)
# CMAKE_INSTALL_SBINDIR - system admin executables (sbin)
# CMAKE_INSTALL_LIBEXECDIR - program executables (libexec)
# CMAKE_INSTALL_SYSCONFDIR - read-only single-machine data (etc)
# CMAKE_INSTALL_SHAREDSTATEDIR - modifiable architecture-independent data (com)
# CMAKE_INSTALL_LOCALSTATEDIR - modifiable single-machine data (var)
# CMAKE_INSTALL_LIBDIR - object code libraries (lib)
# CMAKE_INSTALL_INCLUDEDIR - C header files (include)
# CMAKE_INSTALL_OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
# CMAKE_INSTALL_DATAROOTDIR - read-only architecture-independent data root (share)
# CMAKE_INSTALL_DATADIR - read-only architecture-independent data (DATAROOTDIR)
# CMAKE_INSTALL_INFODIR - info documentation (DATAROOTDIR/info)
# CMAKE_INSTALL_LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
# CMAKE_INSTALL_MANDIR - man documentation (DATAROOTDIR/man)
# CMAKE_INSTALL_DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
# Resulting directories derived from installation directories and always
# contains absolute paths.
# This variables computed in runtime and not stored in cache.
# CMAKE_INSTALL_FULL_BINDIR - user executables full path (PREFIX/BINDIR)
# CMAKE_INSTALL_FULL_SBINDIR - system admin executables full path (PREFIX/SBINDIR)
# CMAKE_INSTALL_FULL_LIBEXECDIR - program executables full path (PREFIX/LIBEXECDIR)
# CMAKE_INSTALL_FULL_SYSCONFDIR - read-only single-machine data fill path (PREFIX/SYSCONFDIR)
# CMAKE_INSTALL_FULL_SHAREDSTATEDIR - modifiable architecture-independent data full path (PREFIX/SHAREDSTATEDIR)
# CMAKE_INSTALL_FULL_LOCALSTATEDIR - modifiable single-machine data full path (PREFIX/LOCALSTATEDIR)
# CMAKE_INSTALL_FULL_LIBDIR - object code libraries full path (PREFIX/LIBDIR)
# CMAKE_INSTALL_FULL_INCLUDEDIR - C header files full path (PREFIX/INCLUDEDIR)
# CMAKE_INSTALL_FULL_OLDINCLUDEDIR - C header files for non-gcc full path (/usr/include)
# CMAKE_INSTALL_FULL_DATAROOTDIR - read-only architecture-independent data root full path (PREFIX/DATAROOTDIR)
# CMAKE_INSTALL_FULL_DATADIR - read-only architecture-independent data full path (PREFIX/DATADIR)
# CMAKE_INSTALL_FULL_INFODIR - info documentation full path (PREFIX/INFODIR)
# CMAKE_INSTALL_FULL_LOCALEDIR - locale-dependent data full path (PREFIX/LOCALEDIR)
# CMAKE_INSTALL_FULL_MANDIR - man documentation full path (PREFIX/MANDIR)
# CMAKE_INSTALL_FULL_DOCDIR - documentation root full path (PREFIX/DOCDIR)
#=============================================================================
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Installation directories
#
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(CMAKE_INSTALL_LIBDIR "lib" CACHE PATH "object code libraries (lib)")
endif()
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DATADIR)
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
endif()
if(NOT DEFINED CMAKE_INSTALL_INFODIR)
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info" CACHE PATH "info documentation (DATAROOTDIR/info)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LOCALEDIR)
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
endif()
if(NOT DEFINED CMAKE_INSTALL_MANDIR)
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man" CACHE PATH "man documentation (DATAROOTDIR/man)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DOCDIR)
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
endif()
mark_as_advanced(
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_SBINDIR
CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_SYSCONFDIR
CMAKE_INSTALL_SHAREDSTATEDIR
CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_DATADIR
CMAKE_INSTALL_INFODIR
CMAKE_INSTALL_LOCALEDIR
CMAKE_INSTALL_MANDIR
CMAKE_INSTALL_DOCDIR
)
# Result directories
#
foreach(dir
BINDIR
SBINDIR
LIBEXECDIR
SYSCONFDIR
SHAREDSTATEDIR
LOCALSTATEDIR
LIBDIR
INCLUDEDIR
OLDINCLUDEDIR
DATAROOTDIR
DATADIR
INFODIR
LOCALEDIR
MANDIR
DOCDIR
)
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
else()
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
endif()
endforeach()

0 comments on commit a262fe0

Please sign in to comment.