diff options
-rw-r--r-- | breakpad/BUILD.gn | 444 |
1 files changed, 233 insertions, 211 deletions
diff --git a/breakpad/BUILD.gn b/breakpad/BUILD.gn index 13fb3be..0fd15ce 100644 --- a/breakpad/BUILD.gn +++ b/breakpad/BUILD.gn @@ -51,250 +51,272 @@ config("sender_config") { # {micro,mini}dump_stackwalk and minidump_dump are tool-type executables # that do not build on Windows. -if (!is_win && current_toolchain == host_toolchain) { - # Contains the code shared by both {micro,mini}dump_stackwalk. - static_library("stackwalk_common") { - # Always want these files included regardless of platform. - set_sources_assignment_filter([]) - sources = [ - "src/processor/basic_code_module.h", - "src/processor/basic_code_modules.cc", - "src/processor/basic_code_modules.h", - "src/processor/basic_source_line_resolver.cc", - "src/processor/call_stack.cc", - "src/processor/cfi_frame_info.cc", - "src/processor/cfi_frame_info.h", - "src/processor/disassembler_x86.cc", - "src/processor/disassembler_x86.h", - "src/processor/dump_context.cc", - "src/processor/dump_object.cc", - "src/processor/logging.cc", - "src/processor/logging.h", - "src/processor/pathname_stripper.cc", - "src/processor/pathname_stripper.h", - "src/processor/proc_maps_linux.cc", - "src/processor/process_state.cc", - "src/processor/simple_symbol_supplier.cc", - "src/processor/simple_symbol_supplier.h", - "src/processor/source_line_resolver_base.cc", - "src/processor/stack_frame_cpu.cc", - "src/processor/stack_frame_symbolizer.cc", - "src/processor/stackwalk_common.cc", - "src/processor/stackwalker.cc", - "src/processor/stackwalker_amd64.cc", - "src/processor/stackwalker_amd64.h", - "src/processor/stackwalker_arm.cc", - "src/processor/stackwalker_arm.h", - "src/processor/stackwalker_arm64.cc", - "src/processor/stackwalker_arm64.h", - "src/processor/stackwalker_mips.cc", - "src/processor/stackwalker_mips.h", - "src/processor/stackwalker_ppc.cc", - "src/processor/stackwalker_ppc.h", - "src/processor/stackwalker_ppc64.cc", - "src/processor/stackwalker_ppc64.h", - "src/processor/stackwalker_sparc.cc", - "src/processor/stackwalker_sparc.h", - "src/processor/stackwalker_x86.cc", - "src/processor/stackwalker_x86.h", - "src/processor/tokenize.cc", - "src/processor/tokenize.h", - - # libdisasm - "src/third_party/libdisasm/ia32_implicit.c", - "src/third_party/libdisasm/ia32_implicit.h", - "src/third_party/libdisasm/ia32_insn.c", - "src/third_party/libdisasm/ia32_insn.h", - "src/third_party/libdisasm/ia32_invariant.c", - "src/third_party/libdisasm/ia32_invariant.h", - "src/third_party/libdisasm/ia32_modrm.c", - "src/third_party/libdisasm/ia32_modrm.h", - "src/third_party/libdisasm/ia32_opcode_tables.c", - "src/third_party/libdisasm/ia32_opcode_tables.h", - "src/third_party/libdisasm/ia32_operand.c", - "src/third_party/libdisasm/ia32_operand.h", - "src/third_party/libdisasm/ia32_reg.c", - "src/third_party/libdisasm/ia32_reg.h", - "src/third_party/libdisasm/ia32_settings.c", - "src/third_party/libdisasm/ia32_settings.h", - "src/third_party/libdisasm/libdis.h", - "src/third_party/libdisasm/qword.h", - "src/third_party/libdisasm/x86_disasm.c", - "src/third_party/libdisasm/x86_format.c", - "src/third_party/libdisasm/x86_imm.c", - "src/third_party/libdisasm/x86_imm.h", - "src/third_party/libdisasm/x86_insn.c", - "src/third_party/libdisasm/x86_misc.c", - "src/third_party/libdisasm/x86_operand_list.c", - "src/third_party/libdisasm/x86_operand_list.h", - ] +if (!is_win) { + if (current_toolchain == host_toolchain) { + # Contains the code shared by both {micro,mini}dump_stackwalk. + static_library("stackwalk_common") { + # Always want these files included regardless of platform. + set_sources_assignment_filter([]) + sources = [ + "src/processor/basic_code_module.h", + "src/processor/basic_code_modules.cc", + "src/processor/basic_code_modules.h", + "src/processor/basic_source_line_resolver.cc", + "src/processor/call_stack.cc", + "src/processor/cfi_frame_info.cc", + "src/processor/cfi_frame_info.h", + "src/processor/disassembler_x86.cc", + "src/processor/disassembler_x86.h", + "src/processor/dump_context.cc", + "src/processor/dump_object.cc", + "src/processor/logging.cc", + "src/processor/logging.h", + "src/processor/pathname_stripper.cc", + "src/processor/pathname_stripper.h", + "src/processor/proc_maps_linux.cc", + "src/processor/process_state.cc", + "src/processor/simple_symbol_supplier.cc", + "src/processor/simple_symbol_supplier.h", + "src/processor/source_line_resolver_base.cc", + "src/processor/stack_frame_cpu.cc", + "src/processor/stack_frame_symbolizer.cc", + "src/processor/stackwalk_common.cc", + "src/processor/stackwalker.cc", + "src/processor/stackwalker_amd64.cc", + "src/processor/stackwalker_amd64.h", + "src/processor/stackwalker_arm.cc", + "src/processor/stackwalker_arm.h", + "src/processor/stackwalker_arm64.cc", + "src/processor/stackwalker_arm64.h", + "src/processor/stackwalker_mips.cc", + "src/processor/stackwalker_mips.h", + "src/processor/stackwalker_ppc.cc", + "src/processor/stackwalker_ppc.h", + "src/processor/stackwalker_ppc64.cc", + "src/processor/stackwalker_ppc64.h", + "src/processor/stackwalker_sparc.cc", + "src/processor/stackwalker_sparc.h", + "src/processor/stackwalker_x86.cc", + "src/processor/stackwalker_x86.h", + "src/processor/tokenize.cc", + "src/processor/tokenize.h", + + # libdisasm + "src/third_party/libdisasm/ia32_implicit.c", + "src/third_party/libdisasm/ia32_implicit.h", + "src/third_party/libdisasm/ia32_insn.c", + "src/third_party/libdisasm/ia32_insn.h", + "src/third_party/libdisasm/ia32_invariant.c", + "src/third_party/libdisasm/ia32_invariant.h", + "src/third_party/libdisasm/ia32_modrm.c", + "src/third_party/libdisasm/ia32_modrm.h", + "src/third_party/libdisasm/ia32_opcode_tables.c", + "src/third_party/libdisasm/ia32_opcode_tables.h", + "src/third_party/libdisasm/ia32_operand.c", + "src/third_party/libdisasm/ia32_operand.h", + "src/third_party/libdisasm/ia32_reg.c", + "src/third_party/libdisasm/ia32_reg.h", + "src/third_party/libdisasm/ia32_settings.c", + "src/third_party/libdisasm/ia32_settings.h", + "src/third_party/libdisasm/libdis.h", + "src/third_party/libdisasm/qword.h", + "src/third_party/libdisasm/x86_disasm.c", + "src/third_party/libdisasm/x86_format.c", + "src/third_party/libdisasm/x86_imm.c", + "src/third_party/libdisasm/x86_imm.h", + "src/third_party/libdisasm/x86_insn.c", + "src/third_party/libdisasm/x86_misc.c", + "src/third_party/libdisasm/x86_operand_list.c", + "src/third_party/libdisasm/x86_operand_list.h", + ] - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":tools_config" ] - } + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":tools_config" ] + } - executable("microdump_stackwalk") { - sources = [ - "src/processor/microdump.cc", - "src/processor/microdump_processor.cc", - "src/processor/microdump_stackwalk.cc", - ] + executable("microdump_stackwalk") { + sources = [ + "src/processor/microdump.cc", + "src/processor/microdump_processor.cc", + "src/processor/microdump_stackwalk.cc", + ] - deps = [ - ":stackwalk_common", - "//build/config/sanitizers:deps", - ] + deps = [ + ":stackwalk_common", + "//build/config/sanitizers:deps", + ] - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":tools_config" ] - } + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":tools_config" ] + } - executable("minidump_stackwalk") { - sources = [ - "src/processor/exploitability.cc", - "src/processor/minidump.cc", - "src/processor/minidump_processor.cc", - "src/processor/minidump_stackwalk.cc", - ] + executable("minidump_stackwalk") { + sources = [ + "src/processor/exploitability.cc", + "src/processor/minidump.cc", + "src/processor/minidump_processor.cc", + "src/processor/minidump_stackwalk.cc", + ] - deps = [ - ":stackwalk_common", - "//build/config/sanitizers:deps", - ] + deps = [ + ":stackwalk_common", + "//build/config/sanitizers:deps", + ] - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":tools_config" ] + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":tools_config" ] - # Always want these files included regardless of platform. - set_sources_assignment_filter([]) - sources += [ - "src/processor/exploitability_linux.cc", - "src/processor/exploitability_linux.h", - "src/processor/exploitability_win.cc", - "src/processor/exploitability_win.h", - "src/processor/symbolic_constants_win.cc", - "src/processor/symbolic_constants_win.h", - ] - } + # Always want these files included regardless of platform. + set_sources_assignment_filter([]) + sources += [ + "src/processor/exploitability_linux.cc", + "src/processor/exploitability_linux.h", + "src/processor/exploitability_win.cc", + "src/processor/exploitability_win.h", + "src/processor/symbolic_constants_win.cc", + "src/processor/symbolic_constants_win.h", + ] + } - executable("minidump_dump") { - set_sources_assignment_filter([]) - sources = [ - "src/processor/basic_code_module.h", - "src/processor/basic_code_modules.cc", - "src/processor/basic_code_modules.h", - "src/processor/dump_context.cc", - "src/processor/dump_object.cc", - "src/processor/logging.cc", - "src/processor/logging.h", - "src/processor/minidump.cc", - "src/processor/minidump_dump.cc", - "src/processor/pathname_stripper.cc", - "src/processor/pathname_stripper.h", - "src/processor/proc_maps_linux.cc", - ] + executable("minidump_dump") { + set_sources_assignment_filter([]) + sources = [ + "src/processor/basic_code_module.h", + "src/processor/basic_code_modules.cc", + "src/processor/basic_code_modules.h", + "src/processor/dump_context.cc", + "src/processor/dump_object.cc", + "src/processor/logging.cc", + "src/processor/logging.h", + "src/processor/minidump.cc", + "src/processor/minidump_dump.cc", + "src/processor/pathname_stripper.cc", + "src/processor/pathname_stripper.h", + "src/processor/proc_maps_linux.cc", + ] - configs += [ ":tools_config" ] + configs += [ ":tools_config" ] - # There are some warnings in this code. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + # There are some warnings in this code. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ - "//build/config/sanitizers:deps", - ] + deps = [ + "//build/config/sanitizers:deps", + ] + } + } else { + # Aliases for convenience. + binary_symlink("microdump_stackwalk") { + binary_label = ":dump_syms($host_toolchain)" + } + binary_symlink("minidump_stackwalk") { + binary_label = ":dump_syms($host_toolchain)" + } + binary_symlink("minidump_dump") { + binary_label = ":$target_name($host_toolchain)" + } } } # Mac -------------------------------------------------------------------------- -if (current_toolchain == host_toolchain && is_mac) { - # TODO(GYP) This should be only 64-bit on Mac. From .gypi: - # Like ld, dump_syms needs to operate on enough data that it may - # actually need to be able to address more than 4GB. Use x86_64. - # Don't worry! An x86_64 dump_syms is perfectly able to dump - # 32-bit files. - executable("dump_syms") { - sources = [ - "src/common/dwarf/bytereader.cc", - "src/common/dwarf/dwarf2diehandler.cc", - "src/common/dwarf/dwarf2reader.cc", - "src/common/dwarf_cfi_to_module.cc", - "src/common/dwarf_cu_to_module.cc", - "src/common/dwarf_line_to_module.cc", - "src/common/language.cc", - "src/common/mac/arch_utilities.cc", - "src/common/mac/arch_utilities.h", - "src/common/mac/dump_syms.cc", - "src/common/mac/file_id.cc", - "src/common/mac/macho_id.cc", - "src/common/mac/macho_reader.cc", - "src/common/mac/macho_utilities.cc", - "src/common/mac/macho_walker.cc", - "src/common/md5.cc", - "src/common/module.cc", - "src/common/stabs_reader.cc", - "src/common/stabs_to_module.cc", - "src/tools/mac/dump_syms/dump_syms_tool.cc", - ] +if (is_mac) { + if (current_toolchain == host_toolchain) { + # TODO(GYP) This should be only 64-bit on Mac. From .gypi: + # Like ld, dump_syms needs to operate on enough data that it may + # actually need to be able to address more than 4GB. Use x86_64. + # Don't worry! An x86_64 dump_syms is perfectly able to dump + # 32-bit files. + executable("dump_syms") { + sources = [ + "src/common/dwarf/bytereader.cc", + "src/common/dwarf/dwarf2diehandler.cc", + "src/common/dwarf/dwarf2reader.cc", + "src/common/dwarf_cfi_to_module.cc", + "src/common/dwarf_cu_to_module.cc", + "src/common/dwarf_line_to_module.cc", + "src/common/language.cc", + "src/common/mac/arch_utilities.cc", + "src/common/mac/arch_utilities.h", + "src/common/mac/dump_syms.cc", + "src/common/mac/file_id.cc", + "src/common/mac/macho_id.cc", + "src/common/mac/macho_reader.cc", + "src/common/mac/macho_utilities.cc", + "src/common/mac/macho_walker.cc", + "src/common/md5.cc", + "src/common/module.cc", + "src/common/stabs_reader.cc", + "src/common/stabs_to_module.cc", + "src/tools/mac/dump_syms/dump_syms_tool.cc", + ] - # For src/common/stabs_reader.h. - defines = [ "HAVE_MACH_O_NLIST_H" ] - include_dirs = [ "src/common/mac" ] + # For src/common/stabs_reader.h. + defines = [ "HAVE_MACH_O_NLIST_H" ] + include_dirs = [ "src/common/mac" ] - # The DWARF utilities require -funsigned-char. - cflags = [ "-funsigned-char" ] + # The DWARF utilities require -funsigned-char. + cflags = [ "-funsigned-char" ] - configs += [ ":internal_config" ] + configs += [ ":internal_config" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] - # dwarf2reader.cc uses dynamic_cast. - configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] + # dwarf2reader.cc uses dynamic_cast. + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] - libs = [ "Foundation.framework" ] + libs = [ "Foundation.framework" ] - if (!is_debug) { - # dump_syms crashes when built at -O1, -O2, and -O3. It does - # not crash at -Os. To play it safe, dump_syms is always built - # at -O0 until this can be sorted out. - # http://code.google.com/p/google-breakpad/issues/detail?id=329 - configs -= [ "//build/config/compiler:default_optimization" ] - cflags += [ "-O0" ] - } + if (!is_debug) { + # dump_syms crashes when built at -O1, -O2, and -O3. It does + # not crash at -Os. To play it safe, dump_syms is always built + # at -O0 until this can be sorted out. + # http://code.google.com/p/google-breakpad/issues/detail?id=329 + configs -= [ "//build/config/compiler:default_optimization" ] + cflags += [ "-O0" ] + } - deps = [ - "//build/config/sanitizers:deps", - ] - } + deps = [ + "//build/config/sanitizers:deps", + ] + } - executable("symupload") { - sources = [ - "src/common/mac/HTTPMultipartUpload.m", - "src/tools/mac/symupload/symupload.m", - ] + executable("symupload") { + sources = [ + "src/common/mac/HTTPMultipartUpload.m", + "src/tools/mac/symupload/symupload.m", + ] - include_dirs = [ "src/common/mac" ] + include_dirs = [ "src/common/mac" ] - libs = [ "Foundation.framework" ] + libs = [ "Foundation.framework" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ - "//build/config/sanitizers:deps", - ] + deps = [ + "//build/config/sanitizers:deps", + ] + } + } else { + binary_symlink("dump_syms") { + binary_label = ":$target_name($host_toolchain)" + } + binary_symlink("symupload") { + binary_label = ":$target_name($host_toolchain)" + } } } |