# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_fuchsia)

# Creates a tarball of unstripped binaries, structured according to the
# ".build_ids" convention used by the symbolizer and GNU GDB.
#
# Parameters:
#   deps: Must all be fuchsia_package() targets.
#   ids_txt: The "ids.txt" file which lists the relative paths to unstripped
#            executables and libraries, along with their build IDs.
#   archive_name: The path to the compressed tarball that will be generated.
template("symbol_archive") {
  assert(!is_debug)

  action(target_name) {
    _ids_txt = invoker.ids_txt
    _build_ids = invoker.archive_name

    script = "//build/config/fuchsia/build_symbol_archive.py"

    inputs = [ _ids_txt ]

    outputs = [ _build_ids ]

    # For each package in |deps| it is necessary to additionally depend upon
    # the corresponding archive-manifest target, which is what creates the
    # ids.txt file.
    deps = []
    foreach(package, invoker.deps) {
      deps += [
        package,
        package + "__archive-manifest",
      ]
    }

    args = [
      rebase_path(_ids_txt),
      "-o",
      rebase_path(_build_ids),
      "--fuchsia-build-id-dir",
      rebase_path("//third_party/fuchsia-sdk/sdk/.build-id"),
    ]
  }
}
