xref: /openbsd-src/gnu/llvm/compiler-rt/lib/tsan/dd/CMakeLists.txt (revision 810390e339a5425391477d5d41c78d7cab2424ac)
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