1diff --git a/CMakeLists.txt b/CMakeLists.txt
2index 910d04b54b6d..80ef692d83eb 100644
3--- a/CMakeLists.txt
4+++ b/CMakeLists.txt
5@@ -31,6 +31,8 @@ set(CMAKE_MODULE_PATH
6 if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXX_STANDALONE_BUILD)
7 project(libcxx CXX C)
8
9+ include(GNUInstallDirs)
10+
11 set(PACKAGE_NAME libcxx)
12 set(PACKAGE_VERSION 11.1.0)
13 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
14@@ -418,7 +420,7 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
15 if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
16 set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
17 set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR})
18- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
19+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
20 if(LIBCXX_LIBDIR_SUBDIR)
21 string(APPEND LIBCXX_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR})
22 string(APPEND LIBCXX_INSTALL_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR})
23@@ -426,11 +428,11 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
24 elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
25 set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
26 set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR})
27- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX})
28+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX})
29 else()
30 set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
31 set(LIBCXX_HEADER_DIR ${CMAKE_BINARY_DIR})
32- set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX})
33+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX})
34 endif()
35
36 file(MAKE_DIRECTORY "${LIBCXX_BINARY_INCLUDE_DIR}")
37diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake
38index c5aa26739e36..8841c4a5252d 100644
39--- a/cmake/Modules/HandleLibCXXABI.cmake
40+++ b/cmake/Modules/HandleLibCXXABI.cmake
41@@ -63,7 +63,7 @@ macro(setup_abi_lib abidefines abishared abistatic abifiles abidirs)
42
43 if (LIBCXX_INSTALL_HEADERS)
44 install(FILES "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}"
45- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dstdir}
46+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir}
47 COMPONENT cxx-headers
48 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
49 )
50diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
51index be8141c98166..93847e5758cc 100644
52--- a/include/CMakeLists.txt
53+++ b/include/CMakeLists.txt
54@@ -257,7 +257,7 @@ if (LIBCXX_INSTALL_HEADERS)
55 foreach(file ${files})
56 get_filename_component(dir ${file} DIRECTORY)
57 install(FILES ${file}
58- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir}
59+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dir}
60 COMPONENT ${CXX_HEADER_TARGET}
61 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
62 )
63@@ -265,7 +265,7 @@ if (LIBCXX_INSTALL_HEADERS)
64
65 # Install the generated header as __config.
66 install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
67- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1
68+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1
69 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
70 RENAME __config
71 COMPONENT ${CXX_HEADER_TARGET})
72diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
73index 2001c09761d9..5bd11ea6b400 100644
74--- a/src/CMakeLists.txt
75+++ b/src/CMakeLists.txt
76@@ -344,21 +344,21 @@ if (LIBCXX_INSTALL_LIBRARY)
77 install(TARGETS cxx_shared
78 ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
79 LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
80- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
81+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
82 endif()
83
84 if (LIBCXX_INSTALL_STATIC_LIBRARY)
85 install(TARGETS cxx_static
86 ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
87 LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
88- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
89+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
90 endif()
91
92 if(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY)
93 install(TARGETS cxx_experimental
94 LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
95 ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
96- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
97+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
98 endif()
99
100 # NOTE: This install command must go after the cxx install command otherwise