1diff --git a/CMakeLists.txt b/CMakeLists.txt
2index 9e74014134a0..976e6a1757fd 100644
3--- a/CMakeLists.txt
4+++ b/CMakeLists.txt
5@@ -5,6 +5,8 @@ cmake_minimum_required(VERSION 3.13.4)
6 if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
7 project(Clang)
8
9+ include(GNUInstallDirs)
10+
11 set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")
12 set(CMAKE_CXX_STANDARD_REQUIRED YES)
13 set(CMAKE_CXX_EXTENSIONS NO)
14@@ -416,7 +418,7 @@ include_directories(BEFORE
15
16 if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
17 install(DIRECTORY include/clang include/clang-c
18- DESTINATION include
19+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
20 COMPONENT clang-headers
21 FILES_MATCHING
22 PATTERN "*.def"
23@@ -425,7 +427,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
24 )
25
26 install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang
27- DESTINATION include
28+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
29 COMPONENT clang-headers
30 FILES_MATCHING
31 PATTERN "CMakeFiles" EXCLUDE
32@@ -445,7 +447,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
33
34 add_custom_target(bash-autocomplete DEPENDS utils/bash-autocomplete.sh)
35 install(PROGRAMS utils/bash-autocomplete.sh
36- DESTINATION share/clang
37+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
38 COMPONENT bash-autocomplete)
39 if(NOT LLVM_ENABLE_IDE)
40 add_llvm_install_targets(install-bash-autocomplete
41diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
42index 704278a0e93b..d25c8d325c71 100644
43--- a/cmake/modules/AddClang.cmake
44+++ b/cmake/modules/AddClang.cmake
45@@ -123,9 +123,9 @@ macro(add_clang_library name)
46 install(TARGETS ${lib}
47 COMPONENT ${lib}
48 ${export_to_clangtargets}
49- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
50- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
51- RUNTIME DESTINATION bin)
52+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
53+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
54+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
55
56 if (NOT LLVM_ENABLE_IDE)
57 add_llvm_install_targets(install-${lib}
58@@ -170,7 +170,7 @@ macro(add_clang_tool name)
59
60 install(TARGETS ${name}
61 ${export_to_clangtargets}
62- RUNTIME DESTINATION bin
63+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
64 COMPONENT ${name})
65
66 if(NOT LLVM_ENABLE_IDE)
67@@ -185,7 +185,7 @@ endmacro()
68 macro(add_clang_symlink name dest)
69 add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
70 # Always generate install targets
71- llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
72+ llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE)
73 endmacro()
74
75 function(clang_target_link_libraries target type)
76diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
77index b2c0ce8dd4a0..19e5443d8c25 100644
78--- a/lib/Headers/CMakeLists.txt
79+++ b/lib/Headers/CMakeLists.txt
80@@ -215,7 +215,7 @@ set_target_properties(clang-resource-headers PROPERTIES
81 FOLDER "Misc"
82 RUNTIME_OUTPUT_DIRECTORY "${output_dir}")
83
84-set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
85+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
86
87 install(
88 FILES ${files} ${generated_files}
89diff --git a/tools/c-index-test/CMakeLists.txt b/tools/c-index-test/CMakeLists.txt
90index ceef4b08637c..8efad5520ca4 100644
91--- a/tools/c-index-test/CMakeLists.txt
92+++ b/tools/c-index-test/CMakeLists.txt
93@@ -54,7 +54,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
94 set_property(TARGET c-index-test APPEND PROPERTY INSTALL_RPATH
95 "@executable_path/../../lib")
96 else()
97- set(INSTALL_DESTINATION bin)
98+ set(INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR})
99 endif()
100
101 install(TARGETS c-index-test
102diff --git a/tools/clang-format/CMakeLists.txt b/tools/clang-format/CMakeLists.txt
103index 35ecdb11253c..d77d75de0094 100644
104--- a/tools/clang-format/CMakeLists.txt
105+++ b/tools/clang-format/CMakeLists.txt
106@@ -21,20 +21,20 @@ if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE )
107 endif()
108
109 install(PROGRAMS clang-format-bbedit.applescript
110- DESTINATION share/clang
111+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
112 COMPONENT clang-format)
113 install(PROGRAMS clang-format-diff.py
114- DESTINATION share/clang
115+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
116 COMPONENT clang-format)
117 install(PROGRAMS clang-format-sublime.py
118- DESTINATION share/clang
119+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
120 COMPONENT clang-format)
121 install(PROGRAMS clang-format.el
122- DESTINATION share/clang
123+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
124 COMPONENT clang-format)
125 install(PROGRAMS clang-format.py
126- DESTINATION share/clang
127+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
128 COMPONENT clang-format)
129 install(PROGRAMS git-clang-format
130- DESTINATION bin
131+ DESTINATION ${CMAKE_INSTALL_BINDIR}
132 COMPONENT clang-format)
133diff --git a/tools/clang-rename/CMakeLists.txt b/tools/clang-rename/CMakeLists.txt
134index cda8e29ec5b1..0134d8ccd70b 100644
135--- a/tools/clang-rename/CMakeLists.txt
136+++ b/tools/clang-rename/CMakeLists.txt
137@@ -19,8 +19,8 @@ clang_target_link_libraries(clang-rename
138 )
139
140 install(PROGRAMS clang-rename.py
141- DESTINATION share/clang
142+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
143 COMPONENT clang-rename)
144 install(PROGRAMS clang-rename.el
145- DESTINATION share/clang
146+ DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
147 COMPONENT clang-rename)
148diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
149index 51ff2e7e1565..1ed5f8a079a1 100644
150--- a/tools/libclang/CMakeLists.txt
151+++ b/tools/libclang/CMakeLists.txt
152@@ -166,7 +166,7 @@ endif()
153 if(INTERNAL_INSTALL_PREFIX)
154 set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
155 else()
156- set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
157+ set(LIBCLANG_HEADERS_INSTALL_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
158 endif()
159
160 install(DIRECTORY ../../include/clang-c
161@@ -196,7 +196,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
162 COMPONENT
163 libclang-python-bindings
164 DESTINATION
165- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
166+ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
167 endforeach()
168 if(NOT LLVM_ENABLE_IDE)
169 add_custom_target(libclang-python-bindings)
170diff --git a/tools/scan-build/CMakeLists.txt b/tools/scan-build/CMakeLists.txt
171index ec0702d76f18..d25d982f51da 100644
172--- a/tools/scan-build/CMakeLists.txt
173+++ b/tools/scan-build/CMakeLists.txt
174@@ -47,7 +47,7 @@ if(CLANG_INSTALL_SCANBUILD)
175 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
176 list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
177 install(PROGRAMS bin/${BinFile}
178- DESTINATION bin
179+ DESTINATION ${CMAKE_INSTALL_BINDIR}
180 COMPONENT scan-build)
181 endforeach()
182
183@@ -61,7 +61,7 @@ if(CLANG_INSTALL_SCANBUILD)
184 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
185 list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
186 install(PROGRAMS libexec/${LibexecFile}
187- DESTINATION libexec
188+ DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}
189 COMPONENT scan-build)
190 endforeach()
191
192@@ -89,7 +89,7 @@ if(CLANG_INSTALL_SCANBUILD)
193 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
194 list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
195 install(FILES share/scan-build/${ShareFile}
196- DESTINATION share/scan-build
197+ DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-build
198 COMPONENT scan-build)
199 endforeach()
200
201diff --git a/tools/scan-view/CMakeLists.txt b/tools/scan-view/CMakeLists.txt
202index dd3d33439299..fea19c12ce70 100644
203--- a/tools/scan-view/CMakeLists.txt
204+++ b/tools/scan-view/CMakeLists.txt
205@@ -19,7 +19,7 @@ if(CLANG_INSTALL_SCANVIEW)
206 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
207 list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
208 install(PROGRAMS bin/${BinFile}
209- DESTINATION bin
210+ DESTINATION ${CMAKE_INSTALL_BINDIR}
211 COMPONENT scan-view)
212 endforeach()
213
214@@ -33,7 +33,7 @@ if(CLANG_INSTALL_SCANVIEW)
215 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile})
216 list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile})
217 install(FILES share/${ShareFile}
218- DESTINATION share/scan-view
219+ DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-view
220 COMPONENT scan-view)
221 endforeach()
222
223diff --git a/utils/hmaptool/CMakeLists.txt b/utils/hmaptool/CMakeLists.txt
224index 62f2de0cb15c..6aa66825b6ec 100644
225--- a/utils/hmaptool/CMakeLists.txt
226+++ b/utils/hmaptool/CMakeLists.txt
227@@ -10,7 +10,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HM
228
229 list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HMAPTOOL})
230 install(PROGRAMS ${CLANG_HMAPTOOL}
231- DESTINATION bin
232+ DESTINATION ${CMAKE_INSTALL_BINDIR}
233 COMPONENT hmaptool)
234
235 add_custom_target(hmaptool ALL DEPENDS ${Depends})