# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/symlink.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//testing/test.gni")

if (is_win) {
  import("//build/config/win/visual_studio_version.gni")
}

config("tools_config") {
  include_dirs = [
    "breakpad/src",
    "breakpad/src/third_party",
  ]
  if (is_android) {
    defines = [ "__ANDROID__" ]
  }
  if (is_clang) {
    cflags = [ "-Wno-tautological-constant-out-of-range-compare" ]
  }
}

config("internal_config") {
  include_dirs = [ "breakpad/src" ]
  defines = []
  if (is_debug) {
    # This is needed for GTMLogger to work correctly.
    defines += [ "DEBUG" ]
  }
  if (is_android) {
    defines += [ "__ANDROID__" ]
  }
}

config("client_config") {
  include_dirs = [ "breakpad/src" ]
  if (is_android) {
    include_dirs += [ "breakpad/src/common/android/include" ]
  }
  if (is_chromeos) {
    defines = [ "__CHROMEOS__" ]
  }
}

config("handler_config") {
  include_dirs = [ "breakpad/src" ]
}

config("sender_config") {
  include_dirs = [ "breakpad/src" ]
}

config("breakpad_unittest_config") {
  # One of the breakpad unit tests test that we can detect the proper build-id.
  # We must override the build-id for this one target.
  ldflags = [ "-Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" ]
}

config("default_logging_severity_config") {
  defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ]
}

config("fuzzing_logging_severity_config") {
  defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_CRITICAL" ]
}

default_breakpad_configs = [ ":tools_config" ]

if (use_fuzzing_engine) {
  default_breakpad_configs += [ ":fuzzing_logging_severity_config" ]
} else {
  default_breakpad_configs += [ ":default_logging_severity_config" ]
}

# {micro,mini}dump_stackwalk and minidump_dump are tool-type executables
# that do not build on Windows.
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 = [
        "breakpad/src/common/path_helper.cc",
        "breakpad/src/common/path_helper.h",
        "breakpad/src/processor/basic_code_module.h",
        "breakpad/src/processor/basic_code_modules.cc",
        "breakpad/src/processor/basic_code_modules.h",
        "breakpad/src/processor/basic_source_line_resolver.cc",
        "breakpad/src/processor/call_stack.cc",
        "breakpad/src/processor/cfi_frame_info.cc",
        "breakpad/src/processor/cfi_frame_info.h",
        "breakpad/src/processor/disassembler_x86.cc",
        "breakpad/src/processor/disassembler_x86.h",
        "breakpad/src/processor/dump_context.cc",
        "breakpad/src/processor/dump_object.cc",
        "breakpad/src/processor/logging.cc",
        "breakpad/src/processor/logging.h",
        "breakpad/src/processor/pathname_stripper.cc",
        "breakpad/src/processor/pathname_stripper.h",
        "breakpad/src/processor/proc_maps_linux.cc",
        "breakpad/src/processor/process_state.cc",
        "breakpad/src/processor/simple_symbol_supplier.cc",
        "breakpad/src/processor/simple_symbol_supplier.h",
        "breakpad/src/processor/source_line_resolver_base.cc",
        "breakpad/src/processor/stack_frame_cpu.cc",
        "breakpad/src/processor/stack_frame_symbolizer.cc",
        "breakpad/src/processor/stackwalk_common.cc",
        "breakpad/src/processor/stackwalker.cc",
        "breakpad/src/processor/stackwalker_amd64.cc",
        "breakpad/src/processor/stackwalker_amd64.h",
        "breakpad/src/processor/stackwalker_arm.cc",
        "breakpad/src/processor/stackwalker_arm.h",
        "breakpad/src/processor/stackwalker_arm64.cc",
        "breakpad/src/processor/stackwalker_arm64.h",
        "breakpad/src/processor/stackwalker_mips.cc",
        "breakpad/src/processor/stackwalker_mips.h",
        "breakpad/src/processor/stackwalker_ppc.cc",
        "breakpad/src/processor/stackwalker_ppc.h",
        "breakpad/src/processor/stackwalker_ppc64.cc",
        "breakpad/src/processor/stackwalker_ppc64.h",
        "breakpad/src/processor/stackwalker_sparc.cc",
        "breakpad/src/processor/stackwalker_sparc.h",
        "breakpad/src/processor/stackwalker_x86.cc",
        "breakpad/src/processor/stackwalker_x86.h",
        "breakpad/src/processor/tokenize.cc",
        "breakpad/src/processor/tokenize.h",

        # libdisasm
        "breakpad/src/third_party/libdisasm/ia32_implicit.c",
        "breakpad/src/third_party/libdisasm/ia32_implicit.h",
        "breakpad/src/third_party/libdisasm/ia32_insn.c",
        "breakpad/src/third_party/libdisasm/ia32_insn.h",
        "breakpad/src/third_party/libdisasm/ia32_invariant.c",
        "breakpad/src/third_party/libdisasm/ia32_invariant.h",
        "breakpad/src/third_party/libdisasm/ia32_modrm.c",
        "breakpad/src/third_party/libdisasm/ia32_modrm.h",
        "breakpad/src/third_party/libdisasm/ia32_opcode_tables.c",
        "breakpad/src/third_party/libdisasm/ia32_opcode_tables.h",
        "breakpad/src/third_party/libdisasm/ia32_operand.c",
        "breakpad/src/third_party/libdisasm/ia32_operand.h",
        "breakpad/src/third_party/libdisasm/ia32_reg.c",
        "breakpad/src/third_party/libdisasm/ia32_reg.h",
        "breakpad/src/third_party/libdisasm/ia32_settings.c",
        "breakpad/src/third_party/libdisasm/ia32_settings.h",
        "breakpad/src/third_party/libdisasm/libdis.h",
        "breakpad/src/third_party/libdisasm/qword.h",
        "breakpad/src/third_party/libdisasm/x86_disasm.c",
        "breakpad/src/third_party/libdisasm/x86_format.c",
        "breakpad/src/third_party/libdisasm/x86_imm.c",
        "breakpad/src/third_party/libdisasm/x86_imm.h",
        "breakpad/src/third_party/libdisasm/x86_insn.c",
        "breakpad/src/third_party/libdisasm/x86_misc.c",
        "breakpad/src/third_party/libdisasm/x86_operand_list.c",
        "breakpad/src/third_party/libdisasm/x86_operand_list.h",
      ]

      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]
      configs += default_breakpad_configs
    }

    fuzzer_test("minidump_fuzzer") {
      sources = [
        "breakpad/src/processor/exploitability.cc",
        "breakpad/src/processor/minidump.cc",
        "breakpad/src/processor/minidump_processor.cc",
        "minidump_fuzzer.cc",
      ]

      deps = [
        ":stackwalk_common",
        "//base",
      ]

      additional_configs = [ ":fuzzing_logging_severity_config" ]
      include_dirs = [ "breakpad/src" ]

      libfuzzer_options = [
        # Suppress stdout from stackwalk_common, as it uses printf() directly.
        "close_fd_mask=1",
        "max_len=128000",
      ]

      # Always want these files included regardless of platform.
      set_sources_assignment_filter([])
      sources += [
        "breakpad/src/processor/exploitability_linux.cc",
        "breakpad/src/processor/exploitability_linux.h",
        "breakpad/src/processor/exploitability_win.cc",
        "breakpad/src/processor/exploitability_win.h",
        "breakpad/src/processor/symbolic_constants_win.cc",
        "breakpad/src/processor/symbolic_constants_win.h",
      ]
    }

    executable("microdump_stackwalk") {
      sources = [
        "breakpad/src/processor/microdump.cc",
        "breakpad/src/processor/microdump_processor.cc",
        "breakpad/src/processor/microdump_stackwalk.cc",
      ]

      deps = [
        ":stackwalk_common",
      ]

      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]
      configs += default_breakpad_configs
    }

    executable("minidump_stackwalk") {
      sources = [
        "breakpad/src/processor/exploitability.cc",
        "breakpad/src/processor/minidump.cc",
        "breakpad/src/processor/minidump_processor.cc",
        "breakpad/src/processor/minidump_stackwalk.cc",
      ]

      deps = [
        ":stackwalk_common",
      ]

      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]
      configs += default_breakpad_configs

      # Always want these files included regardless of platform.
      set_sources_assignment_filter([])
      sources += [
        "breakpad/src/processor/exploitability_linux.cc",
        "breakpad/src/processor/exploitability_linux.h",
        "breakpad/src/processor/exploitability_win.cc",
        "breakpad/src/processor/exploitability_win.h",
        "breakpad/src/processor/symbolic_constants_win.cc",
        "breakpad/src/processor/symbolic_constants_win.h",
      ]
    }

    executable("minidump_dump") {
      set_sources_assignment_filter([])
      sources = [
        "breakpad/src/processor/basic_code_module.h",
        "breakpad/src/processor/basic_code_modules.cc",
        "breakpad/src/processor/basic_code_modules.h",
        "breakpad/src/processor/dump_context.cc",
        "breakpad/src/processor/dump_object.cc",
        "breakpad/src/processor/logging.cc",
        "breakpad/src/processor/logging.h",
        "breakpad/src/processor/minidump.cc",
        "breakpad/src/processor/minidump_dump.cc",
        "breakpad/src/processor/pathname_stripper.cc",
        "breakpad/src/processor/pathname_stripper.h",
        "breakpad/src/processor/proc_maps_linux.cc",
      ]

      configs += [ ":tools_config" ]

      # There are some warnings in this code.
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]
    }
  } else {
    # Aliases for convenience.
    binary_symlink("microdump_stackwalk") {
      binary_label = ":$target_name($host_toolchain)"
    }
    binary_symlink("minidump_stackwalk") {
      binary_label = ":$target_name($host_toolchain)"
    }
    binary_symlink("minidump_dump") {
      binary_label = ":$target_name($host_toolchain)"
    }
  }
}

# Mac --------------------------------------------------------------------------

if (is_mac) {
  if (current_toolchain == host_toolchain) {
    executable("dump_syms") {
      sources = [
        "breakpad/src/common/dwarf/bytereader.cc",
        "breakpad/src/common/dwarf/dwarf2diehandler.cc",
        "breakpad/src/common/dwarf/dwarf2reader.cc",
        "breakpad/src/common/dwarf/elf_reader.cc",
        "breakpad/src/common/dwarf/elf_reader.h",
        "breakpad/src/common/dwarf_cfi_to_module.cc",
        "breakpad/src/common/dwarf_cu_to_module.cc",
        "breakpad/src/common/dwarf_line_to_module.cc",
        "breakpad/src/common/language.cc",
        "breakpad/src/common/mac/arch_utilities.cc",
        "breakpad/src/common/mac/arch_utilities.h",
        "breakpad/src/common/mac/dump_syms.cc",
        "breakpad/src/common/mac/file_id.cc",
        "breakpad/src/common/mac/macho_id.cc",
        "breakpad/src/common/mac/macho_reader.cc",
        "breakpad/src/common/mac/macho_utilities.cc",
        "breakpad/src/common/mac/macho_walker.cc",
        "breakpad/src/common/md5.cc",
        "breakpad/src/common/module.cc",
        "breakpad/src/common/path_helper.cc",
        "breakpad/src/common/path_helper.h",
        "breakpad/src/common/stabs_reader.cc",
        "breakpad/src/common/stabs_to_module.cc",
        "breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc",
      ]

      # For breakpad/src/common/stabs_reader.h.
      defines = [ "HAVE_MACH_O_NLIST_H" ]
      include_dirs = [ "breakpad/src/common/mac" ]

      # The DWARF utilities require -funsigned-char.
      cflags = [ "-funsigned-char" ]

      configs += [ ":internal_config" ]

      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" ]

      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.
        # https://crbug.com/google-breakpad/329
        configs -= [ "//build/config/compiler:default_optimization" ]
        cflags += [ "-O0" ]
      }
    }

    executable("symupload") {
      sources = [
        "breakpad/src/common/mac/HTTPMultipartUpload.m",
        "breakpad/src/tools/mac/symupload/symupload.m",
      ]

      include_dirs = [ "breakpad/src/common/mac" ]

      libs = [ "Foundation.framework" ]

      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]
    }
  } else {
    binary_symlink("dump_syms") {
      binary_label = ":$target_name($host_toolchain)"
    }
    binary_symlink("symupload") {
      binary_label = ":$target_name($host_toolchain)"
    }
  }
}

if (is_ios) {
  binary_symlink("dump_syms") {
    binary_label = ":$target_name($host_toolchain)"
  }
  binary_symlink("symupload") {
    binary_label = ":$target_name($host_toolchain)"
  }
}

if (is_mac) {
  static_library("utilities") {
    sources = [
      "breakpad/src/client/mac/crash_generation/ConfigFile.mm",
      "breakpad/src/client/mac/handler/breakpad_nlist_64.cc",
      "breakpad/src/client/mac/handler/dynamic_images.cc",
      "breakpad/src/client/mac/handler/minidump_generator.cc",
      "breakpad/src/client/minidump_file_writer.cc",
      "breakpad/src/common/convert_UTF.c",
      "breakpad/src/common/mac/MachIPC.mm",
      "breakpad/src/common/mac/arch_utilities.cc",
      "breakpad/src/common/mac/bootstrap_compat.cc",
      "breakpad/src/common/mac/file_id.cc",
      "breakpad/src/common/mac/launch_reporter.cc",
      "breakpad/src/common/mac/macho_id.cc",
      "breakpad/src/common/mac/macho_utilities.cc",
      "breakpad/src/common/mac/macho_walker.cc",
      "breakpad/src/common/mac/string_utilities.cc",
      "breakpad/src/common/md5.cc",
      "breakpad/src/common/simple_string_dictionary.cc",
      "breakpad/src/common/string_conversion.cc",
    ]

    configs += [ ":internal_config" ]

    # There are some warnings in this code.
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  executable("crash_inspector") {
    sources = [
      "breakpad/src/client/mac/crash_generation/Inspector.mm",
      "breakpad/src/client/mac/crash_generation/InspectorMain.mm",
    ]

    # TODO(GYP): 'mac_real_dsym': 1,

    include_dirs = [
      "breakpad/src/client/apple/Framework",
      "breakpad/src/common/mac",
      "breakpad/src",
    ]
    libs = [
      "CoreServices.framework",
      "Foundation.framework",
    ]

    deps = [
      ":utilities",
    ]
  }

  # TODO(GYP) this target has some mac_bundle_resources stuff.
  # executable("crash_report_sender") {
  # }
  group("crash_report_sender") {
  }

  config("breakpad_config") {
    include_dirs = [ "breakpad/src/client/apple/Framework" ]
  }

  static_library("breakpad") {
    sources = [
      "breakpad/src/client/mac/Framework/Breakpad.mm",
      "breakpad/src/client/mac/Framework/OnDemandServer.mm",
      "breakpad/src/client/mac/crash_generation/crash_generation_client.cc",
      "breakpad/src/client/mac/crash_generation/crash_generation_client.h",
      "breakpad/src/client/mac/handler/exception_handler.cc",
      "breakpad/src/client/mac/handler/protected_memory_allocator.cc",
    ]

    configs += [ ":internal_config" ]
    public_configs = [ ":breakpad_config" ]

    defines = [ "USE_PROTECTED_ALLOCATIONS=1" ]
    include_dirs = [ "breakpad/src/client/apple/Framework" ]

    deps = [
      ":crash_inspector",
      ":crash_report_sender",
      ":utilities",
    ]
  }

  group("client") {
    public_configs = [ ":client_config" ]
  }
}

if (is_linux || is_android) {
  if (current_toolchain == host_toolchain) {
    executable("symupload") {
      sources = [
        "breakpad/src/common/linux/http_upload.cc",
        "breakpad/src/common/linux/http_upload.h",
        "breakpad/src/common/linux/symbol_upload.cc",
        "breakpad/src/common/linux/symbol_upload.h",
        "breakpad/src/tools/linux/symupload/sym_upload.cc",
      ]

      include_dirs = [
        "breakpad/src",
        "breakpad/src/third_party",
      ]

      configs += [ ":tools_config" ]

      libs = [ "dl" ]
    }

    # dump_syms is a host tool, so only compile it for the host system.
    executable("dump_syms") {
      sources = [
        "breakpad/src/common/dwarf/bytereader.cc",
        "breakpad/src/common/dwarf/dwarf2diehandler.cc",
        "breakpad/src/common/dwarf/dwarf2reader.cc",
        "breakpad/src/common/dwarf/elf_reader.cc",
        "breakpad/src/common/dwarf/elf_reader.h",
        "breakpad/src/common/dwarf_cfi_to_module.cc",
        "breakpad/src/common/dwarf_cfi_to_module.h",
        "breakpad/src/common/dwarf_cu_to_module.cc",
        "breakpad/src/common/dwarf_cu_to_module.h",
        "breakpad/src/common/dwarf_line_to_module.cc",
        "breakpad/src/common/dwarf_line_to_module.h",
        "breakpad/src/common/language.cc",
        "breakpad/src/common/language.h",
        "breakpad/src/common/linux/crc32.cc",
        "breakpad/src/common/linux/crc32.h",
        "breakpad/src/common/linux/dump_symbols.cc",
        "breakpad/src/common/linux/dump_symbols.h",
        "breakpad/src/common/linux/elf_symbols_to_module.cc",
        "breakpad/src/common/linux/elf_symbols_to_module.h",
        "breakpad/src/common/linux/elfutils.cc",
        "breakpad/src/common/linux/elfutils.h",
        "breakpad/src/common/linux/file_id.cc",
        "breakpad/src/common/linux/file_id.h",
        "breakpad/src/common/linux/guid_creator.h",
        "breakpad/src/common/linux/linux_libc_support.cc",
        "breakpad/src/common/linux/linux_libc_support.h",
        "breakpad/src/common/linux/memory_mapped_file.cc",
        "breakpad/src/common/linux/memory_mapped_file.h",
        "breakpad/src/common/module.cc",
        "breakpad/src/common/module.h",
        "breakpad/src/common/path_helper.cc",
        "breakpad/src/common/path_helper.h",
        "breakpad/src/common/stabs_reader.cc",
        "breakpad/src/common/stabs_reader.h",
        "breakpad/src/common/stabs_to_module.cc",
        "breakpad/src/common/stabs_to_module.h",
        "breakpad/src/tools/linux/dump_syms/dump_syms.cc",
      ]

      # There are some warnings in this code.
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]

      # dwarf2reader.cc uses dynamic_cast. Because we don't typically
      # don't support RTTI, we enable it for this single target. Since
      # dump_syms doesn't share any object files with anything else,
      # this doesn't end up polluting Chrome itself.
      configs -= [ "//build/config/compiler:no_rtti" ]
      configs += [ "//build/config/compiler:rtti" ]

      # Breakpad rev 583 introduced this flag.
      # Using this define, stabs_reader.h will include a.out.h to
      # build on Linux.
      defines = [ "HAVE_A_OUT_H" ]

      include_dirs = [ "breakpad/src" ]
    }
  } else {
    # Aliases for convenience.
    binary_symlink("dump_syms") {
      binary_label = ":dump_syms($host_toolchain)"
    }
    binary_symlink("symupload") {
      binary_label = ":symupload($host_toolchain)"
    }
  }

  static_library("client") {
    # Want all these sources for both Linux and Android.
    set_sources_assignment_filter([])
    sources = [
      "breakpad/src/client/linux/crash_generation/crash_generation_client.cc",
      "breakpad/src/client/linux/crash_generation/crash_generation_client.h",
      "breakpad/src/client/linux/dump_writer_common/mapping_info.h",
      "breakpad/src/client/linux/dump_writer_common/thread_info.cc",
      "breakpad/src/client/linux/dump_writer_common/thread_info.h",
      "breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc",
      "breakpad/src/client/linux/dump_writer_common/ucontext_reader.h",
      "breakpad/src/client/linux/handler/exception_handler.cc",
      "breakpad/src/client/linux/handler/exception_handler.h",
      "breakpad/src/client/linux/handler/minidump_descriptor.cc",
      "breakpad/src/client/linux/handler/minidump_descriptor.h",
      "breakpad/src/client/linux/log/log.cc",
      "breakpad/src/client/linux/log/log.h",
      "breakpad/src/client/linux/microdump_writer/microdump_writer.cc",
      "breakpad/src/client/linux/microdump_writer/microdump_writer.h",
      "breakpad/src/client/linux/minidump_writer/cpu_set.h",
      "breakpad/src/client/linux/minidump_writer/directory_reader.h",
      "breakpad/src/client/linux/minidump_writer/line_reader.h",
      "breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc",
      "breakpad/src/client/linux/minidump_writer/linux_core_dumper.h",
      "breakpad/src/client/linux/minidump_writer/linux_dumper.cc",
      "breakpad/src/client/linux/minidump_writer/linux_dumper.h",
      "breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc",
      "breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h",
      "breakpad/src/client/linux/minidump_writer/minidump_writer.cc",
      "breakpad/src/client/linux/minidump_writer/minidump_writer.h",
      "breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h",
      "breakpad/src/client/minidump_file_writer-inl.h",
      "breakpad/src/client/minidump_file_writer.cc",
      "breakpad/src/client/minidump_file_writer.h",
      "breakpad/src/common/convert_UTF.c",
      "breakpad/src/common/convert_UTF.h",
      "breakpad/src/common/linux/elf_core_dump.cc",
      "breakpad/src/common/linux/elf_core_dump.h",
      "breakpad/src/common/linux/elfutils.cc",
      "breakpad/src/common/linux/elfutils.h",
      "breakpad/src/common/linux/file_id.cc",
      "breakpad/src/common/linux/file_id.h",
      "breakpad/src/common/linux/google_crashdump_uploader.cc",
      "breakpad/src/common/linux/google_crashdump_uploader.h",
      "breakpad/src/common/linux/guid_creator.cc",
      "breakpad/src/common/linux/guid_creator.h",
      "breakpad/src/common/linux/libcurl_wrapper.cc",
      "breakpad/src/common/linux/libcurl_wrapper.h",
      "breakpad/src/common/linux/linux_libc_support.cc",
      "breakpad/src/common/linux/linux_libc_support.h",
      "breakpad/src/common/linux/memory_mapped_file.cc",
      "breakpad/src/common/linux/memory_mapped_file.h",
      "breakpad/src/common/linux/safe_readlink.cc",
      "breakpad/src/common/linux/safe_readlink.h",
      "breakpad/src/common/memory_allocator.h",
      "breakpad/src/common/simple_string_dictionary.cc",
      "breakpad/src/common/simple_string_dictionary.h",
      "breakpad/src/common/string_conversion.cc",
      "breakpad/src/common/string_conversion.h",
    ]

    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    public_configs = [ ":client_config" ]

    if (current_cpu == "arm" && is_chromeos) {
      # Avoid running out of registers in
      # linux_syscall_support.h:sys_clone()'s inline assembly.
      cflags = [ "-marm" ]
    }

    # Clang's -mstackrealign doesn't work well with
    # linux_syscall_support.h hand written asm syscalls.
    # See https://crbug.com/556393
    configs -= [ "//build/config/compiler:clang_stackrealign" ]

    if (is_android) {
      sources += [ "breakpad/src/common/android/breakpad_getcontext.S" ]
    }

    libs = [ "dl" ]

    include_dirs = [
      ".",
      "breakpad/src",
      "breakpad/src/client",
      "breakpad/src/third_party/linux/include",
    ]
  }

  static_library("processor_support") {
    set_sources_assignment_filter([])
    sources = [
      "breakpad/src/common/scoped_ptr.h",
      "breakpad/src/processor/basic_code_modules.cc",
      "breakpad/src/processor/basic_code_modules.h",
      "breakpad/src/processor/dump_context.cc",
      "breakpad/src/processor/dump_object.cc",
      "breakpad/src/processor/logging.cc",
      "breakpad/src/processor/logging.h",
      "breakpad/src/processor/minidump.cc",
      "breakpad/src/processor/pathname_stripper.cc",
      "breakpad/src/processor/pathname_stripper.h",
      "breakpad/src/processor/proc_maps_linux.cc",
    ]

    include_dirs = [
      "breakpad/src",
      "breakpad/src/client",
      "breakpad/src/third_party/linux/include",
      ".",
    ]

    # There are some warnings in this code.
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  test("breakpad_unittests") {
    set_sources_assignment_filter([])
    sources = [
      "breakpad/src/client/linux/handler/exception_handler_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc",
      "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc",
      "breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc",
      "breakpad/src/common/linux/elf_core_dump_unittest.cc",
      "breakpad/src/common/linux/file_id_unittest.cc",
      "breakpad/src/common/linux/linux_libc_support_unittest.cc",
      "breakpad/src/common/linux/synth_elf.cc",
      "breakpad/src/common/linux/tests/auto_testfile.h",
      "breakpad/src/common/linux/tests/crash_generator.cc",
      "breakpad/src/common/linux/tests/crash_generator.h",
      "breakpad/src/common/memory_allocator_unittest.cc",
      "breakpad/src/common/memory_range.h",
      "breakpad/src/common/simple_string_dictionary_unittest.cc",
      "breakpad/src/common/test_assembler.cc",
      "breakpad/src/common/tests/file_utils.cc",
      "breakpad/src/common/tests/file_utils.h",
      "breakpad/src/tools/linux/md2core/minidump_memory_range.h",
      "breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc",
      "linux/breakpad_googletest_includes.h",
    ]

    deps = [
      ":client",
      ":processor_support",
      "//testing/gmock",
      "//testing/gtest",
      "//testing/gtest:gtest_main",
    ]

    data_deps = [
      ":linux_dumper_unittest_helper",
    ]

    include_dirs = [
      "linux",  # Use our copy of breakpad_googletest_includes.h
      ".",
    ]

    # There are some warnings in this code.
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      ":client_config",
      "//build/config/compiler:no_chromium_code",
    ]

    if (is_clang) {
      # See https://crbug.com/138571#c18
      cflags = [ "-Wno-unused-value" ]
    }

    if (is_android) {
      use_raw_android_executable = true
      sources +=
          [ "breakpad/src/common/android/breakpad_getcontext_unittest.cc" ]
      libs = [ "log" ]
      extra_dist_files = [ "$root_out_dir/linux_dumper_unittest_helper" ]
    }

    # Clang's -mstackrealign doesn't work well with
    # linux_syscall_support.h hand written asm syscalls.
    # See https://crbug.com/556393
    configs -= [ "//build/config/compiler:clang_stackrealign" ]

    # Add the breakpad unittest config at the end to override all configs.
    configs += [ ":breakpad_unittest_config" ]
  }

  executable("linux_dumper_unittest_helper") {
    set_sources_assignment_filter([])
    testonly = true
    sources = [
      "breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc",
    ]
    deps = [
      ":processor_support",
    ]

    configs += [ ":client_config" ]

    if (is_component_build) {
      ldflags = [ "-Wl,-rpath,\$ORIGIN" ]
    }
  }

  executable("generate_test_dump") {
    set_sources_assignment_filter([])
    testonly = true
    sources = [
      "linux/generate-test-dump.cc",
    ]

    # This file has an unused variable warning.
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      ":client_config",
      "//build/config/compiler:no_chromium_code",
    ]

    deps = [
      ":client",
    ]

    if (is_android) {
      libs = [ "log" ]
    }
  }

  executable("minidump-2-core") {
    set_sources_assignment_filter([])
    sources = [
      "breakpad/src/common/path_helper.cc",
      "breakpad/src/common/path_helper.h",
      "breakpad/src/tools/linux/md2core/minidump-2-core.cc",
    ]

    include_dirs = [ "breakpad/src" ]

    deps = [
      ":client",
    ]
  }

  executable("core-2-minidump") {
    set_sources_assignment_filter([])
    sources = [
      "breakpad/src/tools/linux/core2md/core2md.cc",
    ]

    deps = [
      ":client",
    ]

    include_dirs = [ "breakpad/src" ]
  }
}

if (is_win) {
  executable("dump_syms") {
    # TODO(scottmg) using this with VS2015 may break the crash server.
    # https://crbug.com/696671
    include_dirs = [
      "$visual_studio_path/DIA SDK/include",
      "breakpad/src",
    ]

    sources = [
      "breakpad/src/common/windows/dia_util.cc",
      "breakpad/src/common/windows/dia_util.h",
      "breakpad/src/common/windows/guid_string.cc",
      "breakpad/src/common/windows/guid_string.h",
      "breakpad/src/common/windows/omap.cc",
      "breakpad/src/common/windows/omap.h",
      "breakpad/src/common/windows/pdb_source_line_writer.cc",
      "breakpad/src/common/windows/pdb_source_line_writer.h",
      "breakpad/src/common/windows/string_utils-inl.h",
      "breakpad/src/common/windows/string_utils.cc",
      "breakpad/src/tools/windows/dump_syms/dump_syms.cc",
    ]

    lib_dirs = []
    if (target_cpu == "x64") {
      lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ]
    } else {
      lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ]
    }

    libs = [
      "diaguids.lib",
      "imagehlp.lib",
    ]
    if (is_clang) {
      # clang complains about microsoft-specific goto extensions. Instead of
      # rewriting decade-old, goto-ridden code, disable the warning.
      cflags = [ "-Wno-microsoft-goto" ]
    }
  }
}

if (is_ios) {
  static_library("client") {
    set_sources_assignment_filter([])
    sources = [
      "breakpad/src/client/ios/Breakpad.h",
      "breakpad/src/client/ios/Breakpad.mm",
      "breakpad/src/client/ios/BreakpadController.h",
      "breakpad/src/client/ios/BreakpadController.mm",
      "breakpad/src/client/ios/handler/ios_exception_minidump_generator.h",
      "breakpad/src/client/ios/handler/ios_exception_minidump_generator.mm",
      "breakpad/src/client/mac/crash_generation/ConfigFile.h",
      "breakpad/src/client/mac/crash_generation/ConfigFile.mm",
      "breakpad/src/client/mac/handler/breakpad_nlist_64.cc",
      "breakpad/src/client/mac/handler/breakpad_nlist_64.h",
      "breakpad/src/client/mac/handler/dynamic_images.cc",
      "breakpad/src/client/mac/handler/dynamic_images.h",
      "breakpad/src/client/mac/handler/exception_handler.cc",
      "breakpad/src/client/mac/handler/exception_handler.h",
      "breakpad/src/client/mac/handler/minidump_generator.cc",
      "breakpad/src/client/mac/handler/minidump_generator.h",
      "breakpad/src/client/mac/handler/protected_memory_allocator.cc",
      "breakpad/src/client/mac/handler/protected_memory_allocator.h",
      "breakpad/src/client/mac/sender/uploader.h",
      "breakpad/src/client/mac/sender/uploader.mm",
      "breakpad/src/client/minidump_file_writer-inl.h",
      "breakpad/src/client/minidump_file_writer.cc",
      "breakpad/src/client/minidump_file_writer.h",
      "breakpad/src/common/convert_UTF.c",
      "breakpad/src/common/convert_UTF.h",
      "breakpad/src/common/long_string_dictionary.cc",
      "breakpad/src/common/mac/HTTPMultipartUpload.m",
      "breakpad/src/common/mac/file_id.cc",
      "breakpad/src/common/mac/file_id.h",
      "breakpad/src/common/mac/macho_id.cc",
      "breakpad/src/common/mac/macho_id.h",
      "breakpad/src/common/mac/macho_utilities.cc",
      "breakpad/src/common/mac/macho_utilities.h",
      "breakpad/src/common/mac/macho_walker.cc",
      "breakpad/src/common/mac/macho_walker.h",
      "breakpad/src/common/mac/string_utilities.cc",
      "breakpad/src/common/mac/string_utilities.h",
      "breakpad/src/common/md5.cc",
      "breakpad/src/common/md5.h",
      "breakpad/src/common/simple_string_dictionary.cc",
      "breakpad/src/common/simple_string_dictionary.h",
      "breakpad/src/common/string_conversion.cc",
      "breakpad/src/common/string_conversion.h",
      "breakpad/src/google_breakpad/common/minidump_format.h",
    ]
    set_sources_assignment_filter(sources_assignment_filter)

    include_dirs = [
      "breakpad/src",
      "breakpad/src/client/mac/Framework",
      "breakpad/src/common/mac",
    ]

    deps = [
      "//third_party/google_toolbox_for_mac",
    ]

    public_configs = [ ":client_config" ]

    if (is_clang) {
      # See https://crbug.com/google-breakpad/675.
      cflags = [ "-Wno-deprecated-declarations" ]
    }
  }
}

if (is_win) {
  group("client") {
    public_configs = [ ":client_config" ]
  }

  config("breakpad_handler_warnings") {
    if (is_clang) {
      # See https://crbug.com/google-breakpad/658.
      cflags = [ "-Wno-reorder" ]
    }
  }

  static_library("breakpad_handler") {
    configs += [ ":handler_config" ]
    if (is_win) {
      public_configs = [ ":handler_config" ]
    }

    defines = [ "BREAKPAD_NO_TERMINATE_THREAD" ]

    sources = [
      "breakpad/src/client/windows/crash_generation/client_info.cc",
      "breakpad/src/client/windows/crash_generation/client_info.h",
      "breakpad/src/client/windows/crash_generation/crash_generation_client.cc",
      "breakpad/src/client/windows/crash_generation/crash_generation_client.h",
      "breakpad/src/client/windows/crash_generation/crash_generation_server.cc",
      "breakpad/src/client/windows/crash_generation/crash_generation_server.h",
      "breakpad/src/client/windows/crash_generation/minidump_generator.cc",
      "breakpad/src/client/windows/crash_generation/minidump_generator.h",
      "breakpad/src/client/windows/handler/exception_handler.cc",
      "breakpad/src/client/windows/handler/exception_handler.h",
      "breakpad/src/common/windows/guid_string.cc",
      "breakpad/src/common/windows/guid_string.h",
      "breakpad/src/common/windows/string_utils-inl.h",
      "breakpad/src/google_breakpad/common/minidump_format.h",
    ]
    configs += [ ":breakpad_handler_warnings" ]
  }

  source_set("breakpad_sender") {
    sources = [
      "breakpad/src/client/windows/sender/crash_report_sender.cc",
      "breakpad/src/client/windows/sender/crash_report_sender.h",
      "breakpad/src/common/windows/http_upload.cc",
      "breakpad/src/common/windows/http_upload.h",
    ]
    configs += [ ":sender_config" ]
    public_configs = [ ":sender_config" ]
  }
}
