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/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 xray headers. 87install(FILES ${XRAY_HEADERS} 88 COMPONENT compiler-rt-headers 89 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 90 DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/xray) 91# Install ORC headers. 92install(FILES ${ORC_HEADERS} 93 COMPONENT compiler-rt-headers 94 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 95 DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/orc) 96# Install profile headers. 97install(FILES ${PROFILE_HEADERS} 98 COMPONENT compiler-rt-headers 99 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 100 DESTINATION ${COMPILER_RT_INSTALL_INCLUDE_DIR}/profile) 101 102if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDEs. 103 add_custom_target(install-compiler-rt-headers 104 DEPENDS compiler-rt-headers 105 COMMAND "${CMAKE_COMMAND}" 106 -DCMAKE_INSTALL_COMPONENT="compiler-rt-headers" 107 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" 108 USES_TERMINAL) 109 add_custom_target(install-compiler-rt-headers-stripped 110 DEPENDS compiler-rt-headers 111 COMMAND "${CMAKE_COMMAND}" 112 -DCMAKE_INSTALL_COMPONENT="compiler-rt-headers" 113 -DCMAKE_INSTALL_DO_STRIP=1 114 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" 115 USES_TERMINAL) 116endif() 117