1diff --git a/CMakeLists.txt b/CMakeLists.txt
2index 60564dc96c7b..77d832ad5a44 100644
3--- a/CMakeLists.txt
4+++ b/CMakeLists.txt
5@@ -26,6 +26,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 10.0.1)
13 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
14@@ -415,7 +417,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@@ -423,10 +425,10 @@ 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_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX})
32+ set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX})
33 endif()
34
35 file(MAKE_DIRECTORY "${LIBCXX_BINARY_INCLUDE_DIR}")
36diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake
37index 10f100f7f0fb..95ed3978ab73 100644
38--- a/cmake/Modules/HandleLibCXXABI.cmake
39+++ b/cmake/Modules/HandleLibCXXABI.cmake
40@@ -61,7 +61,7 @@ macro(setup_abi_lib abidefines abishared abistatic abifiles abidirs)
41
42 if (LIBCXX_INSTALL_HEADERS)
43 install(FILES "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}"
44- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dstdir}
45+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir}
46 COMPONENT cxx-headers
47 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
48 )
49diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
50index 302da8a131b4..4c6ab463f564 100644
51--- a/include/CMakeLists.txt
52+++ b/include/CMakeLists.txt
53@@ -244,7 +244,7 @@ if (LIBCXX_INSTALL_HEADERS)
54 foreach(file ${files})
55 get_filename_component(dir ${file} DIRECTORY)
56 install(FILES ${file}
57- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir}
58+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dir}
59 COMPONENT ${CXX_HEADER_TARGET}
60 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
61 )
62@@ -253,7 +253,7 @@ if (LIBCXX_INSTALL_HEADERS)
63 if (LIBCXX_NEEDS_SITE_CONFIG)
64 # Install the generated header as __config.
65 install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
66- DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1
67+ DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1
68 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
69 RENAME __config
70 COMPONENT ${CXX_HEADER_TARGET})
71diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
72index 120505fe18da..9b8456d8405a 100644
73--- a/src/CMakeLists.txt
74+++ b/src/CMakeLists.txt
75@@ -341,21 +341,21 @@ if (LIBCXX_INSTALL_LIBRARY)
76 install(TARGETS cxx_shared
77 ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
78 LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
79- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
80+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
81 endif()
82
83 if (LIBCXX_INSTALL_STATIC_LIBRARY)
84 install(TARGETS cxx_static
85 ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
86 LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
87- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
88+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
89 endif()
90
91 if(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY)
92 install(TARGETS ${LIBCXX_INSTALL_TARGETS} ${experimental_lib}
93 LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
94 ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
95- RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
96+ RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
97 endif()
98
99 # NOTE: This install command must go after the cxx install command otherwise