# 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/config/fuchsia/zbi.gni")
import("//build/images/assemble_system.gni")
import("//garnet/build/pkgfs.gni")

guest_packages = [
  "//garnet/bin/appmgr",
  "//garnet/bin/guest/integration:guest_integration_tests_utils",
  "//garnet/bin/guest/pkg/zircon_guest:services_config",
  "//garnet/bin/run",
  "//garnet/bin/sysmgr",
  "//garnet/bin/trace",
  "//garnet/bin/vsock_service:vsock_service",
  pkgfs_package_label,
]

shell_commands("shell-commands") {
  testonly = true
  visibility = [ ":*" ]
  deps = guest_packages
}

config_package("config-data") {
  testonly = true
  visibility = [ ":*" ]
  deps = guest_packages
}

guest_packages += [
  ":shell-commands",
  ":config-data",
]

assemble_system("guest") {
  base_packages = guest_packages
}
