# Copyright 2015 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.

config("client_config") {
  include_dirs = [ ".." ]
}

source_set("client") {
  sources = [
    "crash_report_database.cc",
    "crash_report_database.h",
    "crash_report_database_mac.mm",
    "crash_report_database_win.cc",
    "crashpad_client.h",
    "crashpad_client_mac.cc",
    "crashpad_client_win.cc",
    "crashpad_info.cc",
    "crashpad_info.h",
    "prune_crash_reports.cc",
    "prune_crash_reports.h",
    "settings.cc",
    "settings.h",
    "simple_address_range_bag.cc",
    "simple_address_range_bag.h",
    "simple_string_dictionary.cc",
    "simple_string_dictionary.h",
    "simulate_crash.h",
    "simulate_crash_mac.cc",
    "simulate_crash_mac.h",
    "simulate_crash_win.h",
  ]

  if (is_mac) {
    sources += [
      "capture_context_mac.S",
      "capture_context_mac.h",
    ]
  }

  public_configs = [ ":client_config" ]

  deps = [
    "//base",
    "//third_party/crashpad/crashpad/compat",
    "//third_party/crashpad/crashpad/util",
  ]

  if (is_win) {
    libs = [ "rpcrt4.lib" ]
    cflags = [ "/wd4201" ]  # nonstandard extension used : nameless struct/union.
  }
}
