# 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:
# //build/images/bringup/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.

# bringup products have their own assemble_system() instantiation.
use_bringup_assembly = true
bootfs_only = true

fuchsia_product_assembly_config_label = "//products/bringup:bringup_with_tests"
zedboot_product_assembly_config_label = "//products/zedboot"
