# 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/config.gni")
import("//build/dist/resource.gni")

group("appmgr_policy_eng") {
  deps = [
    ":appmgr_build_info_allowlist_eng",
    ":appmgr_component_event_provider_allowlist_eng",
    ":appmgr_debug_resource_allowlist_eng",
    ":appmgr_deprecated_ambient_replace_as_executable_allowlist_eng",
    ":appmgr_deprecated_misc_storage_allowlist_eng",
    ":appmgr_deprecated_shell_allowlist_eng",
    ":appmgr_durable_data_allowlist_eng",
    ":appmgr_factory_data_allowlist_eng",
    ":appmgr_hub_allowlist_eng",
    ":appmgr_hypervisor_resource_allowlist_eng",
    ":appmgr_info_resource_allowlist_eng",
    ":appmgr_ioport_resource_allowlist_eng",
    ":appmgr_irq_resource_allowlist_eng",
    ":appmgr_mmio_resource_allowlist_eng",
    ":appmgr_package_cache_allowlist_eng",
    ":appmgr_package_resolver_allowlist_eng",
    ":appmgr_pkgfs_versions_allowlist_eng",
    ":appmgr_root_job_allowlist_eng",
    ":appmgr_root_resource_allowlist_eng",
    ":appmgr_smc_resource_allowlist_eng",
    ":appmgr_system_updater_allowlist_eng",
    ":appmgr_vmex_resource_allowlist_eng",
    "//build/validate:non_production_tag",
  ]
}

config_data("appmgr_build_info_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "build_info_allowlist_eng.txt" ]
  outputs = [ "allowlist/build_info.txt" ]
}

config_data("appmgr_component_event_provider_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "component_event_provider_allowlist_eng.txt" ]
  outputs = [ "allowlist/component_event_provider.txt" ]
}

config_data("appmgr_deprecated_ambient_replace_as_executable_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "deprecated_ambient_replace_as_executable_allowlist_eng.txt" ]
  outputs = [ "allowlist/deprecated_ambient_replace_as_executable.txt" ]
}

config_data("appmgr_deprecated_misc_storage_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "deprecated_misc_storage_allowlist_eng.txt" ]
  outputs = [ "allowlist/deprecated_misc_storage.txt" ]
}

config_data("appmgr_deprecated_shell_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "deprecated_shell_allowlist_eng.txt" ]
  outputs = [ "allowlist/deprecated_shell.txt" ]
}

config_data("appmgr_durable_data_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "durable_data_allowlist_eng.txt" ]
  outputs = [ "allowlist/durable_data.txt" ]
}

config_data("appmgr_factory_data_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "factory_data_allowlist_eng.txt" ]
  outputs = [ "allowlist/factory_data.txt" ]
}

config_data("appmgr_hub_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "hub_allowlist_eng.txt" ]
  outputs = [ "allowlist/hub.txt" ]
}

config_data("appmgr_debug_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "debug_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/debug_resource.txt" ]
}

config_data("appmgr_hypervisor_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "hypervisor_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/hypervisor_resource.txt" ]
}

config_data("appmgr_info_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "info_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/info_resource.txt" ]
}

config_data("appmgr_ioport_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "ioport_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/ioport_resource.txt" ]
}

config_data("appmgr_irq_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "irq_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/irq_resource.txt" ]
}

config_data("appmgr_mmio_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "mmio_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/mmio_resource.txt" ]
}

config_data("appmgr_package_cache_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "package_cache_allowlist_eng.txt" ]
  outputs = [ "allowlist/package_cache.txt" ]
}

config_data("appmgr_package_resolver_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "package_resolver_allowlist_eng.txt" ]
  outputs = [ "allowlist/package_resolver.txt" ]
}

config_data("appmgr_pkgfs_versions_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "pkgfs_versions_allowlist_eng.txt" ]
  outputs = [ "allowlist/pkgfs_versions.txt" ]
}

config_data("appmgr_root_job_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "root_job_allowlist_eng.txt" ]
  outputs = [ "allowlist/root_job.txt" ]
}

config_data("appmgr_root_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "root_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/root_resource.txt" ]
}

config_data("appmgr_smc_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "smc_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/smc_resource.txt" ]
}

config_data("appmgr_system_updater_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "system_updater_allowlist_eng.txt" ]
  outputs = [ "allowlist/system_updater.txt" ]
}

config_data("appmgr_vmex_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "vmex_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/vmex_resource.txt" ]
}
