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

component("embedder") {
  public = [
    "embedded_service_info.h",
    "embedded_service_runner.h",
    "manifest_utils.h",
  ]

  sources = [
    "embedded_instance_manager.cc",
    "embedded_instance_manager.h",
    "embedded_service_info.cc",
    "embedded_service_runner.cc",
    "manifest_utils.cc",
    "service_manager_embedder_export.h",
  ]

  # iOS embeds the Service Manager but does not use service_manager::Main() (and
  # cannot use or even build it as-is).
  if (!is_ios) {
    public += [
      "main.h",
      "main_delegate.h",
      "process_type.h",
      "set_process_title.h",
      "set_process_title_linux.h",
      "shared_file_util.h",
    ]
    sources += [
      "main.cc",
      "main_delegate.cc",
      "set_process_title.cc",
      "set_process_title_linux.cc",
      "shared_file_util.cc",
    ]
  }

  if (is_mac) {
    sources += [
      "mac_init.h",
      "mac_init.mm",
    ]

    libs = [ "Foundation.framework" ]
  }

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

  public_deps = [
    "//base",
    "//services/service_manager/public/cpp",
  ]

  if (!is_ios) {
    # deps of ServiceManager::Main and related functionality.
    deps += [
      "//base/allocator:features",
      "//components/tracing:startup_tracing",
      "//ui/base",
    ]

    public_deps += [
      ":embedder_switches",
      "//mojo/edk/system",
      "//services/service_manager/background:lib",
      "//services/service_manager/public/cpp/standalone_service",
      "//services/service_manager/runner:init",
      "//services/service_manager/runner/common",
    ]
  }

  defines = [ "SERVICE_MANAGER_EMBEDDER_IMPL" ]
}

component("embedder_switches") {
  sources = [
    "service_manager_embedder_switches_export.h",
    "switches.cc",
    "switches.h",
  ]
  defines = [ "SERVICE_MANAGER_EMBEDDER_SWITCHES_IMPL" ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "embedded_instance_manager_unittest.cc",
    "manifest_utils_unittest.cc",
  ]

  # These headers are duplicated here so that they can remain private in the
  # "embedder" target. See http://crbug.com/732993 for a way to make it
  # unnecessary to do this.
  sources += [
    "embedded_instance_manager.h",
    "service_manager_embedder_export.h",
  ]

  deps = [
    ":embedder",
    "//base",
    "//base/test:test_support",
    "//testing/gtest",
  ]
}