# 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/package.gni")
import("//build/rust/rustc_binary.gni")

component_config("component_manager_config") {
  sources = [
    "//src/security/policy/component_manager_policy.json",
    "config.json",
  ]
}

package("component_manager_sfw") {
  deps = [
    ":component_manager_config",
    "//src/sys/component_manager:bin",
  ]

  resources = [
    {
      path = "$target_gen_dir/component_manager_config"
      dest = "component_manager_config"
    },
  ]

  binaries = [
    {
      name = "component_manager"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/component_manager_sfw.cmx")
      dest = "component_manager_sfw.cmx"
    },
  ]
}
