# 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/minimal.gni")

include_shell_commands_package = true

product_system_image_deps = [
  "//src/connectivity/bluetooth:core-system",

  # Test drivers will only be loaded as tests require. They should be removed from production
  # products that have limited storage.
  # TODO(fxbug.dev/3150): Move to a regular package.
  "//src/graphics/lib/magma/tests:test-drivers",
]

# core and above are larger products, make sure that we're not using the "low"
# timeout
product_bootfs_labels += [ "//products/kernel_cmdline:oom.reboot-timeout--low" ]
product_bootfs_labels -= [ "//products/kernel_cmdline:oom.reboot-timeout--low" ]

core_realm_package_name = "core"
core_realm_shards += [
  "//src/connectivity/wlan/wlancfg:wlancfg-core-shard",
  "//src/connectivity/wlan/wlandevicemonitor:wlandevicemonitor-core-shard",
  "//src/connectivity/wlan/wlanstack:wlanstack-core-shard",
  "//src/developer/remote-control:laboratory-core-shard",
  "//src/devices/bin/driver_playground:driver-playground-core-shard",
  "//src/developer/sshd-host:core_shard",
  "//src/media/audio/audio_core/v2:core_shard",
  "//src/settings/service:setui_service_core_shard",
  "//src/sys/pkg/bin/system-update-checker:system-update-checker-core-shard",
  "//src/sys/pkg/bin/system-updater:system-updater-core-shard",

  # TODO(fxbug.dev/80375): only include in eng builds
  "//src/sys/test_manager:test_manager_core_shard",
]
core_realm_restrict_persistent_storage = false

legacy_base_package_labels += [
  "//src/developer/sshd-host",
  "//src/developer/sshd-host:config",

  # TODO(https://fxbug.dev/85742): Remove this target once out-of-tree
  # integration tests inject components from network-legacy-deprecated.
  "//src/connectivity/network:integration-test-deps",
  "//src/connectivity/bluetooth:core",
  "//src/connectivity/wlan:packages",
  "//src/devices/sysmem/bin/sysmem_connector",
  "//src/media/audio/bundles:audio_config",
  "//src/settings/service:setui_service",
]

# Tools to control the pkg subsystem are in the base package set by default
# so the software delivery system can be debugged and reconfigured without
# access to the full universe package set.
# Product configurations that lack an accessible shell environment should
# remove these tools from the base package set.
legacy_base_package_labels += [ "//src/sys/pkg:tools" ]

# cargo-gnaw is currently part of all build graphs, but it should only
# built by fx tooling
legacy_base_package_labels += [ "//tools/cargo-gnaw:install-cargo-gnaw" ]

legacy_cache_package_labels += [ "//src/developer/ffx:runtime" ]

product_system_image_deps += [ "//bundles:tools-system" ]
legacy_universe_package_labels += [
  "//bundles:tools",
  "//src/devices/bin/driver_playground:pkg",
  "//src/testing/metrics-logger",
]

# Set the default pkgfs allowlist to use for all core-based products to the
# "eng" allowlist.
product_system_image_deps +=
    [ "//src/security/policy:pkgfs_non_static_pkgs_allowlist_eng" ]

# Use the product assembly config file to specify the product configuration.
#
# This should be overridden by products which inherit from core.
fuchsia_product_assembly_config_file =
    "//build/assembly/empty_product_config.json"
