• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//
2// Copyright (C) 2014 The Android Open Source Project
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//      http://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
17cc_defaults {
18    name: "libbacktrace_common",
19
20    cflags: [
21        "-Wall",
22        "-Werror",
23    ],
24
25    // The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists.
26    clang_cflags: ["-Wno-inline-asm"],
27
28    include_dirs: ["external/libunwind/include/tdep"],
29
30    target: {
31        darwin: {
32            enabled: false,
33        },
34    },
35
36    multilib: {
37        lib32: {
38            suffix: "32",
39        },
40        lib64: {
41            suffix: "64",
42        },
43    },
44}
45
46libbacktrace_sources = [
47    "Backtrace.cpp",
48    "BacktraceCurrent.cpp",
49    "BacktracePtrace.cpp",
50    "thread_utils.c",
51    "ThreadEntry.cpp",
52    "UnwindStack.cpp",
53    "UnwindStackMap.cpp",
54]
55
56cc_library_headers {
57    name: "libbacktrace_headers",
58    vendor_available: true,
59    export_include_dirs: ["include"],
60}
61
62cc_library {
63    name: "libbacktrace",
64    vendor_available: false,
65    vndk: {
66        enabled: true,
67        support_system_process: true,
68    },
69    defaults: ["libbacktrace_common"],
70    host_supported: true,
71
72    cflags: [
73        "-Wexit-time-destructors",
74    ],
75
76    srcs: [
77        "BacktraceMap.cpp",
78    ],
79
80    export_include_dirs: ["include"],
81
82    target: {
83        darwin: {
84            enabled: true,
85            shared_libs: [
86                "libbase",
87            ],
88        },
89        linux: {
90            srcs: libbacktrace_sources,
91
92            shared_libs: [
93                "libbase",
94                "liblog",
95                "libunwind",
96                "libunwindstack",
97                "libdexfile",
98            ],
99
100            static_libs: ["libcutils"],
101
102            // libdexfile will eventually properly export headers, for now
103            // include these directly.
104            include_dirs: [
105                "art/runtime",
106            ],
107
108            header_libs: ["jni_headers"],
109        },
110        android: {
111            static_libs: ["libasync_safe"],
112        },
113        vendor: {
114            cflags: ["-DNO_LIBDEXFILE_SUPPORT"],
115            exclude_shared_libs: ["libdexfile"],
116        },
117    },
118    whole_static_libs: ["libdemangle"],
119}
120
121cc_library_shared {
122    name: "libbacktrace_test",
123    defaults: ["libbacktrace_common"],
124    host_supported: true,
125    strip: {
126        none: true,
127    },
128    cflags: ["-O0"],
129    srcs: ["backtrace_testlib.cpp"],
130
131    shared_libs: [
132        "libunwindstack",
133    ],
134}
135
136//-------------------------------------------------------------------------
137// The backtrace_test executable.
138//-------------------------------------------------------------------------
139cc_test {
140    name: "backtrace_test",
141    defaults: ["libbacktrace_common"],
142    host_supported: true,
143    srcs: [
144        "backtrace_offline_test.cpp",
145        "backtrace_test.cpp",
146        "GetPss.cpp",
147        "thread_utils.c",
148    ],
149
150    cflags: [
151        "-fno-builtin",
152        "-O0",
153        "-g",
154    ],
155
156    shared_libs: [
157        "libbacktrace_test",
158        "libbacktrace",
159        "libdexfile",
160        "libbase",
161        "libcutils",
162        "liblog",
163        "libunwindstack",
164    ],
165
166    group_static_libs: true,
167
168    target: {
169        android: {
170            cflags: ["-DENABLE_PSS_TESTS"],
171            shared_libs: [
172                "libutils",
173            ],
174        },
175        linux_glibc: {
176            static_libs: ["libutils"],
177        },
178    },
179
180    // libdexfile will eventually properly export headers, for now
181    // include these directly.
182    include_dirs: [
183        "art/runtime",
184    ],
185
186    data: [
187        "testdata/arm/*",
188        "testdata/arm64/*",
189        "testdata/x86/*",
190        "testdata/x86_64/*",
191    ],
192}
193
194cc_benchmark {
195    name: "backtrace_benchmarks",
196    defaults: ["libbacktrace_common"],
197
198    srcs: [
199        "backtrace_benchmarks.cpp",
200        "backtrace_read_benchmarks.cpp",
201    ],
202
203    shared_libs: [
204        "libbacktrace",
205        "libbase",
206        "libunwindstack",
207    ],
208}
209