• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Build for the experimental deadlock detector runtime library.
2
3include_directories(../..)
4
5set(DD_CFLAGS ${SANITIZER_COMMON_CFLAGS})
6append_no_rtti_flag(DD_CFLAGS)
7
8if("${CMAKE_BUILD_TYPE}" EQUAL "Release")
9  set(DD_COMMON_DEFINITIONS DEBUG=0)
10else()
11  set(DD_COMMON_DEFINITIONS DEBUG=1)
12endif()
13
14set(DD_DYNAMIC_DEFINITIONS DYNAMIC=1)
15
16set(DD_SOURCES
17  dd_rtl.cc
18  dd_interceptors.cc
19)
20
21set(DD_HEADERS
22  dd_rtl.h
23)
24
25add_custom_target(dd)
26# Deadlock detector is currently supported on 64-bit Linux only.
27if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE AND NOT ANDROID)
28  set(arch "x86_64")
29  add_compiler_rt_runtime(clang_rt.dd-${arch} ${arch} STATIC
30    SOURCES ${DD_SOURCES}
31            $<TARGET_OBJECTS:RTInterception.${arch}>
32            $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
33            $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
34    CFLAGS ${DD_CFLAGS}
35    DEFS ${DD_COMMON_DEFINITIONS})
36
37  add_compiler_rt_object_library(RTDD ${arch}
38    SOURCES ${DD_SOURCES} CFLAGS ${DD_CFLAGS}
39    DEFS ${DD_COMMON_DEFINITIONS} ${DD_DYNAMIC_DEFINITIONS})
40
41  add_compiler_rt_runtime(clang_rt.dyndd-${arch} ${arch} SHARED
42    SOURCES $<TARGET_OBJECTS:RTDD.${arch}>
43            $<TARGET_OBJECTS:RTInterception.${arch}>
44            $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
45            $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>)
46  target_link_libraries(clang_rt.dyndd-${arch} pthread dl)
47endif()
48
49add_dependencies(compiler-rt dd)
50
51