# Copyright 2020 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/dev.gni")

group("bootfs") {
  testonly = fuchsia_zbi_testonly
  deps = [
    "board:bootfs_labels",
    "dev:bootfs_labels",
    "product:bootfs_labels",
  ]
}

group("build_only") {
  testonly = true
  deps = [ "dev:build_only_deps" ]
}

group("recovery_bootfs") {
  testonly = true
  deps = [
    "board:recovery_bootfs_labels",
    "dev:recovery_bootfs_labels",
  ]
}

group("system_image") {
  testonly = fuchsia_zbi_testonly
  deps = [
    "board:system_image_deps",
    "dev:system_image_deps",
    "product:system_image_deps",
  ]
}

group("zedboot_bootfs") {
  testonly = true
  deps = [
    "board:zedboot_bootfs_labels",
    "dev:zedboot_bootfs_labels",
  ]
}
