1#
2# Copyright 2017 The Abseil Authors.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      https://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17find_library(EXECINFO_LIBRARY execinfo)
18
19absl_cc_library(
20  NAME
21    stacktrace
22  HDRS
23    "stacktrace.h"
24    "internal/stacktrace_aarch64-inl.inc"
25    "internal/stacktrace_arm-inl.inc"
26    "internal/stacktrace_config.h"
27    "internal/stacktrace_emscripten-inl.inc"
28    "internal/stacktrace_generic-inl.inc"
29    "internal/stacktrace_powerpc-inl.inc"
30    "internal/stacktrace_riscv-inl.inc"
31    "internal/stacktrace_unimplemented-inl.inc"
32    "internal/stacktrace_win32-inl.inc"
33    "internal/stacktrace_x86-inl.inc"
34  SRCS
35    "stacktrace.cc"
36  COPTS
37    ${ABSL_DEFAULT_COPTS}
38  LINKOPTS
39    $<$<BOOL:${EXECINFO_LIBRARY}>:${EXECINFO_LIBRARY}>
40  DEPS
41    absl::debugging_internal
42    absl::config
43    absl::core_headers
44    absl::raw_logging_internal
45  PUBLIC
46)
47
48absl_cc_test(
49  NAME
50    stacktrace_test
51  SRCS
52    "stacktrace_test.cc"
53  COPTS
54    ${ABSL_TEST_COPTS}
55  DEPS
56    absl::stacktrace
57    absl::core_headers
58    GTest::gmock_main
59)
60
61absl_cc_library(
62  NAME
63    symbolize
64  HDRS
65    "symbolize.h"
66    "internal/symbolize.h"
67  SRCS
68    "symbolize.cc"
69    "symbolize_darwin.inc"
70    "symbolize_elf.inc"
71    "symbolize_emscripten.inc"
72    "symbolize_unimplemented.inc"
73    "symbolize_win32.inc"
74  COPTS
75    ${ABSL_DEFAULT_COPTS}
76  LINKOPTS
77    ${ABSL_DEFAULT_LINKOPTS}
78    $<$<BOOL:${MINGW}>:-ldbghelp>
79  DEPS
80    absl::debugging_internal
81    absl::demangle_internal
82    absl::base
83    absl::config
84    absl::core_headers
85    absl::dynamic_annotations
86    absl::malloc_internal
87    absl::raw_logging_internal
88    absl::strings
89  PUBLIC
90)
91
92absl_cc_test(
93  NAME
94    symbolize_test
95  SRCS
96    "symbolize_test.cc"
97  COPTS
98    ${ABSL_TEST_COPTS}
99    $<$<BOOL:${MSVC}>:-Z7>
100  LINKOPTS
101    $<$<BOOL:${MSVC}>:-DEBUG>
102  DEPS
103    absl::stack_consumption
104    absl::symbolize
105    absl::base
106    absl::config
107    absl::core_headers
108    absl::memory
109    absl::raw_logging_internal
110    absl::strings
111    GTest::gmock
112)
113
114# Internal-only target, do not depend on directly.
115absl_cc_library(
116  NAME
117    examine_stack
118  HDRS
119    "internal/examine_stack.h"
120  SRCS
121    "internal/examine_stack.cc"
122  COPTS
123    ${ABSL_DEFAULT_COPTS}
124  DEPS
125    absl::stacktrace
126    absl::symbolize
127    absl::config
128    absl::core_headers
129    absl::raw_logging_internal
130)
131
132absl_cc_library(
133  NAME
134    failure_signal_handler
135  HDRS
136    "failure_signal_handler.h"
137  SRCS
138    "failure_signal_handler.cc"
139  COPTS
140    ${ABSL_DEFAULT_COPTS}
141  DEPS
142    absl::examine_stack
143    absl::stacktrace
144    absl::base
145    absl::config
146    absl::core_headers
147    absl::raw_logging_internal
148  PUBLIC
149)
150
151absl_cc_test(
152  NAME
153    failure_signal_handler_test
154  SRCS
155    "failure_signal_handler_test.cc"
156  COPTS
157    ${ABSL_TEST_COPTS}
158  DEPS
159    absl::failure_signal_handler
160    absl::stacktrace
161    absl::symbolize
162    absl::strings
163    absl::raw_logging_internal
164    Threads::Threads
165    GTest::gmock
166)
167
168# Internal-only target, do not depend on directly.
169absl_cc_library(
170  NAME
171    debugging_internal
172  HDRS
173    "internal/address_is_readable.h"
174    "internal/elf_mem_image.h"
175    "internal/vdso_support.h"
176  SRCS
177    "internal/address_is_readable.cc"
178    "internal/elf_mem_image.cc"
179    "internal/vdso_support.cc"
180  COPTS
181    ${ABSL_DEFAULT_COPTS}
182  DEPS
183    absl::core_headers
184    absl::config
185    absl::dynamic_annotations
186    absl::errno_saver
187    absl::raw_logging_internal
188)
189
190# Internal-only target, do not depend on directly.
191absl_cc_library(
192  NAME
193    demangle_internal
194  HDRS
195    "internal/demangle.h"
196  SRCS
197    "internal/demangle.cc"
198  COPTS
199    ${ABSL_DEFAULT_COPTS}
200  DEPS
201    absl::base
202    absl::core_headers
203  PUBLIC
204)
205
206absl_cc_test(
207  NAME
208    demangle_test
209  SRCS
210    "internal/demangle_test.cc"
211  COPTS
212    ${ABSL_TEST_COPTS}
213  DEPS
214    absl::demangle_internal
215    absl::stack_consumption
216    absl::config
217    absl::core_headers
218    absl::memory
219    absl::raw_logging_internal
220    GTest::gmock_main
221)
222
223absl_cc_library(
224  NAME
225    leak_check
226  HDRS
227    "leak_check.h"
228  SRCS
229    "leak_check.cc"
230  COPTS
231    ${ABSL_DEFAULT_COPTS}
232  DEPS
233    absl::config
234    absl::core_headers
235  PUBLIC
236)
237
238absl_cc_test(
239  NAME
240    leak_check_test
241  SRCS
242    "leak_check_test.cc"
243  COPTS
244    ${ABSL_TEST_COPTS}
245  LINKOPTS
246    ${ABSL_DEFAULT_LINKOPTS}
247  DEPS
248    absl::leak_check
249    absl::base
250    GTest::gmock_main
251)
252
253# Internal-only target, do not depend on directly.
254absl_cc_library(
255  NAME
256    stack_consumption
257  HDRS
258    "internal/stack_consumption.h"
259  SRCS
260    "internal/stack_consumption.cc"
261  COPTS
262    ${ABSL_DEFAULT_COPTS}
263  DEPS
264    absl::config
265    absl::core_headers
266    absl::raw_logging_internal
267  TESTONLY
268)
269
270absl_cc_test(
271  NAME
272    stack_consumption_test
273  SRCS
274    "internal/stack_consumption_test.cc"
275  COPTS
276    ${ABSL_TEST_COPTS}
277  DEPS
278    absl::stack_consumption
279    absl::core_headers
280    absl::raw_logging_internal
281    GTest::gmock_main
282)
283
284# component target
285absl_cc_library(
286  NAME
287    debugging
288  COPTS
289    ${ABSL_DEFAULT_COPTS}
290  DEPS
291    absl::stacktrace
292    absl::leak_check
293  PUBLIC
294)
295