Commit 9a1024465cf3650d513d3e997435683fcf518e2b

Edward Thomson 2020-03-21T16:49:44

Merge pull request #5455 from pks-t/pks/cmake-install-dirs cmake: use install directories provided via GNUInstallDirs

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 113e554..8264158 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,6 +36,7 @@ INCLUDE(AddCFlagIfSupported)
 INCLUDE(FindPkgLibraries)
 INCLUDE(FindThreads)
 INCLUDE(FindStatNsec)
+INCLUDE(GNUInstallDirs)
 INCLUDE(IdeSplitSources)
 INCLUDE(FeatureSummary)
 INCLUDE(EnableWarnings)
diff --git a/README.md b/README.md
index ef85fd9..b5f0440 100644
--- a/README.md
+++ b/README.md
@@ -247,9 +247,9 @@ For more advanced use or questions about CMake please read <https://cmake.org/Wi
 
 The following CMake variables are declared:
 
-- `BIN_INSTALL_DIR`: Where to install binaries to.
-- `LIB_INSTALL_DIR`: Where to install libraries to.
-- `INCLUDE_INSTALL_DIR`: Where to install headers to.
+- `CMAKE_INSTALL_BINDIR`: Where to install binaries to.
+- `CMAKE_INSTALL_LIBDIR`: Where to install libraries to.
+- `CMAKE_INSTALL_INCLUDEDIR`: Where to install headers to.
 - `BUILD_SHARED_LIBS`: Build libgit2 as a Shared Library (defaults to ON)
 - `BUILD_CLAR`: Build [Clar](https://github.com/vmg/clar)-based test suite (defaults to ON)
 - `THREADSAFE`: Build libgit2 with threading support (defaults to ON)
diff --git a/cmake/Modules/PkgBuildConfig.cmake b/cmake/Modules/PkgBuildConfig.cmake
index e4c5744..54c5e29 100644
--- a/cmake/Modules/PkgBuildConfig.cmake
+++ b/cmake/Modules/PkgBuildConfig.cmake
@@ -27,8 +27,8 @@ function(pkg_build_config)
     # Write .pc "header"
     file(WRITE "${PKGCONFIG_FILE}"
         "prefix=\"${CMAKE_INSTALL_PREFIX}\"\n"
-        "libdir=\"${LIB_INSTALL_DIR}\"\n"
-        "includedir=\"${INCLUDE_INSTALL_DIR}\"\n"
+        "libdir=\"${CMAKE_INSTALL_FULL_LIBDIR}\"\n"
+        "includedir=\"${CMAKE_INSTALL_FULL_INCLUDEDIR}\"\n"
         "\n"
         "Name: ${PKGCONFIG_NAME}\n"
         "Description: ${PKGCONFIG_DESCRIPTION}\n"
@@ -73,7 +73,5 @@ function(pkg_build_config)
     file(APPEND "${PKGCONFIG_FILE}" "Cflags: -I\${includedir} ${PKGCONFIG_CFLAGS}\n")
 
     # Install .pc file
-    install(FILES "${PKGCONFIG_FILE}"
-        DESTINATION "${LIB_INSTALL_DIR}/pkgconfig"
-    )
+    install(FILES "${PKGCONFIG_FILE}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 endfunction()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3dfb69c..dff1d94 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -21,12 +21,6 @@ SET(LIBGIT2_INCLUDES
 SET(LIBGIT2_SYSTEM_INCLUDES "")
 SET(LIBGIT2_LIBS "")
 
-# Installation paths
-#
-SET(BIN_INSTALL_DIR bin CACHE PATH "Where to install binaries to.")
-SET(LIB_INSTALL_DIR lib CACHE PATH "Where to install libraries to.")
-SET(INCLUDE_INSTALL_DIR include CACHE PATH "Where to install headers to.")
-
 # Enable tracing
 IF(ENABLE_TRACE)
 	SET(GIT_TRACE 1)
@@ -391,9 +385,9 @@ ENDIF ()
 
 # Install
 INSTALL(TARGETS git2
-	RUNTIME DESTINATION ${BIN_INSTALL_DIR}
-	LIBRARY DESTINATION ${LIB_INSTALL_DIR}
-	ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 )
-INSTALL(DIRECTORY ${libgit2_SOURCE_DIR}/include/git2 DESTINATION ${INCLUDE_INSTALL_DIR} )
-INSTALL(FILES ${libgit2_SOURCE_DIR}/include/git2.h DESTINATION ${INCLUDE_INSTALL_DIR} )
+INSTALL(DIRECTORY ${libgit2_SOURCE_DIR}/include/git2 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+INSTALL(FILES ${libgit2_SOURCE_DIR}/include/git2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})