1diff --git a/CMakeLists.txt b/CMakeLists.txt
2index f997c53410c1..ac079d89b57b 100644
3--- a/CMakeLists.txt
4+++ b/CMakeLists.txt
5@@ -12,6 +12,7 @@ cmake_minimum_required(VERSION 3.4.3)
6 # Check if compiler-rt is built as a standalone project.
7 if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD)
8 project(CompilerRT C CXX ASM)
9+ include(GNUInstallDirs)
10 set(COMPILER_RT_STANDALONE_BUILD TRUE)
11 endif()
12
13diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake
14index bc5fb9ff722b..91fb79d1980c 100644
15--- a/cmake/Modules/AddCompilerRT.cmake
16+++ b/cmake/Modules/AddCompilerRT.cmake
17@@ -344,7 +344,7 @@ macro(add_compiler_rt_resource_file target_name file_name component)
18 add_custom_target(${target_name} DEPENDS ${dst_file})
19 # Install in Clang resource directory.
20 install(FILES ${file_name}
21- DESTINATION ${COMPILER_RT_INSTALL_PATH}
22+ DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_PREFIX}
23 COMPONENT ${component})
24 add_dependencies(${component} ${target_name})
25
26@@ -361,7 +361,7 @@ macro(add_compiler_rt_script name)
27 add_custom_target(${name} DEPENDS ${dst})
28 install(FILES ${dst}
29 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
30- DESTINATION ${COMPILER_RT_INSTALL_PATH}/bin)
31+ DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_BINDIR})
32 endmacro(add_compiler_rt_script src name)
33
34 # Builds custom version of libc++ and installs it in <prefix>.
35diff --git a/cmake/Modules/CompilerRTDarwinUtils.cmake b/cmake/Modules/CompilerRTDarwinUtils.cmake
36index f646975475bb..75885bf305b8 100644
37--- a/cmake/Modules/CompilerRTDarwinUtils.cmake
38+++ b/cmake/Modules/CompilerRTDarwinUtils.cmake
39@@ -391,7 +391,7 @@ macro(darwin_add_embedded_builtin_libraries)
40 set(DARWIN_macho_embedded_LIBRARY_OUTPUT_DIR
41 ${COMPILER_RT_OUTPUT_DIR}/lib/macho_embedded)
42 set(DARWIN_macho_embedded_LIBRARY_INSTALL_DIR
43- ${COMPILER_RT_INSTALL_PATH}/lib/macho_embedded)
44+ ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_LIBDIR}/macho_embedded)
45
46 set(CFLAGS_armv7 "-target thumbv7-apple-darwin-eabi")
47 set(CFLAGS_i386 "-march=pentium")
48diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake
49index b38c6ca96fac..a4580414cbc8 100644
50--- a/cmake/base-config-ix.cmake
51+++ b/cmake/base-config-ix.cmake
52@@ -43,11 +43,11 @@ if (LLVM_TREE_AVAILABLE)
53 else()
54 # Take output dir and install path from the user.
55 set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
56- "Path where built compiler-rt libraries should be stored.")
57+ "Path where built compiler-rt build artifacts should be stored.")
58 set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
59 "Path where built compiler-rt executables should be stored.")
60- set(COMPILER_RT_INSTALL_PATH ${CMAKE_INSTALL_PREFIX} CACHE PATH
61- "Path where built compiler-rt libraries should be installed.")
62+ set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
63+ "Prefix where built compiler-rt artifacts should be installed, comes before CMAKE_INSTALL_PREFIX.")
64 option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
65 option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
66 # Use a host compiler to compile/link tests.
67@@ -67,9 +67,9 @@ if(NOT DEFINED COMPILER_RT_OS_DIR)
68 string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
69 endif()
70 set(COMPILER_RT_LIBRARY_OUTPUT_DIR
71- ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
72+ ${COMPILER_RT_OUTPUT_DIR}/${CMAKE_INSTALL_FULL_LIBDIR}/${COMPILER_RT_OS_DIR})
73 set(COMPILER_RT_LIBRARY_INSTALL_DIR
74- ${COMPILER_RT_INSTALL_PATH}/lib/${COMPILER_RT_OS_DIR})
75+ ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_LIBDIR}/${COMPILER_RT_OS_DIR})
76
77 if(APPLE)
78 # On Darwin if /usr/include doesn't exist, the user probably has Xcode but not
79diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
80index ec3bf40b95e6..af119f10ee2b 100644
81--- a/include/CMakeLists.txt
82+++ b/include/CMakeLists.txt
83@@ -44,8 +44,8 @@ set_target_properties(compiler-rt-headers PROPERTIES FOLDER "Compiler-RT Misc")
84 # Install sanitizer headers.
85 install(FILES ${SANITIZER_HEADERS}
86 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
87- DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/sanitizer)
88+ DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_INCLUDEDIR}/sanitizer)
89 # Install xray headers.
90 install(FILES ${XRAY_HEADERS}
91 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
92- DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/xray)
93+ DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_INCLUDEDIR}/xray)
94diff --git a/lib/dfsan/CMakeLists.txt b/lib/dfsan/CMakeLists.txt
95index 2c486bff821b..0ee715da95f8 100644
96--- a/lib/dfsan/CMakeLists.txt
97+++ b/lib/dfsan/CMakeLists.txt
98@@ -44,4 +44,4 @@ add_custom_command(OUTPUT ${dfsan_abilist_filename}
99 DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt)
100 add_dependencies(dfsan dfsan_abilist)
101 install(FILES ${dfsan_abilist_filename}
102- DESTINATION ${COMPILER_RT_INSTALL_PATH})
103+ DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_PREFIX})