aboutsummaryrefslogtreecommitdiff
path: root/lib/tsan/rtl/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tsan/rtl/CMakeLists.txt')
-rw-r--r--lib/tsan/rtl/CMakeLists.txt58
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/tsan/rtl/CMakeLists.txt b/lib/tsan/rtl/CMakeLists.txt
new file mode 100644
index 000000000000..d91e2e43ca4c
--- /dev/null
+++ b/lib/tsan/rtl/CMakeLists.txt
@@ -0,0 +1,58 @@
+set(TSAN_SOURCES
+ tsan_clock.cc
+ tsan_flags.cc
+ tsan_fd.cc
+ tsan_interceptors.cc
+ tsan_interface_ann.cc
+ tsan_interface_atomic.cc
+ tsan_interface.cc
+ tsan_interface_java.cc
+ tsan_md5.cc
+ tsan_mman.cc
+ tsan_mutex.cc
+ tsan_mutexset.cc
+ tsan_report.cc
+ tsan_rtl.cc
+ tsan_rtl_mutex.cc
+ tsan_rtl_report.cc
+ tsan_rtl_thread.cc
+ tsan_stat.cc
+ tsan_suppressions.cc
+ tsan_symbolize.cc
+ tsan_sync.cc
+ )
+
+if(APPLE)
+ list(APPEND TSAN_SOURCES tsan_platform_mac.cc)
+elseif(UNIX)
+ # Assume Linux
+ list(APPEND TSAN_SOURCES
+ tsan_platform_linux.cc
+ tsan_symbolize_addr2line_linux.cc)
+endif()
+
+set(TSAN_RUNTIME_LIBRARIES)
+# TSan is currently supported on 64-bit Linux only.
+if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE)
+ set(TSAN_ASM_SOURCES tsan_rtl_amd64.S)
+ # Pass ASM file directly to the C++ compiler.
+ set_source_files_properties(${TSAN_ASM_SOURCES} PROPERTIES
+ LANGUAGE C
+ )
+ add_library(clang_rt.tsan-x86_64 STATIC
+ ${TSAN_SOURCES}
+ ${TSAN_ASM_SOURCES}
+ $<TARGET_OBJECTS:RTInterception.x86_64>
+ $<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
+ )
+ set_target_compile_flags(clang_rt.tsan-x86_64
+ ${TSAN_CFLAGS} ${TARGET_x86_64_CFLAGS}
+ )
+ list(APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-x86_64)
+endif()
+
+if(TSAN_RUNTIME_LIBRARIES)
+ set_property(TARGET ${TSAN_RUNTIME_LIBRARIES} APPEND PROPERTY
+ COMPILE_DEFINITIONS ${TSAN_COMMON_DEFINITIONS})
+ add_clang_compiler_rt_libraries(${TSAN_RUNTIME_LIBRARIES})
+endif()