# Copyright 2018 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/images/assemble_system.gni")
import("//build/testing/host_test_data.gni")

assemble_system("overnet") {
  base_packages = [
    "//garnet/bin/run",
    "//garnet/bin/trace",
    "//garnet/bin/vsock_service:vsock_service",
    "//src/sys/appmgr",
    "//src/sys/appmgr:appmgr_scheme_config",
    "//src/sys/appmgr:component_id_index_no_restrict_storage",
    "//src/sys/core",
    "//src/sys/sysmgr",
    "//src/sys/sysmgr:services_config",
    "//src/connectivity/overnet/overnetstack",
    "//src/connectivity/overnet/overnetstack:overnetstack_config",
    "//src/connectivity/overnet/tools/debug-serial",
    "//src/sys/pkg/bin/system-update-committer:package",
  ]
  bootfs_labels = [
    "//build/info:bootfs",
    "//bundles:bootstrap",
    "//bundles:debugging",
    "//bundles/bringup:manual_testing",
    "//bundles/drivers:bootstrap",
    "//bundles/drivers:usb-host-stack",
    "//bundles/drivers:usb-peripheral-stack",
    "//bundles/drivers:utils",
  ]
  bootfs_labels +=
      [ "//src/sys/component_manager:component_manager_bootfs_config" ]
  ramdisk_fvm_in_zbi = true
}

if (is_host) {
  host_test_data("test_data") {
    out_dir = get_label_info(":anything($target_toolchain)", "target_out_dir")
    sources = [ "${out_dir}/overnet.zbi" ]
    deps = [ "//build/images/overnet($target_toolchain)" ]
  }
}
