xref: /openbsd-src/gnu/llvm/compiler-rt/lib/sanitizer_common/CMakeLists.txt (revision 810390e339a5425391477d5d41c78d7cab2424ac)
13cab2bb3Spatrick# Build system for the common Sanitizer runtime support library components.
23cab2bb3Spatrick# These components are shared between AddressSanitizer and ThreadSanitizer.
33cab2bb3Spatrick
43cab2bb3Spatrickset(SANITIZER_SOURCES_NOTERMINATION
53cab2bb3Spatrick  sanitizer_allocator.cpp
63cab2bb3Spatrick  sanitizer_common.cpp
73cab2bb3Spatrick  sanitizer_deadlock_detector1.cpp
83cab2bb3Spatrick  sanitizer_deadlock_detector2.cpp
93cab2bb3Spatrick  sanitizer_errno.cpp
103cab2bb3Spatrick  sanitizer_file.cpp
113cab2bb3Spatrick  sanitizer_flags.cpp
123cab2bb3Spatrick  sanitizer_flag_parser.cpp
133cab2bb3Spatrick  sanitizer_fuchsia.cpp
143cab2bb3Spatrick  sanitizer_libc.cpp
153cab2bb3Spatrick  sanitizer_libignore.cpp
163cab2bb3Spatrick  sanitizer_linux.cpp
173cab2bb3Spatrick  sanitizer_linux_s390.cpp
183cab2bb3Spatrick  sanitizer_mac.cpp
19d89ec533Spatrick  sanitizer_mutex.cpp
203cab2bb3Spatrick  sanitizer_netbsd.cpp
213cab2bb3Spatrick  sanitizer_platform_limits_freebsd.cpp
223cab2bb3Spatrick  sanitizer_platform_limits_linux.cpp
233cab2bb3Spatrick  sanitizer_platform_limits_netbsd.cpp
243cab2bb3Spatrick  sanitizer_platform_limits_posix.cpp
253cab2bb3Spatrick  sanitizer_platform_limits_solaris.cpp
263cab2bb3Spatrick  sanitizer_posix.cpp
273cab2bb3Spatrick  sanitizer_printf.cpp
283cab2bb3Spatrick  sanitizer_procmaps_common.cpp
293cab2bb3Spatrick  sanitizer_procmaps_bsd.cpp
301f9cb04fSpatrick  sanitizer_procmaps_fuchsia.cpp
313cab2bb3Spatrick  sanitizer_procmaps_linux.cpp
323cab2bb3Spatrick  sanitizer_procmaps_mac.cpp
333cab2bb3Spatrick  sanitizer_procmaps_solaris.cpp
343cab2bb3Spatrick  sanitizer_solaris.cpp
351f9cb04fSpatrick  sanitizer_stoptheworld_fuchsia.cpp
363cab2bb3Spatrick  sanitizer_stoptheworld_mac.cpp
37*810390e3Srobert  sanitizer_stoptheworld_win.cpp
383cab2bb3Spatrick  sanitizer_suppressions.cpp
393cab2bb3Spatrick  sanitizer_tls_get_addr.cpp
403cab2bb3Spatrick  sanitizer_thread_registry.cpp
413cab2bb3Spatrick  sanitizer_type_traits.cpp
423cab2bb3Spatrick  sanitizer_win.cpp
433cab2bb3Spatrick  )
443cab2bb3Spatrick
453cab2bb3Spatrickset(SANITIZER_SOURCES
463cab2bb3Spatrick  ${SANITIZER_SOURCES_NOTERMINATION}
473cab2bb3Spatrick  sanitizer_termination.cpp
483cab2bb3Spatrick  )
493cab2bb3Spatrick
503cab2bb3Spatrick# Libc functions stubs. These sources should be linked instead of
513cab2bb3Spatrick# SANITIZER_LIBCDEP_SOURCES when sanitizer_common library must not depend on
523cab2bb3Spatrick# libc.
533cab2bb3Spatrickset(SANITIZER_NOLIBC_SOURCES
543cab2bb3Spatrick  sanitizer_common_nolibc.cpp
553cab2bb3Spatrick  )
563cab2bb3Spatrick
573cab2bb3Spatrickset(SANITIZER_LIBCDEP_SOURCES
583cab2bb3Spatrick  sanitizer_common_libcdep.cpp
593cab2bb3Spatrick  sanitizer_allocator_checks.cpp
603cab2bb3Spatrick  sanitizer_linux_libcdep.cpp
613cab2bb3Spatrick  sanitizer_mac_libcdep.cpp
623cab2bb3Spatrick  sanitizer_posix_libcdep.cpp
633cab2bb3Spatrick  sanitizer_stoptheworld_linux_libcdep.cpp
643cab2bb3Spatrick  sanitizer_stoptheworld_netbsd_libcdep.cpp
653cab2bb3Spatrick  )
663cab2bb3Spatrick
673cab2bb3Spatrickset(SANITIZER_COVERAGE_SOURCES
683cab2bb3Spatrick  sancov_flags.cpp
693cab2bb3Spatrick  sanitizer_coverage_fuchsia.cpp
703cab2bb3Spatrick  sanitizer_coverage_libcdep_new.cpp
713cab2bb3Spatrick  sanitizer_coverage_win_sections.cpp
723cab2bb3Spatrick  )
733cab2bb3Spatrick
743cab2bb3Spatrickset(SANITIZER_SYMBOLIZER_SOURCES
753cab2bb3Spatrick  sanitizer_allocator_report.cpp
76d89ec533Spatrick  sanitizer_chained_origin_depot.cpp
77*810390e3Srobert  sanitizer_stack_store.cpp
783cab2bb3Spatrick  sanitizer_stackdepot.cpp
793cab2bb3Spatrick  sanitizer_stacktrace.cpp
803cab2bb3Spatrick  sanitizer_stacktrace_libcdep.cpp
813cab2bb3Spatrick  sanitizer_stacktrace_printer.cpp
823cab2bb3Spatrick  sanitizer_stacktrace_sparc.cpp
833cab2bb3Spatrick  sanitizer_symbolizer.cpp
843cab2bb3Spatrick  sanitizer_symbolizer_libbacktrace.cpp
853cab2bb3Spatrick  sanitizer_symbolizer_libcdep.cpp
863cab2bb3Spatrick  sanitizer_symbolizer_mac.cpp
873cab2bb3Spatrick  sanitizer_symbolizer_markup.cpp
883cab2bb3Spatrick  sanitizer_symbolizer_posix_libcdep.cpp
893cab2bb3Spatrick  sanitizer_symbolizer_report.cpp
903cab2bb3Spatrick  sanitizer_symbolizer_win.cpp
913cab2bb3Spatrick  sanitizer_unwind_linux_libcdep.cpp
923cab2bb3Spatrick  sanitizer_unwind_win.cpp
933cab2bb3Spatrick  )
943cab2bb3Spatrick
953cab2bb3Spatrick# Explicitly list all sanitizer_common headers. Not all of these are
963cab2bb3Spatrick# included in sanitizer_common source files, but we need to depend on
973cab2bb3Spatrick# headers when building our custom unit tests.
983cab2bb3Spatrickset(SANITIZER_IMPL_HEADERS
993cab2bb3Spatrick  sancov_flags.h
1003cab2bb3Spatrick  sancov_flags.inc
1013cab2bb3Spatrick  sanitizer_addrhashmap.h
1023cab2bb3Spatrick  sanitizer_allocator.h
1033cab2bb3Spatrick  sanitizer_allocator_checks.h
1043cab2bb3Spatrick  sanitizer_allocator_combined.h
105*810390e3Srobert  sanitizer_allocator_dlsym.h
1063cab2bb3Spatrick  sanitizer_allocator_interface.h
1073cab2bb3Spatrick  sanitizer_allocator_internal.h
1083cab2bb3Spatrick  sanitizer_allocator_local_cache.h
1093cab2bb3Spatrick  sanitizer_allocator_primary32.h
1103cab2bb3Spatrick  sanitizer_allocator_primary64.h
1113cab2bb3Spatrick  sanitizer_allocator_report.h
1123cab2bb3Spatrick  sanitizer_allocator_secondary.h
1133cab2bb3Spatrick  sanitizer_allocator_size_class_map.h
1143cab2bb3Spatrick  sanitizer_allocator_stats.h
1153cab2bb3Spatrick  sanitizer_asm.h
1163cab2bb3Spatrick  sanitizer_atomic.h
1173cab2bb3Spatrick  sanitizer_atomic_clang.h
1183cab2bb3Spatrick  sanitizer_atomic_clang_mips.h
1193cab2bb3Spatrick  sanitizer_atomic_clang_other.h
1203cab2bb3Spatrick  sanitizer_atomic_clang_x86.h
1213cab2bb3Spatrick  sanitizer_atomic_msvc.h
1223cab2bb3Spatrick  sanitizer_bitvector.h
1233cab2bb3Spatrick  sanitizer_bvgraph.h
124d89ec533Spatrick  sanitizer_chained_origin_depot.h
1253cab2bb3Spatrick  sanitizer_common.h
1263cab2bb3Spatrick  sanitizer_common_interceptors.inc
1273cab2bb3Spatrick  sanitizer_common_interceptors_format.inc
1283cab2bb3Spatrick  sanitizer_common_interceptors_ioctl.inc
1293cab2bb3Spatrick  sanitizer_common_interface.inc
1303cab2bb3Spatrick  sanitizer_common_interface_posix.inc
1313cab2bb3Spatrick  sanitizer_common_syscalls.inc
1323cab2bb3Spatrick  sanitizer_coverage_interface.inc
1333cab2bb3Spatrick  sanitizer_dbghelp.h
1343cab2bb3Spatrick  sanitizer_deadlock_detector.h
1353cab2bb3Spatrick  sanitizer_deadlock_detector_interface.h
136*810390e3Srobert  sanitizer_dense_map.h
137*810390e3Srobert  sanitizer_dense_map_info.h
1383cab2bb3Spatrick  sanitizer_errno.h
1393cab2bb3Spatrick  sanitizer_errno_codes.h
1403cab2bb3Spatrick  sanitizer_file.h
1413cab2bb3Spatrick  sanitizer_flag_parser.h
1423cab2bb3Spatrick  sanitizer_flags.h
1433cab2bb3Spatrick  sanitizer_flags.inc
144*810390e3Srobert  sanitizer_flat_map.h
1453cab2bb3Spatrick  sanitizer_freebsd.h
1463cab2bb3Spatrick  sanitizer_fuchsia.h
1473cab2bb3Spatrick  sanitizer_getauxval.h
1483cab2bb3Spatrick  sanitizer_hash.h
1493cab2bb3Spatrick  sanitizer_interceptors_ioctl_netbsd.inc
1503cab2bb3Spatrick  sanitizer_interface_internal.h
1513cab2bb3Spatrick  sanitizer_internal_defs.h
152*810390e3Srobert  sanitizer_leb128.h
1533cab2bb3Spatrick  sanitizer_lfstack.h
1543cab2bb3Spatrick  sanitizer_libc.h
1553cab2bb3Spatrick  sanitizer_libignore.h
1563cab2bb3Spatrick  sanitizer_linux.h
1573cab2bb3Spatrick  sanitizer_list.h
1583cab2bb3Spatrick  sanitizer_local_address_space_view.h
159*810390e3Srobert  sanitizer_lzw.h
1603cab2bb3Spatrick  sanitizer_mac.h
1613cab2bb3Spatrick  sanitizer_malloc_mac.inc
1623cab2bb3Spatrick  sanitizer_mutex.h
1633cab2bb3Spatrick  sanitizer_placement_new.h
1643cab2bb3Spatrick  sanitizer_platform.h
1653cab2bb3Spatrick  sanitizer_platform_interceptors.h
1663cab2bb3Spatrick  sanitizer_platform_limits_netbsd.h
1673cab2bb3Spatrick  sanitizer_platform_limits_posix.h
1683cab2bb3Spatrick  sanitizer_platform_limits_solaris.h
1693cab2bb3Spatrick  sanitizer_posix.h
1703cab2bb3Spatrick  sanitizer_procmaps.h
1711f9cb04fSpatrick  sanitizer_ptrauth.h
1723cab2bb3Spatrick  sanitizer_quarantine.h
1733cab2bb3Spatrick  sanitizer_report_decorator.h
1743cab2bb3Spatrick  sanitizer_ring_buffer.h
1753cab2bb3Spatrick  sanitizer_signal_interceptors.inc
176*810390e3Srobert  sanitizer_stack_store.h
1773cab2bb3Spatrick  sanitizer_stackdepot.h
1783cab2bb3Spatrick  sanitizer_stackdepotbase.h
1793cab2bb3Spatrick  sanitizer_stacktrace.h
1803cab2bb3Spatrick  sanitizer_stacktrace_printer.h
1813cab2bb3Spatrick  sanitizer_stoptheworld.h
1823cab2bb3Spatrick  sanitizer_suppressions.h
1833cab2bb3Spatrick  sanitizer_symbolizer.h
1843cab2bb3Spatrick  sanitizer_symbolizer_fuchsia.h
1853cab2bb3Spatrick  sanitizer_symbolizer_internal.h
1863cab2bb3Spatrick  sanitizer_symbolizer_libbacktrace.h
1873cab2bb3Spatrick  sanitizer_symbolizer_mac.h
1883cab2bb3Spatrick  sanitizer_syscall_generic.inc
1893cab2bb3Spatrick  sanitizer_syscall_linux_aarch64.inc
1903cab2bb3Spatrick  sanitizer_syscall_linux_arm.inc
1913cab2bb3Spatrick  sanitizer_syscall_linux_x86_64.inc
192d89ec533Spatrick  sanitizer_syscall_linux_riscv64.inc
193*810390e3Srobert  sanitizer_syscall_linux_loongarch64.inc
1943cab2bb3Spatrick  sanitizer_syscalls_netbsd.inc
1953cab2bb3Spatrick  sanitizer_thread_registry.h
196d89ec533Spatrick  sanitizer_thread_safety.h
1973cab2bb3Spatrick  sanitizer_tls_get_addr.h
1983cab2bb3Spatrick  sanitizer_vector.h
1993cab2bb3Spatrick  sanitizer_win.h
2003cab2bb3Spatrick  sanitizer_win_defs.h
2013cab2bb3Spatrick  sanitizer_win_dll_thunk.h
2023cab2bb3Spatrick  sanitizer_win_weak_interception.h
2033cab2bb3Spatrick  )
2043cab2bb3Spatrick
2053cab2bb3Spatrickinclude_directories(..)
2063cab2bb3Spatrick
2073cab2bb3Spatrickset(SANITIZER_COMMON_DEFINITIONS
2083cab2bb3Spatrick  HAVE_RPC_XDR_H=${HAVE_RPC_XDR_H})
2093cab2bb3Spatrick
2103cab2bb3Spatrickset(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
211*810390e3Srobert
212*810390e3Srobert# Too many existing bugs, needs cleanup.
213*810390e3Srobertappend_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format SANITIZER_CFLAGS)
214*810390e3Srobert
2153cab2bb3Spatrickappend_rtti_flag(OFF SANITIZER_CFLAGS)
2163cab2bb3Spatrick
2173cab2bb3Spatrickappend_list_if(SANITIZER_LIMIT_FRAME_SIZE -Wframe-larger-than=570
2183cab2bb3Spatrick               SANITIZER_CFLAGS)
2193cab2bb3Spatrickappend_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
2203cab2bb3Spatrick               SANITIZER_CFLAGS)
2213cab2bb3Spatrick
2223cab2bb3Spatrickif(APPLE)
2233cab2bb3Spatrick  set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
2243cab2bb3Spatrickendif()
2253cab2bb3Spatrick
2263cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommon
2273cab2bb3Spatrick  ${OS_OPTION}
2283cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2293cab2bb3Spatrick  SOURCES ${SANITIZER_SOURCES}
2303cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2313cab2bb3Spatrick  CFLAGS ${SANITIZER_CFLAGS}
2323cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2333cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonNoTermination
2343cab2bb3Spatrick  ${OS_OPTION}
2353cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2363cab2bb3Spatrick  SOURCES ${SANITIZER_SOURCES_NOTERMINATION}
2373cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2383cab2bb3Spatrick  CFLAGS ${SANITIZER_CFLAGS}
2393cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2403cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonNoLibc
2413cab2bb3Spatrick  ${OS_OPTION}
2423cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2433cab2bb3Spatrick  SOURCES ${SANITIZER_NOLIBC_SOURCES}
2443cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2453cab2bb3Spatrick  CFLAGS ${SANITIZER_CFLAGS}
2463cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2473cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonLibc
2483cab2bb3Spatrick  ${OS_OPTION}
2493cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2503cab2bb3Spatrick  SOURCES ${SANITIZER_LIBCDEP_SOURCES}
2513cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2523cab2bb3Spatrick  CFLAGS ${SANITIZER_CFLAGS}
2533cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2543cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonCoverage
2553cab2bb3Spatrick  ${OS_OPTION}
2563cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2573cab2bb3Spatrick  SOURCES ${SANITIZER_COVERAGE_SOURCES}
2583cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2593cab2bb3Spatrick  CFLAGS ${SANITIZER_CFLAGS}
2603cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2613cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonSymbolizer
2623cab2bb3Spatrick  ${OS_OPTION}
2633cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2643cab2bb3Spatrick  SOURCES ${SANITIZER_SYMBOLIZER_SOURCES}
2653cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2663cab2bb3Spatrick  CFLAGS ${SANITIZER_CFLAGS}
2673cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2683cab2bb3Spatrick
2693cab2bb3Spatrickset(SANITIZER_NO_WEAK_HOOKS_CFLAGS ${SANITIZER_CFLAGS})
2703cab2bb3Spatricklist(APPEND SANITIZER_NO_WEAK_HOOKS_CFLAGS "-DSANITIZER_SUPPORTS_WEAK_HOOKS=0")
2713cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonNoHooks
2723cab2bb3Spatrick  ${OS_OPTION}
2733cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2743cab2bb3Spatrick  SOURCES ${SANITIZER_SOURCES}
2753cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2763cab2bb3Spatrick  CFLAGS ${SANITIZER_NO_WEAK_HOOKS_CFLAGS}
2773cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2783cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonLibcNoHooks
2793cab2bb3Spatrick  ${OS_OPTION}
2803cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2813cab2bb3Spatrick  SOURCES ${SANITIZER_LIBCDEP_SOURCES}
2823cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2833cab2bb3Spatrick  CFLAGS ${SANITIZER_NO_WEAK_HOOKS_CFLAGS}
2843cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2853cab2bb3Spatrickadd_compiler_rt_object_libraries(RTSanitizerCommonSymbolizerNoHooks
2863cab2bb3Spatrick  ${OS_OPTION}
2873cab2bb3Spatrick  ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
2883cab2bb3Spatrick  SOURCES ${SANITIZER_SYMBOLIZER_SOURCES}
2893cab2bb3Spatrick  ADDITIONAL_HEADERS ${SANITIZER_IMPL_HEADERS}
2903cab2bb3Spatrick  CFLAGS ${SANITIZER_NO_WEAK_HOOKS_CFLAGS}
2913cab2bb3Spatrick  DEFS ${SANITIZER_COMMON_DEFINITIONS})
2923cab2bb3Spatrick
2933cab2bb3Spatrickif(WIN32)
2943cab2bb3Spatrick  add_compiler_rt_object_libraries(SanitizerCommonWeakInterception
2953cab2bb3Spatrick    ${SANITIZER_COMMON_SUPPORTED_OS}
2963cab2bb3Spatrick    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
297*810390e3Srobert    SOURCES
298*810390e3Srobert      sanitizer_win_weak_interception.cpp
2993cab2bb3Spatrick    CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DYNAMIC
3003cab2bb3Spatrick    DEFS ${SANITIZER_COMMON_DEFINITIONS})
3013cab2bb3Spatrick  add_compiler_rt_object_libraries(SancovWeakInterception
3023cab2bb3Spatrick    ${SANITIZER_COMMON_SUPPORTED_OS}
3033cab2bb3Spatrick    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
304*810390e3Srobert    SOURCES
305*810390e3Srobert      sanitizer_coverage_win_weak_interception.cpp
3063cab2bb3Spatrick    CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DYNAMIC
3073cab2bb3Spatrick    DEFS ${SANITIZER_COMMON_DEFINITIONS})
3083cab2bb3Spatrick
3093cab2bb3Spatrick  add_compiler_rt_object_libraries(SanitizerCommonDllThunk
3103cab2bb3Spatrick    ${SANITIZER_COMMON_SUPPORTED_OS}
3113cab2bb3Spatrick    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
312*810390e3Srobert    SOURCES
313*810390e3Srobert      sanitizer_win_dll_thunk.cpp
3143cab2bb3Spatrick    CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DLL_THUNK
3153cab2bb3Spatrick    DEFS ${SANITIZER_COMMON_DEFINITIONS})
3163cab2bb3Spatrick  add_compiler_rt_object_libraries(SancovDllThunk
3173cab2bb3Spatrick    ${SANITIZER_COMMON_SUPPORTED_OS}
3183cab2bb3Spatrick    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
319*810390e3Srobert    SOURCES
320*810390e3Srobert      sanitizer_coverage_win_dll_thunk.cpp
3213cab2bb3Spatrick      sanitizer_coverage_win_sections.cpp
3223cab2bb3Spatrick    CFLAGS ${SANITIZER_CFLAGS} -DSANITIZER_DLL_THUNK
3233cab2bb3Spatrick    DEFS ${SANITIZER_COMMON_DEFINITIONS})
3243cab2bb3Spatrick
3253cab2bb3Spatrick  set(DYNAMIC_RUNTIME_THUNK_CFLAGS "-DSANITIZER_DYNAMIC_RUNTIME_THUNK")
3263cab2bb3Spatrick  if(MSVC)
3273cab2bb3Spatrick    list(APPEND DYNAMIC_RUNTIME_THUNK_CFLAGS "-Zl")
3283cab2bb3Spatrick  elseif(CMAKE_C_COMPILER_ID MATCHES Clang)
3293cab2bb3Spatrick    list(APPEND DYNAMIC_RUNTIME_THUNK_CFLAGS "-nodefaultlibs")
3303cab2bb3Spatrick  endif()
3313cab2bb3Spatrick  add_compiler_rt_object_libraries(SanitizerCommonDynamicRuntimeThunk
3323cab2bb3Spatrick    ${SANITIZER_COMMON_SUPPORTED_OS}
3333cab2bb3Spatrick    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
334*810390e3Srobert    SOURCES
335*810390e3Srobert      sanitizer_win_dynamic_runtime_thunk.cpp
3363cab2bb3Spatrick    CFLAGS ${SANITIZER_CFLAGS} ${DYNAMIC_RUNTIME_THUNK_CFLAGS}
3373cab2bb3Spatrick    DEFS ${SANITIZER_COMMON_DEFINITIONS})
3383cab2bb3Spatrick  add_compiler_rt_object_libraries(SancovDynamicRuntimeThunk
3393cab2bb3Spatrick    ${SANITIZER_COMMON_SUPPORTED_OS}
3403cab2bb3Spatrick    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
341*810390e3Srobert    SOURCES
342*810390e3Srobert      sanitizer_coverage_win_dynamic_runtime_thunk.cpp
3433cab2bb3Spatrick      sanitizer_coverage_win_sections.cpp
3443cab2bb3Spatrick    CFLAGS ${SANITIZER_CFLAGS} ${DYNAMIC_RUNTIME_THUNK_CFLAGS}
3453cab2bb3Spatrick    DEFS ${SANITIZER_COMMON_DEFINITIONS})
3463cab2bb3Spatrickendif()
3473cab2bb3Spatrick
3483cab2bb3Spatrick# Unit tests for common sanitizer runtime.
3493cab2bb3Spatrickif(COMPILER_RT_INCLUDE_TESTS)
3503cab2bb3Spatrick  add_subdirectory(tests)
3513cab2bb3Spatrickendif()
352