# Copyright 2018 The Chromium 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/android/rules.gni")

template("unwind_table_asset") {
  # Note: This file name is used in multiple monochrome build scripts.
  _asset_path = "${target_gen_dir}/${target_name}/unwind_cfi_32"
  _unwind_action = "${target_name}__extract"

  action(_unwind_action) {
    forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)

    _root_dir = "$root_out_dir"
    if (defined(android_secondary_abi_cpu)) {
      _root_dir = get_label_info(":foo($android_secondary_abi_toolchain)",
                                 "root_out_dir")
    }

    script = "//build/android/gyp/extract_unwind_tables.py"
    outputs = [ _asset_path ]
    inputs = [ "${_root_dir}/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension" ]

    args = [
      "--input_path",
      rebase_path(
          "${_root_dir}/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension",
          root_build_dir),
      "--output_path",
      rebase_path(_asset_path, root_build_dir),
      "--dump_syms_path",
      rebase_path("$root_out_dir/dump_syms", root_build_dir),
    ]
    deps = invoker.deps
    deps += [ "//third_party/breakpad:dump_syms" ]
  }
  android_assets(target_name) {
    forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
    sources = [ _asset_path ]
    disable_compression = true
    deps = [ ":$_unwind_action" ]
  }
}
