1include_directories(..) 2 3# Runtime library sources and build flags. 4set(DFSAN_RTL_SOURCES 5 dfsan.cc 6 dfsan_custom.cc 7 dfsan_interceptors.cc) 8set(DFSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 9append_no_rtti_flag(DFSAN_COMMON_CFLAGS) 10# Prevent clang from generating libc calls. 11append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding DFSAN_COMMON_CFLAGS) 12 13# Static runtime library. 14add_custom_target(dfsan) 15foreach(arch ${DFSAN_SUPPORTED_ARCH}) 16 set(DFSAN_CFLAGS ${DFSAN_COMMON_CFLAGS}) 17 append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE DFSAN_CFLAGS) 18 add_compiler_rt_runtime(clang_rt.dfsan 19 STATIC 20 ARCHS ${arch} 21 SOURCES ${DFSAN_RTL_SOURCES} 22 $<TARGET_OBJECTS:RTInterception.${arch}> 23 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 24 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 25 CFLAGS ${DFSAN_CFLAGS} 26 PARENT_TARGET dfsan) 27 add_sanitizer_rt_symbols(clang_rt.dfsan 28 ARCHS ${arch} 29 EXTRA dfsan.syms.extra) 30 add_dependencies(dfsan 31 clang_rt.dfsan-${arch}-symbols) 32endforeach() 33 34set(dfsan_abilist_filename ${COMPILER_RT_OUTPUT_DIR}/dfsan_abilist.txt) 35add_custom_target(dfsan_abilist ALL 36 DEPENDS ${dfsan_abilist_filename}) 37add_custom_command(OUTPUT ${dfsan_abilist_filename} 38 VERBATIM 39 COMMAND 40 cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt 41 ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt 42 > ${dfsan_abilist_filename} 43 DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt) 44add_dependencies(dfsan dfsan_abilist) 45install(FILES ${dfsan_abilist_filename} 46 DESTINATION ${COMPILER_RT_INSTALL_PATH}) 47 48add_dependencies(compiler-rt dfsan) 49