13cab2bb3Spatrick# Build for the experimental deadlock detector runtime library. 23cab2bb3Spatrick 33cab2bb3Spatrickinclude_directories(../..) 43cab2bb3Spatrick 53cab2bb3Spatrickset(DD_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 63cab2bb3Spatrickappend_rtti_flag(OFF DD_CFLAGS) 73cab2bb3Spatrick 83cab2bb3Spatrickset(DD_SOURCES 93cab2bb3Spatrick dd_rtl.cpp 103cab2bb3Spatrick dd_interceptors.cpp 113cab2bb3Spatrick ) 123cab2bb3Spatrick 13*810390e3Srobertset(DD_LINKLIBS 14*810390e3Srobert ${COMPILER_RT_UNWINDER_LINK_LIBS} 15*810390e3Srobert ${SANITIZER_CXX_ABI_LIBRARIES} 16*810390e3Srobert ${SANITIZER_COMMON_LINK_LIBS}) 173cab2bb3Spatrick 183cab2bb3Spatrickappend_list_if(COMPILER_RT_HAS_LIBDL dl DD_LINKLIBS) 193cab2bb3Spatrickappend_list_if(COMPILER_RT_HAS_LIBRT rt DD_LINKLIBS) 203cab2bb3Spatrickappend_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread DD_LINKLIBS) 213cab2bb3Spatrick 223cab2bb3Spatrickadd_custom_target(dd) 233cab2bb3Spatrickset_target_properties(dd PROPERTIES FOLDER "Compiler-RT Misc") 243cab2bb3Spatrick 253cab2bb3Spatrick# Deadlock detector is currently supported on 64-bit Linux only. 263cab2bb3Spatrickif(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID) 273cab2bb3Spatrick set(arch "x86_64") 283cab2bb3Spatrick add_compiler_rt_runtime(clang_rt.dd 293cab2bb3Spatrick STATIC 303cab2bb3Spatrick ARCHS ${arch} 313cab2bb3Spatrick SOURCES ${DD_SOURCES} 323cab2bb3Spatrick $<TARGET_OBJECTS:RTInterception.${arch}> 333cab2bb3Spatrick $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 343cab2bb3Spatrick $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 353cab2bb3Spatrick CFLAGS ${DD_CFLAGS} 363cab2bb3Spatrick PARENT_TARGET dd) 373cab2bb3Spatrick 383cab2bb3Spatrick add_compiler_rt_object_libraries(RTDD 393cab2bb3Spatrick ARCHS ${arch} 403cab2bb3Spatrick SOURCES ${DD_SOURCES} CFLAGS ${DD_CFLAGS}) 413cab2bb3Spatrick 423cab2bb3Spatrick add_compiler_rt_runtime(clang_rt.dyndd 433cab2bb3Spatrick SHARED 443cab2bb3Spatrick ARCHS ${arch} 453cab2bb3Spatrick SOURCES $<TARGET_OBJECTS:RTDD.${arch}> 463cab2bb3Spatrick $<TARGET_OBJECTS:RTInterception.${arch}> 473cab2bb3Spatrick $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 483cab2bb3Spatrick $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 493cab2bb3Spatrick $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}> 503cab2bb3Spatrick LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} 513cab2bb3Spatrick LINK_LIBS ${DD_LINKLIBS} 523cab2bb3Spatrick PARENT_TARGET dd) 533cab2bb3Spatrickendif() 543cab2bb3Spatrick 553cab2bb3Spatrickadd_dependencies(compiler-rt dd) 56