[XRay] [compiler-rt] reformat and clarify CMakeLists.txt [NFC]
[lldb.git] / compiler-rt / lib / xray / CMakeLists.txt
1 # Build for all components of the XRay runtime support library.
2
3 # XRay runtime library implementation files.
4 set(XRAY_SOURCES
5   xray_init.cc
6   xray_flags.cc
7   xray_interface.cc
8   xray_log_interface.cc
9   xray_utils.cc)
10
11 # Implementation files for all XRay modes.
12 set(XRAY_FDR_MODE_SOURCES
13   xray_buffer_queue.cc
14   xray_fdr_logging.cc)
15
16 set(XRAY_BASIC_MODE_SOURCES
17   xray_inmemory_log.cc)
18
19 # Implementation files for all XRay architectures.
20 set(aarch64_SOURCES xray_AArch64.cc xray_trampoline_AArch64.S)
21 set(arm_SOURCES xray_arm.cc xray_trampoline_arm.S)
22 set(armhf_SOURCES ${arm_SOURCES})
23 set(mips_SOURCES xray_mips.cc xray_trampoline_mips.S)
24 set(mipsel_SOURCES xray_mips.cc xray_trampoline_mips.S)
25 set(mips64_SOURCES xray_mips64.cc xray_trampoline_mips64.S)
26 set(mips64el_SOURCES xray_mips64.cc xray_trampoline_mips64.S)
27 set(powerpc64le_SOURCES
28     xray_powerpc64.cc
29     xray_trampoline_powerpc64.cc
30     xray_trampoline_powerpc64_asm.S)
31 set(x86_64_SOURCES xray_x86_64.cc xray_trampoline_x86_64.S)
32
33 # Now put it all together...
34 include_directories(..)
35 include_directories(../../include)
36
37 set(XRAY_CFLAGS ${SANITIZER_COMMON_CFLAGS})
38 set(XRAY_COMMON_DEFINITIONS XRAY_HAS_EXCEPTIONS=1)
39 append_list_if(
40   COMPILER_RT_HAS_XRAY_COMPILER_FLAG XRAY_SUPPORTED=1 XRAY_COMMON_DEFINITIONS)
41 append_list_if(
42   COMPILER_RT_BUILD_XRAY_NO_PREINIT XRAY_NO_PREINIT XRAY_COMMON_DEFINITIONS)
43
44 add_compiler_rt_component(xray)
45
46 set(XRAY_COMMON_RUNTIME_OBJECT_LIBS
47     RTSanitizerCommon
48     RTSanitizerCommonLibc)
49
50 if (APPLE)
51   set(XRAY_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
52   add_asm_sources(XRAY_ASM_SOURCES xray_trampoline_x86_64.S)
53
54   add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
55   add_weak_symbols("xray" WEAK_SYMBOL_LINK_FLAGS)
56
57   add_compiler_rt_object_libraries(RTXray
58     OS ${XRAY_SUPPORTED_OS}
59     ARCHS ${XRAY_SUPPORTED_ARCH}
60     SOURCES ${x86_64_SOURCES}
61     CFLAGS ${XRAY_CFLAGS}
62     DEFS ${XRAY_COMMON_DEFINITIONS})
63   add_compiler_rt_object_libraries(RTXrayFDR
64     OS ${XRAY_SUPPORTED_OS}
65     ARCHS ${XRAY_SUPPORTED_ARCH}
66     SOURCES ${XRAY_FDR_MODE_SOURCES}
67     CFLAGS ${XRAY_CFLAGS}
68     DEFS ${XRAY_COMMON_DEFINITIONS})
69   add_compiler_rt_object_libraries(RTXrayBASIC
70     OS ${XRAY_SUPPORTED_OS}
71     ARCHS ${XRAY_SUPPORTED_ARCH}
72     SOURCES ${XRAY_BASIC_MODE_SOURCES}
73     CFLAGS ${XRAY_CFLAGS}
74     DEFS ${XRAY_COMMON_DEFINITIONS})
75
76   # We only support running on osx for now.
77   add_compiler_rt_runtime(clang_rt.xray
78     STATIC
79     OS ${XRAY_SUPPORTED_OS}
80     ARCHS ${XRAY_SUPPORTED_ARCH}
81     OBJECT_LIBS RTXray
82                 RTSanitizerCommon
83                 RTSanitizerCommonLibc
84     CFLAGS ${XRAY_CFLAGS}
85     DEFS ${XRAY_COMMON_DEFINITIONS}
86     LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
87     LINK_LIBS ${XRAY_LINK_LIBS}
88     PARENT_TARGET xray)
89   add_compiler_rt_runtime(clang_rt.xray-fdr
90     STATIC
91     OS ${XRAY_SUPPORTED_OS}
92     ARCHS ${XRAY_SUPPORTED_ARCH}
93     OBJECT_LIBS RTXrayFDR
94     CFLAGS ${XRAY_CFLAGS}
95     DEFS ${XRAY_COMMON_DEFINITIONS}
96     LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
97     LINK_LIBS ${XRAY_LINK_LIBS}
98     PARENT_TARGET xray)
99   add_compiler_rt_runtime(clang_rt.xray-basic
100     STATIC
101     OS ${XRAY_SUPPORTED_OS}
102     ARCHS ${XRAY_SUPPORTED_ARCH}
103     OBJECT_LIBS RTXrayBASIC
104     CFLAGS ${XRAY_CFLAGS}
105     DEFS ${XRAY_COMMON_DEFINITIONS}
106     LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
107     LINK_LIBS ${XRAY_LINK_LIBS}
108     PARENT_TARGET xray)
109 else() # not Apple
110   foreach(arch ${XRAY_SUPPORTED_ARCH})
111     if(NOT CAN_TARGET_${arch})
112       continue()
113     endif()
114     add_compiler_rt_object_libraries(RTXray
115       ARCHS ${arch}
116       SOURCES ${XRAY_SOURCES} ${${arch}_SOURCES} CFLAGS ${XRAY_CFLAGS}
117       DEFS ${XRAY_COMMON_DEFINITIONS})
118     add_compiler_rt_object_libraries(RTXrayFDR
119       ARCHS ${arch}
120       SOURCES ${XRAY_FDR_MODE_SOURCES} CFLAGS ${XRAY_CFLAGS}
121       DEFS ${XRAY_COMMON_DEFINITIONS})
122     add_compiler_rt_object_libraries(RTXrayBASIC
123       ARCHS ${arch}
124       SOURCES ${XRAY_BASIC_MODE_SOURCES} CFLAGS ${XRAY_CFLAGS}
125       DEFS ${XRAY_COMMON_DEFINITIONS})
126
127     # Common XRay archive for instrumented binaries.
128     add_compiler_rt_runtime(clang_rt.xray
129      STATIC
130      ARCHS ${arch}
131      CFLAGS ${XRAY_CFLAGS}
132      DEFS ${XRAY_COMMON_DEFINITIONS}
133      OBJECT_LIBS ${XRAY_COMMON_RUNTIME_OBJECT_LIBS} RTXray
134      PARENT_TARGET xray)
135     # FDR mode runtime archive (addon for clang_rt.xray)
136     add_compiler_rt_runtime(clang_rt.xray-fdr
137       STATIC
138       ARCHS ${arch}
139       CFLAGS ${XRAY_CFLAGS}
140       DEFS ${XRAY_COMMON_DEFINITIONS}
141       OBJECT_LIBS RTXrayFDR
142       PARENT_TARGET xray)
143     # Basic mode runtime archive (addon for clang_rt.xray)
144     add_compiler_rt_runtime(clang_rt.xray-basic
145       STATIC
146       ARCHS ${arch}
147       CFLAGS ${XRAY_CFLAGS}
148       DEFS ${XRAY_COMMON_DEFINITIONS}
149       OBJECT_LIBS RTXrayBASIC
150       PARENT_TARGET xray)
151   endforeach()
152 endif() # not Apple
153
154 if(COMPILER_RT_INCLUDE_TESTS)
155   add_subdirectory(tests)
156 endif()