# 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("//products/terminal.gni")

base_package_labels -= [ "//garnet/bin/terminal:tiles_with_terminal_config" ]

base_package_labels += [
  "//src/modular/bundles:framework_experimental",
  "//src/experiences/bundles:ermine",
  "//src/experiences/bin/term",
]

cache_package_labels += [
  "//src/experiences/bin/simple_browser",
  "//src/media/audio/audio",
  "//src/media/audio/audio_core",
]

universe_package_labels += [
  "//peridot/packages/prod:cloud_provider_firestore",
  "//src/modular/bundles:tools",
]

kernel_cmdline_args += [
  # hide the virtual console on boot
  "virtcon.hide-on-boot",
]

# End to end (E2E) product test runtime dependencies. Must be added to cache,
# not universe, so the test can run on bots where there is no package server.
#
# TODO(IN-1097): Support a package server on bots so this can be added to
# universe like the tests.
cache_package_labels += [ "//src/tests/end_to_end/bundles:end_to_end_deps" ]

# TODO(IN-1097): Support a package server on bots so this is no longer needed (see the TODO on
# end_to_end_deps_too_big_for_astro_e2e).  For now we include this for workstation, to make sure
# these deps continue to build in the meantime.
cache_package_labels += [ "//src/tests/end_to_end/bundles:end_to_end_deps_too_big_for_astro_e2e"]

# E2E Product Tests. They don't produce fuchsia packages, but host executables,
# and must just be included somewhere in the build configuration of the product.
universe_package_labels += [
  "//src/experiences/tests/e2e:test",
  "//src/tests/end_to_end/voila_hello_world:test",
]
