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

import("//build/config/nacl/config.gni")

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",
    "port_provider_mac.cc",
    "port_provider_mac.h",
    "process.h",
    "process_handle.cc",
    "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 || is_ios) {
    sources -= [
      "kill.cc",
      "kill.h",
      "memory.cc",
      "memory.h",
      "process_iterator.cc",
      "process_iterator.h",
      "process_metrics.cc",
      "process_metrics_posix.cc",
      "process_posix.cc",
    ]
    if (!is_nacl_nonsfi) {
      sources -= [
        "kill_posix.cc",
        "launch.cc",
        "launch.h",
        "launch_posix.cc",
      ]
    }
  }

  if (is_nacl) {
    sources += [ "process_metrics_nacl.cc" ]
  }

  if (is_ios) {
    sources += [
      "memory_stubs.cc",
      "process_metrics.cc",
    ]
  }

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

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

  allow_circular_includes_from = [ "//base/memory" ]

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