56 lines · plain
1# Build for the experimental deadlock detector runtime library.2 3include_directories(../..)4 5set(DD_CFLAGS ${SANITIZER_COMMON_CFLAGS})6append_rtti_flag(OFF DD_CFLAGS)7 8set(DD_SOURCES9 dd_rtl.cpp10 dd_interceptors.cpp11 )12 13set(DD_LINKLIBS14 ${COMPILER_RT_UNWINDER_LINK_LIBS}15 ${SANITIZER_CXX_ABI_LIBRARIES}16 ${SANITIZER_COMMON_LINK_LIBS})17 18append_list_if(COMPILER_RT_HAS_LIBDL dl DD_LINKLIBS)19append_list_if(COMPILER_RT_HAS_LIBRT rt DD_LINKLIBS)20append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread DD_LINKLIBS)21 22add_custom_target(dd)23set_target_properties(dd PROPERTIES FOLDER "Compiler-RT/Metatargets")24 25# Deadlock detector is currently supported on 64-bit Linux only.26if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID)27 set(arch "x86_64")28 add_compiler_rt_runtime(clang_rt.dd29 STATIC30 ARCHS ${arch}31 SOURCES ${DD_SOURCES}32 $<TARGET_OBJECTS:RTInterception.${arch}>33 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>34 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>35 CFLAGS ${DD_CFLAGS}36 PARENT_TARGET dd)37 38 add_compiler_rt_object_libraries(RTDD39 ARCHS ${arch}40 SOURCES ${DD_SOURCES} CFLAGS ${DD_CFLAGS})41 42 add_compiler_rt_runtime(clang_rt.dyndd43 SHARED44 ARCHS ${arch}45 SOURCES $<TARGET_OBJECTS:RTDD.${arch}>46 $<TARGET_OBJECTS:RTInterception.${arch}>47 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>48 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>49 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>50 LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS}51 LINK_LIBS ${DD_LINKLIBS}52 PARENT_TARGET dd)53endif()54 55add_dependencies(compiler-rt dd)56