xref: /aosp_15_r20/external/google-breakpad/Android.bp (revision 9712c20fc9bbfbac4935993a2ca0b3958c5adad2)
1// Copyright (C) 2015 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Static library.
16// =================================================
17package {
18    default_applicable_licenses: ["external_google-breakpad_license"],
19}
20
21// Added automatically by a large-scale-change that took the approach of
22// 'apply every license found to every target'. While this makes sure we respect
23// every license restriction, it may not be entirely correct.
24//
25// e.g. GPL in an MIT project might only apply to the contrib/ directory.
26//
27// Please consider splitting the single license below into multiple licenses,
28// taking care not to lose any license_kind information, and overriding the
29// default license using the 'licenses: [...]' property on targets as needed.
30//
31// For unused files, consider creating a 'fileGroup' with "//visibility:private"
32// to attach the license to, and including a comment whether the files may be
33// used in the current project.
34// See: http://go/android-license-faq
35license {
36    name: "external_google-breakpad_license",
37    visibility: [":__subpackages__"],
38    license_kinds: [
39        "SPDX-license-identifier-APSL-2.0",
40        "SPDX-license-identifier-Apache-2.0",
41        "SPDX-license-identifier-Artistic",
42        "SPDX-license-identifier-BSD",
43        "SPDX-license-identifier-FSFAP",
44        "SPDX-license-identifier-ISC",
45        "SPDX-license-identifier-MIT",
46        "SPDX-license-identifier-Unicode-DFS",
47        "legacy_notice",
48        "legacy_unencumbered",
49    ],
50    license_text: [
51        "LICENSE",
52    ],
53}
54
55cc_library_static {
56    name: "breakpad_client",
57    host_supported: true,
58    srcs: [
59        "src/client/linux/crash_generation/crash_generation_client.cc",
60        "src/client/linux/dump_writer_common/thread_info.cc",
61        "src/client/linux/dump_writer_common/ucontext_reader.cc",
62        "src/client/linux/handler/exception_handler.cc",
63        "src/client/linux/handler/minidump_descriptor.cc",
64        "src/client/linux/log/log.cc",
65        "src/client/linux/microdump_writer/microdump_writer.cc",
66        "src/client/linux/minidump_writer/linux_core_dumper.cc",
67        "src/client/linux/minidump_writer/linux_dumper.cc",
68        "src/client/linux/minidump_writer/linux_ptrace_dumper.cc",
69        "src/client/linux/minidump_writer/minidump_writer.cc",
70        "src/client/linux/minidump_writer/pe_file.cc",
71        "src/client/minidump_file_writer.cc",
72        "src/common/convert_UTF.cc",
73        "src/common/linux/breakpad_getcontext.S",
74        "src/common/linux/elf_core_dump.cc",
75        "src/common/linux/elfutils.cc",
76        "src/common/linux/file_id.cc",
77        "src/common/linux/guid_creator.cc",
78        "src/common/linux/linux_libc_support.cc",
79        "src/common/linux/memory_mapped_file.cc",
80        "src/common/linux/safe_readlink.cc",
81        "src/common/string_conversion.cc",
82    ],
83    export_include_dirs: ["src"],
84    cflags: [
85        "-Wall",
86        "-Werror",
87        "-Wno-missing-field-initializers",
88        "-Wno-tautological-compare",
89        "-Wno-unused-parameter",
90    ],
91    target: {
92        bionic: {
93            local_include_dirs: [
94                "src/common/android/include",
95            ],
96        },
97        musl: {
98            local_include_dirs: [
99                "src/common/musl/include",
100            ],
101        },
102    },
103    // Work around b/25435766 core2md segfault.
104    arch: {
105        x86: {
106            cflags: ["-mno-stackrealign"],
107        },
108    },
109}
110
111// core2md binary.
112// =================================================
113cc_binary {
114    name: "core2md",
115    host_supported: true,
116    srcs: [
117        "src/common/convert_UTF.cc",
118        "src/common/path_helper.cc",
119        "src/tools/linux/core2md/core2md.cc",
120    ],
121    static_libs: ["breakpad_client"],
122    // Work around b/25435766 core2md segfault.
123    arch: {
124        x86: {
125            cflags: ["-mno-stackrealign"],
126        },
127    },
128    cflags: [
129        "-Wall",
130        "-Werror",
131    ],
132}
133
134// dump_syms host tool.
135// =================================================
136cc_binary_host {
137    name: "dump_syms",
138    rtti: true,
139    target: {
140        darwin: {
141            enabled: false,
142        },
143        glibc: {
144            cppflags: [
145                "-DHAVE_A_OUT_H",
146                "-DSHF_COMPRESSED=0x800",
147            ],
148        },
149        musl: {
150            local_include_dirs: [
151                "src/common/musl/include",
152            ],
153        },
154        host_linux: {
155            cppflags: [
156                "-Wno-implicit-fallthrough",
157                "-Wno-unused-parameter",
158            ],
159            srcs: [
160                "src/common/dwarf/elf_reader.cc",
161                "src/common/dwarf_range_list_handler.cc",
162                "src/common/linux/crc32.cc",
163                "src/common/linux/dump_symbols.cc",
164                "src/common/linux/elfutils.cc",
165                "src/common/linux/elf_symbols_to_module.cc",
166                "src/common/linux/file_id.cc",
167                "src/common/linux/linux_libc_support.cc",
168                "src/common/linux/memory_mapped_file.cc",
169                "src/common/path_helper.cc",
170                "src/tools/linux/dump_syms/dump_syms.cc",
171            ],
172        },
173    },
174    local_include_dirs: ["src"],
175    srcs: [
176        "src/common/dwarf/bytereader.cc",
177        "src/common/dwarf/dwarf2diehandler.cc",
178        "src/common/dwarf/dwarf2reader.cc",
179        "src/common/dwarf_cfi_to_module.cc",
180        "src/common/dwarf_cu_to_module.cc",
181        "src/common/dwarf_line_to_module.cc",
182        "src/common/language.cc",
183        "src/common/module.cc",
184        "src/common/stabs_reader.cc",
185        "src/common/stabs_to_module.cc",
186    ],
187    shared_libs: [
188        "libz",
189    ],
190
191    cflags: [
192        "-Wall",
193        "-Werror",
194        "-Wno-unused-local-typedef",
195        "-Wno-unused-private-field",
196        "-Wno-unused-result",
197    ],
198}
199
200// sym_upload host tool.
201// =================================================
202cc_binary_host {
203    name: "sym_upload",
204    target: {
205        darwin: {
206            enabled: false,
207        },
208        host_linux: {
209            srcs: [
210                "src/common/path_helper.cc",
211                "src/common/linux/http_upload.cc",
212                "src/common/linux/libcurl_wrapper.cc",
213                "src/common/linux/symbol_collector_client.cc",
214                "src/common/linux/symbol_upload.cc",
215                "src/tools/linux/symupload/sym_upload.cc",
216            ],
217        },
218    },
219    local_include_dirs: ["src"],
220    cflags: [
221        "-Wall",
222        "-Werror",
223        "-Wno-unused-parameter",
224    ],
225}
226
227// libdisasm static library.
228// =================================================
229cc_library_host_static {
230    name: "libdisasm",
231    target: {
232        darwin: {
233            enabled: false,
234        },
235        host_linux: {
236            cflags: [
237                "-Wno-missing-field-initializers",
238                "-Wno-pointer-arith",
239                "-Wno-tautological-constant-out-of-range-compare",
240                "-Wno-unused-parameter",
241            ],
242        },
243    },
244    export_include_dirs: ["src/third_party/libdisasm"],
245    srcs: [
246        "src/third_party/libdisasm/ia32_implicit.c",
247        "src/third_party/libdisasm/ia32_insn.c",
248        "src/third_party/libdisasm/ia32_invariant.c",
249        "src/third_party/libdisasm/ia32_modrm.c",
250        "src/third_party/libdisasm/ia32_opcode_tables.c",
251        "src/third_party/libdisasm/ia32_operand.c",
252        "src/third_party/libdisasm/ia32_reg.c",
253        "src/third_party/libdisasm/ia32_settings.c",
254        "src/third_party/libdisasm/x86_disasm.c",
255        "src/third_party/libdisasm/x86_format.c",
256        "src/third_party/libdisasm/x86_imm.c",
257        "src/third_party/libdisasm/x86_insn.c",
258        "src/third_party/libdisasm/x86_misc.c",
259        "src/third_party/libdisasm/x86_operand_list.c",
260    ],
261}
262
263// minidump_stackwalk host tool.
264// =================================================
265cc_binary_host {
266    name: "minidump_stackwalk",
267    target: {
268        darwin: {
269            enabled: false,
270        },
271        host_linux: {
272            cppflags: [
273                "-DHAVE_A_OUT_H",
274                // minidump_processor.cc:853, minidump.cc:4228 have fallthrough.
275                "-Wno-implicit-fallthrough",
276                "-Wno-missing-field-initializers",
277                "-Wno-unused-function",
278                "-Wno-unused-parameter",
279            ],
280            srcs: [
281                "src/common/linux/scoped_pipe.cc",
282                "src/common/linux/scoped_tmpfile.cc",
283                "src/common/path_helper.cc",
284                "src/processor/basic_code_modules.cc",
285                "src/processor/basic_source_line_resolver.cc",
286                "src/processor/call_stack.cc",
287                "src/processor/cfi_frame_info.cc",
288                "src/processor/convert_old_arm64_context.cc",
289                "src/processor/disassembler_objdump.cc",
290                "src/processor/disassembler_x86.cc",
291                "src/processor/dump_context.cc",
292                "src/processor/dump_object.cc",
293                "src/processor/exploitability.cc",
294                "src/processor/exploitability_linux.cc",
295                "src/processor/exploitability_win.cc",
296                "src/processor/logging.cc",
297                "src/processor/microdump.cc",
298                "src/processor/microdump_processor.cc",
299                "src/processor/minidump.cc",
300                "src/processor/minidump_processor.cc",
301                "src/processor/minidump_stackwalk.cc",
302                "src/processor/pathname_stripper.cc",
303                "src/processor/process_state.cc",
304                "src/processor/proc_maps_linux.cc",
305                "src/processor/simple_symbol_supplier.cc",
306                "src/processor/source_line_resolver_base.cc",
307                "src/processor/stack_frame_symbolizer.cc",
308                "src/processor/stackwalk_common.cc",
309                "src/processor/stackwalker.cc",
310                "src/processor/stackwalker_amd64.cc",
311                "src/processor/stackwalker_arm.cc",
312                "src/processor/stackwalker_arm64.cc",
313                "src/processor/stackwalker_mips.cc",
314                "src/processor/stackwalker_ppc.cc",
315                "src/processor/stackwalker_ppc64.cc",
316                "src/processor/stackwalker_riscv.cc",
317                "src/processor/stackwalker_riscv64.cc",
318                "src/processor/stackwalker_sparc.cc",
319                "src/processor/stackwalker_x86.cc",
320                "src/processor/symbolic_constants_win.cc",
321                "src/processor/tokenize.cc",
322            ],
323        },
324    },
325    local_include_dirs: ["src"],
326    static_libs: ["libdisasm"],
327}
328