# 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("//pdf/features.gni")

static_library("child") {
  sources = []

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  deps = []
  data_deps = []

  if (is_win) {
    sources += [
      "v8_crashpad_support_win.cc",
      "v8_crashpad_support_win.h",
    ]
    deps += [
      "//components/crash/content/app:crash_export_thunk_include",
      "//gin",
      "//v8",
    ]
    data_deps += [ "//tools/v8_context_snapshot" ]
  }

  if (enable_pdf) {
    sources += [
      "pdf_child_init.cc",
      "pdf_child_init.h",
    ]
    deps += [
      "//base",
      "//content/public/child",
      "//pdf:buildflags",
    ]
  }
}
