Blob Blame History Raw
From 626bc580272cba6ea11b81f14762dc61c4a88f9d Mon Sep 17 00:00:00 2001
From: Rich Mattes <richmattes@gmail.com>
Date: Sat, 23 Aug 2014 12:07:14 -0400
Subject: [PATCH] Add option to enable GNU Install Dirs

This commit adds an option to enable the GNUInstallDirs.cmake script and
use it to define console_bridge's installation directories. When
enabled, libraries, headers, and data are installed to paths defined by
the GNUInstallDirs.cmake script. Otherwise, the hard-coded "lib",
"share", and "include" strings are used, resulting in no change in
functionality after this commit is applied.

The option is diabled by default.

Signed-off-by: Rich Mattes <richmattes@gmail.com>
---
 CMakeLists.txt                 | 22 +++++++++++++++++-----
 console_bridge-config.cmake.in |  2 +-
 console_bridge.pc.in           |  4 ++--
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ab0ad99..2c1980b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,21 +30,33 @@ if(NOT DEFINED BUILD_SHARED_LIBS)
   option(BUILD_SHARED_LIBS "Build dynamically-linked binaries" ON)
 endif()
 
+option(USE_GNU_INSTALL_DIRS "Use GNU Install Directories when installing" OFF)
+
+if (USE_GNU_INSTALL_DIRS)
+  include(GNUInstallDirs)
+else()
+  set(CMAKE_INSTALL_DATAROOTDIR "share")
+  set(CMAKE_INSTALL_INCLUDEDIR "include")
+  set(CMAKE_INSTALL_LIBDIR "lib")
+endif()
+
 add_library(${PROJECT_NAME} src/console.cpp)
 target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
 
 install(TARGETS ${PROJECT_NAME}
-  DESTINATION lib/)
+  DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
 install(DIRECTORY include/
-  DESTINATION include
-  FILES_MATCHING PATTERN "*.h")
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 
+  FILES_MATCHING PATTERN "*.h") 
 
 set(PKG_NAME ${PROJECT_NAME})
 set(PKG_LIBRARIES ${PROJECT_NAME})
 set(cmake_conf_file "${PROJECT_NAME}-config.cmake")
 configure_file("${cmake_conf_file}.in" "${CMAKE_BINARY_DIR}/${cmake_conf_file}" @ONLY)
-install(FILES "${CMAKE_BINARY_DIR}/${cmake_conf_file}" DESTINATION share/${PROJECT_NAME}/cmake/ COMPONENT cmake)
+install(FILES "${CMAKE_BINARY_DIR}/${cmake_conf_file}" 
+  DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake/ 
+  COMPONENT cmake) 
 
 if (NOT MSVC)
   set(PKG_DESC "Console Bridge")
@@ -52,7 +64,7 @@ if (NOT MSVC)
   set(pkg_conf_file "console_bridge.pc")
   configure_file("${pkg_conf_file}.in" "${CMAKE_BINARY_DIR}/${pkg_conf_file}" @ONLY)
   install(FILES "${CMAKE_BINARY_DIR}/${pkg_conf_file}"
-    DESTINATION lib/pkgconfig/ COMPONENT pkgconfig)
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ COMPONENT pkgconfig)
 endif()
 
 SET_DIRECTORY_PROPERTIES(PROPERTIES
diff --git a/console_bridge-config.cmake.in b/console_bridge-config.cmake.in
index a64762b..c7a55fb 100644
--- a/console_bridge-config.cmake.in
+++ b/console_bridge-config.cmake.in
@@ -8,7 +8,7 @@ set(@PKG_NAME@_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include")
 foreach(lib @PKG_LIBRARIES@)
   set(onelib "${lib}-NOTFOUND")
   find_library(onelib ${lib}
-    PATHS "@CMAKE_INSTALL_PREFIX@/lib"
+    PATHS "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@"
     NO_DEFAULT_PATH
     )
   if(NOT onelib)
diff --git a/console_bridge.pc.in b/console_bridge.pc.in
index 443963e..1e8bebc 100644
--- a/console_bridge.pc.in
+++ b/console_bridge.pc.in
@@ -1,8 +1,8 @@
 # This file was generated by CMake for @PROJECT_NAME@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
+libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
 
 Name: @PKG_NAME@
 Description: @PKG_DESC@
-- 
2.0.4