# Copyright 2019 The Fuchsia 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/component/config.gni")
import("//build/components.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/testing/environments.gni")

template("component_manager") {
  forward_variables_from(invoker, [ "is_test" ])
  if (!defined(is_test)) {
    is_test = false
  }

  _deps = [
    "//garnet/lib/rust/files_async",
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.boot:fuchsia.boot-rustc",
    "//sdk/fidl/fuchsia.component:fuchsia.component-rustc",
    "//sdk/fidl/fuchsia.component.internal:fuchsia.component.internal-rustc",
    "//sdk/fidl/fuchsia.component.runner:fuchsia.component.runner-rustc",
    "//sdk/fidl/fuchsia.data:fuchsia.data-rustc",
    "//sdk/fidl/fuchsia.diagnostics.types:fuchsia.diagnostics.types-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.io2:fuchsia.io2-rustc",
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel-rustc",
    "//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
    "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
    "//sdk/fidl/fuchsia.process:fuchsia.process-rustc",
    "//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//sdk/fidl/fuchsia.time:fuchsia.time-rustc",
    "//src/diagnostics/archivist:lib",
    "//src/lib/by_addr:by_addr",
    "//src/lib/diagnostics/inspect/contrib/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/error/clonable_error",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/from-enum",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/fuchsia-url",
    "//src/lib/process_builder",
    "//src/lib/scoped_task",
    "//src/lib/storage/vfs/rust:vfs",
    "//src/lib/syslog",
    "//src/lib/trace/rust:trace",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/lib/zircon/rust:fuchsia-zircon-status",
    "//src/lib/zircon/rust:fuchsia-zircon-sys",
    "//src/sys/lib/cm_fidl_validator",
    "//src/sys/lib/cm_rust",
    "//src/sys/lib/cm_types",
    "//src/sys/lib/component_id_index",
    "//src/sys/lib/directory_broker",
    "//src/sys/lib/moniker",
    "//src/sys/lib/routing",
    "//src/sys/lib/runner",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:byteorder",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:maplit",
    "//third_party/rust_crates:matches",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:tempfile",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:url",
    "//third_party/rust_crates:void",

    # This is a 'logical' test-only dep, in that it's only used in the
    # model::testing helpers, but that module is currently included in the main
    # library (rather than being guarded with '#[cfg(test)]') to allow use in
    # separate integration test targets.
    "//garnet/examples/fidl/services:echo-rustc",
  ]
  _non_rust_deps = [
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
  ]
  _sources = [
    "src/builtin/arguments.rs",
    "src/builtin/capability.rs",
    "src/builtin/debug_resource.rs",
    "src/builtin/fuchsia_boot_resolver.rs",
    "src/builtin/hypervisor_resource.rs",
    "src/builtin/info_resource.rs",
    "src/builtin/ioport_resource.rs",
    "src/builtin/irq_resource.rs",
    "src/builtin/kernel_stats.rs",
    "src/builtin/log.rs",
    "src/builtin/mmio_resource.rs",
    "src/builtin/mod.rs",
    "src/builtin/process_launcher.rs",
    "src/builtin/root_job.rs",
    "src/builtin/root_resource.rs",
    "src/builtin/runner.rs",
    "src/builtin/smc_resource.rs",
    "src/builtin/system_controller.rs",
    "src/builtin/time.rs",
    "src/builtin/vmex_resource.rs",
    "src/builtin_environment.rs",
    "src/capability.rs",
    "src/capability_ready_notifier.rs",
    "src/channel.rs",
    "src/config.rs",
    "src/constants.rs",
    "src/diagnostics/component_stats.rs",
    "src/diagnostics/component_tree_stats.rs",
    "src/diagnostics/constants.rs",
    "src/diagnostics/measurement.rs",
    "src/diagnostics/mod.rs",
    "src/diagnostics/runtime_stats_source.rs",
    "src/diagnostics/task_info.rs",
    "src/diagnostics/testing.rs",
    "src/elf_runner/component.rs",
    "src/elf_runner/config.rs",
    "src/elf_runner/error.rs",
    "src/elf_runner/launcher.rs",
    "src/elf_runner/mod.rs",
    "src/elf_runner/runtime_dir.rs",
    "src/elf_runner/stdout.rs",
    "src/framework.rs",
    "src/fuchsia_pkg_resolver.rs",
    "src/klog.rs",
    "src/lib.rs",
    "src/model/actions/delete_child.rs",
    "src/model/actions/destroy.rs",
    "src/model/actions/discover.rs",
    "src/model/actions/mark_deleted.rs",
    "src/model/actions/mod.rs",
    "src/model/actions/resolve.rs",
    "src/model/actions/shutdown.rs",
    "src/model/actions/start.rs",
    "src/model/actions/stop.rs",
    "src/model/addable_directory.rs",
    "src/model/binding.rs",
    "src/model/component.rs",
    "src/model/component_controller.rs",
    "src/model/component_id_index.rs",
    "src/model/context.rs",
    "src/model/dir_tree.rs",
    "src/model/environment.rs",
    "src/model/error.rs",
    "src/model/event_logger.rs",
    "src/model/events/dispatcher.rs",
    "src/model/events/error.rs",
    "src/model/events/event.rs",
    "src/model/events/filter.rs",
    "src/model/events/mod.rs",
    "src/model/events/mode_set.rs",
    "src/model/events/registry.rs",
    "src/model/events/running_provider.rs",
    "src/model/events/serve.rs",
    "src/model/events/source.rs",
    "src/model/events/source_factory.rs",
    "src/model/events/stream.rs",
    "src/model/events/stream_provider.rs",
    "src/model/events/synthesizer.rs",
    "src/model/exposed_dir.rs",
    "src/model/hooks.rs",
    "src/model/hub.rs",
    "src/model/logging.rs",
    "src/model/mod.rs",
    "src/model/model.rs",
    "src/model/namespace.rs",
    "src/model/policy.rs",
    "src/model/resolver.rs",
    "src/model/rights.rs",
    "src/model/routing/error.rs",
    "src/model/routing/mod.rs",
    "src/model/routing/open.rs",
    "src/model/routing/service.rs",
    "src/model/routing_fns.rs",
    "src/model/runner.rs",
    "src/model/storage/admin_protocol.rs",
    "src/model/storage/mod.rs",
    "src/model/testing/echo_service.rs",
    "src/model/testing/mocks.rs",
    "src/model/testing/mod.rs",
    "src/model/testing/out_dir.rs",
    "src/model/testing/routing_test_helpers.rs",
    "src/model/testing/test_helpers.rs",
    "src/model/testing/test_hook.rs",
    "src/root_stop_notifier.rs",
    "src/startup.rs",
    "src/work_scheduler/delegate.rs",
    "src/work_scheduler/dispatcher.rs",
    "src/work_scheduler/hook.rs",
    "src/work_scheduler/mod.rs",
    "src/work_scheduler/timer.rs",
    "src/work_scheduler/work_item.rs",
    "src/work_scheduler/work_scheduler.rs",
  ]

  if (is_test) {
    rustc_test(target_name) {
      edition = "2018"
      sources = _sources
      deps = _deps
      non_rust_deps = _non_rust_deps

      sources += [
        "src/model/tests/mod.rs",
        "src/model/tests/rights.rs",
        "src/model/tests/routing.rs",
        "src/model/tests/storage.rs",
        "src/model/tests/storage_admin.rs",
        "src/work_scheduler/routing_tests.rs",
      ]

      # Test-only deps. Prefer adding deps used only in tests here instead of
      # above, which has the benefit of keeping unneeded deps out of the production
      # binary and allows depending on 'testonly' targets.
      deps += [
        "//src/lib/diagnostics/hierarchy/rust",
        "//src/lib/diagnostics/testing",
        "//src/lib/process_builder:test-util-fidl-rustc",
        "//src/sys/lib/directory_broker",
        "//src/sys/lib/library_loader",
        "//src/sys/lib/routing/testing:routing_test_helpers",
      ]
    }
  } else {
    rustc_library(target_name) {
      name = "component_manager_lib"
      edition = "2018"

      sources = _sources
      deps = _deps
      non_rust_deps = _non_rust_deps

      # Only for internal use.
      visibility = [
        "//src/session/*",
        "//src/sys/component_manager/*",
      ]
    }
  }
}

component_manager("lib") {
}
component_manager("component_manager_test") {
  is_test = true
}
component_manager("component_manager_boot_env_test") {
  is_test = true
}

rustc_binary("bin") {
  name = "component_manager"
  edition = "2018"
  force_opt = "z"

  # Component manager must always be small (even in debug builds) since it
  # is part of the Zircon boot image.
  #
  # We use a Thin LTO, which provides a ~65% decrease in binary size, albeit at
  # the cost of a ~5x increase in compile wall time (or roughly 10 seconds on
  # a 2018-era workstation). Fat LTO provides an even smaller binary (~70%
  # decrease from no-LTO), but is single threaded, requiring ~6x more wall time
  # to build (or roughly 60 seconds on a 2018-era workstation).
  configs += [ "//build/config/lto:thinlto" ]
  configs -= [ "//build/config/lto:thinlto" ]
  configs += [ "//build/config/lto:thinlto" ]
  configs -= [ "//build/config/fuchsia:dynamic_rust_standard_library" ]

  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.io2:fuchsia.io2-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-runtime",
    "//src/lib/storage/pseudo-fs",
    "//src/lib/trace/rust:trace-provider",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [ "src/main.rs" ]
}

# Note that this package and the component it contains wrap component_manager
# as a v1 Component for interactive testing purposes through the shell. This
# will eventually go away.
fuchsia_component("component-manager-cmp") {
  deps = [
    ":bin",
    ":component_manager_appmgr_config",
    ":component_manager_debug_config",
  ]
  component_name = "component_manager"
  manifest = "meta/component_manager.cmx"
}

# This component is identical to `component-manager-cmp`, except the manifest
# includes the arguments to point component_manager at the bundled config file
fuchsia_component("component-manager-for-examples-cmp") {
  deps = [
    ":bin",
    ":component_manager_for_examples_config",
  ]
  component_name = "component_manager_for_examples"
  manifest = "meta/component_manager_for_examples.cmx"
}

fuchsia_package("component-manager-for-examples") {
  deps = [ ":component-manager-for-examples-cmp" ]
}

fuchsia_package("component-manager") {
  deps = [ ":component-manager-cmp" ]
}

fuchsia_component("component-manager-tests-cmp") {
  testonly = true
  deps = [
    ":component_manager_debug_config",
    ":component_manager_test",
    "//src/lib/process_builder:test_util",
  ]
  component_name = "component_manager_tests"
  manifest = "meta/component_manager_tests.cmx"
}

resource("component_manager_tests_invalid_manifest") {
  sources = [ "meta/component_manager_tests_invalid.cm" ]
  outputs = [ "meta/{{source_file_part}}" ]
}

fuchsia_component("component-manager-boot-env-tests-cmp") {
  testonly = true
  deps = [
    ":component_manager_boot_env_test",
    ":component_manager_debug_config",
    "//src/lib/process_builder:root_job_test_runner",
    "//src/lib/process_builder:test_util",
  ]
  component_name = "component_manager_boot_env_tests"
  manifest = "meta/component_manager_boot_env_tests.cmx"
}

fuchsia_test_package("component-manager-tests") {
  # Many tests generate routing errors.
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
  test_components = [
    ":component-manager-tests-cmp",
    ":component-manager-boot-env-tests-cmp",
  ]
  deps = [
    ":component_manager_tests_invalid_manifest",
    "src/elf_runner/tests/lifecycle:run-indefinitely",
    "//examples/components/basic:hello-world",
    "//examples/components/basic:lifecycle-full",
    "//examples/hello_world/rust:hello-world-rust-component-v2",
    "//garnet/examples/fidl/echo_server_rust:echo-server-rust-cmp",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":component-manager",
    ":component-manager-tests",
    "src/elf_runner/tests",
    "stress_tests",
    "stress_tests_alt",
    "tests",
  ]
}

group("bootfs") {
  deps = [
    ":bin",
    "//src/sys/startup:bootfs",
  ]
}

component_config("component_manager_appmgr_config") {
  sources = [ "configs/appmgr_config.json5" ]
}

component_config("component_manager_debug_config") {
  sources = [ "configs/debug_config.json5" ]
}

component_config("component_manager_bootfs_config") {
  sources = [
    "//src/security/policy/component_manager_policy.json5",
    "configs/bootfs_config.json5",
  ]
  dest = "config/component_manager"
}

component_config("component_manager_for_examples_config") {
  sources = [ "configs/for_examples_config.json5" ]
  dest = "data/component_manager_config"
}
