summaryrefslogtreecommitdiff
path: root/lib/xray/CMakeLists.txt
blob: 5547600b943ae64d22162d1e1408b713424475a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# Build for the XRay runtime support library.

# XRay runtime library implementation files.
set(XRAY_SOURCES
  xray_inmemory_log.cc
  xray_init.cc
  xray_flags.cc
  xray_interface.cc
  xray_buffer_queue.cc
  xray_log_interface.cc
  xray_fdr_logging.cc
  xray_utils.cc)

set(x86_64_SOURCES
    xray_x86_64.cc
    xray_trampoline_x86_64.S)

set(arm_SOURCES
    xray_arm.cc
    xray_trampoline_arm.S)

set(armhf_SOURCES
    ${arm_SOURCES})

set(aarch64_SOURCES
  xray_AArch64.cc
  xray_trampoline_AArch64.S)

set(mips_SOURCES
    xray_mips.cc
    xray_trampoline_mips.S)

set(mipsel_SOURCES
    xray_mips.cc
    xray_trampoline_mips.S)

set(mips64_SOURCES
    xray_mips64.cc
    xray_trampoline_mips64.S)

set(mips64el_SOURCES
    xray_mips64.cc
    xray_trampoline_mips64.S)

set(powerpc64le_SOURCES
    xray_powerpc64.cc
    xray_trampoline_powerpc64.cc
    xray_trampoline_powerpc64_asm.S)

include_directories(..)
include_directories(../../include)

set(XRAY_CFLAGS ${SANITIZER_COMMON_CFLAGS})
set(XRAY_COMMON_DEFINITIONS XRAY_HAS_EXCEPTIONS=1)
append_list_if(
  COMPILER_RT_HAS_XRAY_COMPILER_FLAG XRAY_SUPPORTED=1 XRAY_COMMON_DEFINITIONS)
append_list_if(
  COMPILER_RT_BUILD_XRAY_NO_PREINIT XRAY_NO_PREINIT XRAY_COMMON_DEFINITIONS)

add_compiler_rt_component(xray)

set(XRAY_COMMON_RUNTIME_OBJECT_LIBS
    RTXray
    RTSanitizerCommon
    RTSanitizerCommonLibc)

if (APPLE)
  set(XRAY_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
  add_asm_sources(XRAY_ASM_SOURCES xray_trampoline_x86_64.S)

  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
  add_weak_symbols("xray" WEAK_SYMBOL_LINK_FLAGS)

  add_compiler_rt_object_libraries(RTXray
    OS ${XRAY_SUPPORTED_OS}
    ARCHS ${XRAY_SUPPORTED_ARCH}
    SOURCES ${x86_64_SOURCES}
    CFLAGS ${XRAY_CFLAGS}
    DEFS ${XRAY_COMMON_DEFINITIONS})

  # We only support running on osx for now.
  add_compiler_rt_runtime(clang_rt.xray
    STATIC
    OS ${XRAY_SUPPORTED_OS}
    ARCHS ${XRAY_SUPPORTED_ARCH}
    OBJECT_LIBS RTXray
                RTSanitizerCommon
                RTSanitizerCommonLibc
    CFLAGS ${XRAY_CFLAGS}
    DEFS ${XRAY_COMMON_DEFINITIONS}
    LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
    LINK_LIBS ${XRAY_LINK_LIBS}
    PARENT_TARGET xray)
else()
foreach(arch ${XRAY_SUPPORTED_ARCH})
  if(CAN_TARGET_${arch})
    add_compiler_rt_object_libraries(RTXray
      ARCHS ${arch}
      SOURCES ${XRAY_SOURCES} CFLAGS ${XRAY_CFLAGS}
      DEFS ${XRAY_COMMON_DEFINITIONS})
    add_compiler_rt_runtime(clang_rt.xray
     STATIC
     ARCHS ${arch}
     SOURCES ${${arch}_SOURCES}
     CFLAGS ${XRAY_CFLAGS}
     DEFS ${XRAY_COMMON_DEFINITIONS}
     OBJECT_LIBS ${XRAY_COMMON_RUNTIME_OBJECT_LIBS}
     PARENT_TARGET xray)
  endif()
endforeach()
endif()

if(COMPILER_RT_INCLUDE_TESTS)
  add_subdirectory(tests)
endif()