1if (COMPILER_RT_BUILD_SANITIZERS)
2  set(SANITIZER_HEADERS
3    sanitizer/allocator_interface.h
4    sanitizer/asan_interface.h
5    sanitizer/common_interface_defs.h
6    sanitizer/coverage_interface.h
7    sanitizer/dfsan_interface.h
8    sanitizer/hwasan_interface.h
9    sanitizer/linux_syscall_hooks.h
10    sanitizer/lsan_interface.h
11    sanitizer/msan_interface.h
12    sanitizer/netbsd_syscall_hooks.h
13    sanitizer/scudo_interface.h
14    sanitizer/tsan_interface.h
15    sanitizer/tsan_interface_atomic.h
16    sanitizer/ubsan_interface.h
17    )
18  set(FUZZER_HEADERS
19    fuzzer/FuzzedDataProvider.h
20    )
21endif(COMPILER_RT_BUILD_SANITIZERS)
22
23if (COMPILER_RT_BUILD_MEMPROF)
24  set(MEMPROF_HEADERS
25    sanitizer/memprof_interface.h
26    profile/MemProfData.inc
27    )
28endif(COMPILER_RT_BUILD_MEMPROF)
29
30if (COMPILER_RT_BUILD_XRAY)
31  set(XRAY_HEADERS
32    xray/xray_interface.h
33    xray/xray_log_interface.h
34    xray/xray_records.h
35    )
36endif(COMPILER_RT_BUILD_XRAY)
37
38if (COMPILER_RT_BUILD_ORC)
39  set(ORC_HEADERS
40    orc_rt/c_api.h
41    )
42endif(COMPILER_RT_BUILD_ORC)
43
44if (COMPILER_RT_BUILD_PROFILE)
45  set(PROFILE_HEADERS
46    profile/InstrProfData.inc
47    )
48endif(COMPILER_RT_BUILD_PROFILE)
49
50set(COMPILER_RT_HEADERS
51  ${SANITIZER_HEADERS}
52  ${FUZZER_HEADERS}
53  ${MEMPROF_HEADERS}
54  ${XRAY_HEADERS}
55  ${ORC_HEADERS}
56  ${PROFILE_HEADERS})
57
58set(output_dir ${COMPILER_RT_OUTPUT_DIR}/include)
59
60# Copy compiler-rt headers to the build tree.
61set(out_files)
62foreach( f ${COMPILER_RT_HEADERS} )
63  set( src ${CMAKE_CURRENT_SOURCE_DIR}/${f} )
64  set( dst ${output_dir}/${f} )
65  add_custom_command(OUTPUT ${dst}
66    DEPENDS ${src}
67    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
68    COMMENT "Copying compiler-rt's ${f}...")
69  list(APPEND out_files ${dst})
70endforeach( f )
71
72add_custom_target(compiler-rt-headers ALL DEPENDS ${out_files})
73add_dependencies(compiler-rt compiler-rt-headers)
74set_target_properties(compiler-rt-headers PROPERTIES FOLDER "Compiler-RT Misc")
75
76# Install sanitizer headers.
77install(FILES ${SANITIZER_HEADERS}
78  COMPONENT compiler-rt-headers
79  PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
80  DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/sanitizer)
81# Install fuzzer headers.
82install(FILES ${FUZZER_HEADERS}
83  COMPONENT compiler-rt-headers
84  PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
85  DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/fuzzer)
86# Install memprof headers.
87if (COMPILER_RT_BUILD_MEMPROF)
88  install(FILES sanitizer/memprof_interface.h
89    COMPONENT compiler-rt-headers
90    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
91    DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/sanitizer)
92endif(COMPILER_RT_BUILD_MEMPROF)
93# Install xray headers.
94install(FILES ${XRAY_HEADERS}
95  COMPONENT compiler-rt-headers
96  PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
97  DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/xray)
98# Install ORC headers.
99install(FILES ${ORC_HEADERS}
100  COMPONENT compiler-rt-headers
101  PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
102  DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/orc)
103# Install profile headers.
104install(FILES ${PROFILE_HEADERS}
105  COMPONENT compiler-rt-headers
106  PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
107  DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/profile)
108
109if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDEs.
110  add_custom_target(install-compiler-rt-headers
111                    DEPENDS compiler-rt-headers
112                    COMMAND "${CMAKE_COMMAND}"
113                            -DCMAKE_INSTALL_COMPONENT="compiler-rt-headers"
114                            -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
115                    USES_TERMINAL)
116  add_custom_target(install-compiler-rt-headers-stripped
117                    DEPENDS compiler-rt-headers
118                    COMMAND "${CMAKE_COMMAND}"
119                            -DCMAKE_INSTALL_COMPONENT="compiler-rt-headers"
120                            -DCMAKE_INSTALL_DO_STRIP=1
121                            -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
122                    USES_TERMINAL)
123endif()
124