# 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.

#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
# Every new addition to this gni file is an instance of tech-debt that must be
# cleaned up to have a proper platform+product interface. If you need to add a
# specific artifact to the core product, please consider adding it to:
#
# //products/core/BUILD.gn
#
# If the artifact is incapable of being put inside that location, reach out to
# the assembly team for guidance: //src/lib/assembly/OWNERS. The assembly team
# may allow an exception so that artifacts can be added directly to this file,
# but each entry needs a ticket assigned to the assembly team with an agreed
# upon solution for how to address the tech-debt.

include_shell_commands_package = true

product_bootfs_labels = []
legacy_base_package_labels = []

discoverable_package_labels = [ "//bundles/tools" ]

# Use the product assembly config target to specify the product configuration.
fuchsia_product_assembly_config_label = "//products/core:core_with_netstack3"
zedboot_product_assembly_config_label = "//products/zedboot"
