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 ) 27endif(COMPILER_RT_BUILD_MEMPROF) 28 29if (COMPILER_RT_BUILD_XRAY) 30 set(XRAY_HEADERS 31 xray/xray_interface.h 32 xray/xray_log_interface.h 33 xray/xray_records.h 34 ) 35endif(COMPILER_RT_BUILD_XRAY) 36 37if (COMPILER_RT_BUILD_PROFILE) 38 set(PROFILE_HEADERS 39 profile/InstrProfData.inc 40 ) 41endif(COMPILER_RT_BUILD_PROFILE) 42 43set(COMPILER_RT_HEADERS 44 ${SANITIZER_HEADERS} 45 ${FUZZER_HEADERS} 46 ${MEMPROF_HEADERS} 47 ${XRAY_HEADERS} 48 ${PROFILE_HEADERS}) 49 50set(output_dir ${COMPILER_RT_OUTPUT_DIR}/include) 51 52# Copy compiler-rt headers to the build tree. 53set(out_files) 54foreach( f ${COMPILER_RT_HEADERS} ) 55 set( src ${CMAKE_CURRENT_SOURCE_DIR}/${f} ) 56 set( dst ${output_dir}/${f} ) 57 add_custom_command(OUTPUT ${dst} 58 DEPENDS ${src} 59 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst} 60 COMMENT "Copying compiler-rt's ${f}...") 61 list(APPEND out_files ${dst}) 62endforeach( f ) 63 64add_custom_target(compiler-rt-headers ALL DEPENDS ${out_files}) 65add_dependencies(compiler-rt compiler-rt-headers) 66set_target_properties(compiler-rt-headers PROPERTIES FOLDER "Compiler-RT Misc") 67 68# Install sanitizer headers. 69install(FILES ${SANITIZER_HEADERS} 70 COMPONENT compiler-rt-headers 71 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 72 DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/sanitizer) 73# Install fuzzer headers. 74install(FILES ${FUZZER_HEADERS} 75 COMPONENT compiler-rt-headers 76 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 77 DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/fuzzer) 78# Install xray headers. 79install(FILES ${XRAY_HEADERS} 80 COMPONENT compiler-rt-headers 81 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 82 DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/xray) 83# Install profile headers. 84install(FILES ${PROFILE_HEADERS} 85 COMPONENT compiler-rt-headers 86 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 87 DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/profile) 88 89if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDEs. 90 add_custom_target(install-compiler-rt-headers 91 DEPENDS compiler-rt-headers 92 COMMAND "${CMAKE_COMMAND}" 93 -DCMAKE_INSTALL_COMPONENT="compiler-rt-headers" 94 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" 95 USES_TERMINAL) 96 add_custom_target(install-compiler-rt-headers-stripped 97 DEPENDS compiler-rt-headers 98 COMMAND "${CMAKE_COMMAND}" 99 -DCMAKE_INSTALL_COMPONENT="compiler-rt-headers" 100 -DCMAKE_INSTALL_DO_STRIP=1 101 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" 102 USES_TERMINAL) 103endif() 104