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

# Zircon manifests
#
# This file contains references to binaries either built by the Zircon GN build
# (`legacy-foo` targets) or migrated from that build into the Fuchsia GN build
# (`migrated-foo` targets).

import("//build/dist/fini_manifest.gni")
import("aggregate_manifest.gni")
import("artifacts.gni")
import("zircon_artifact.gni")

foreach(artifact, zircon_artifacts) {
  zircon_artifact(artifact.name) {
    contents = artifact.lines

    deps = artifact.deps
  }
}

group("images") {
  deps = [ ":legacy-aux" ]
}

###############################################################################
# Legacy manifests
#
# These manifests mirror the manifests generated by the ZN build.
#
# Edit these targets if:
#  - a new binary was recently added to the ZN build and needs to be referred
#    to in the GN build - the edit is an addition;
#  - a binary is being migrated from the ZN build into the GN build - the edit
#    should be a removal.

# IMPORTANT NOTE: this target is now frozen, please do not add any more
# dependencies to it.
aggregate_manifest("legacy-aux") {
  deps = []

  reference = "legacy-aux-$target_cpu"
}
