# Copyright (c) 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.

source_set("process") {
  sources = [
    "internal_linux.cc",
    "internal_linux.h",
    "kill.cc",
    "kill.h",
    "kill_mac.cc",
    "kill_posix.cc",
    "kill_win.cc",
    "launch.cc",
    "launch.h",
    "launch_ios.cc",
    "launch_mac.cc",
    "launch_posix.cc",
    "launch_win.cc",
    "memory.cc",
    "memory.h",
    "memory_linux.cc",
    "memory_mac.mm",
    "memory_win.cc",
    "process.h",
    "process_handle_freebsd.cc",
    "process_handle_linux.cc",
    "process_handle_mac.cc",
    "process_handle_openbsd.cc",
    "process_handle_posix.cc",
    "process_handle_win.cc",
    "process_info.h",
    "process_info_linux.cc",
    "process_info_mac.cc",
    "process_info_win.cc",
    "process_iterator.cc",
    "process_iterator.h",
    "process_iterator_freebsd.cc",
    "process_iterator_linux.cc",
    "process_iterator_mac.cc",
    "process_iterator_openbsd.cc",
    "process_iterator_win.cc",
    "process_linux.cc",
    "process_metrics.cc",
    "process_metrics.h",
    "process_metrics_freebsd.cc",
    "process_metrics_ios.cc",
    "process_metrics_linux.cc",
    "process_metrics_mac.cc",
    "process_metrics_openbsd.cc",
    "process_metrics_posix.cc",
    "process_metrics_win.cc",
    "process_posix.cc",
    "process_win.cc",
  ]

  sources -= [
    "process_handle_freebsd.cc",
    "process_handle_openbsd.cc",
    "process_iterator_freebsd.cc",
    "process_iterator_openbsd.cc",
    "process_metrics_freebsd.cc",
    "process_metrics_openbsd.cc",
  ]

  if (is_android) {
    # Android uses some Linux sources, put those back.
    set_sources_assignment_filter([])
    sources += [
      "internal_linux.cc",
      "memory_linux.cc",
      "process_handle_linux.cc",
      "process_iterator_linux.cc",
      "process_metrics_linux.cc",
    ]
    set_sources_assignment_filter(sources_assignment_filter)
  }

  if (is_nacl) {
    sources -= [
      "kill.cc",
      "kill.h",
      "kill_posix.cc",
      "launch.cc",
      "launch.h",
      "launch_posix.cc",
      "memory.cc",
      "memory.h",
      "process_iterator.cc",
      "process_iterator.h",
      "process_metrics.cc",
      "process_metrics_posix.cc",
      "process_posix.cc",
    ]
  }

  configs += [ "//base:base_implementation" ]

  deps = [
    "//base/memory",
    "//base/third_party/dynamic_annotations",
  ]

  allow_circular_includes_from = [ "//base/memory" ]

  visibility = [ "//base/*" ]
}
