# Copyright 2015 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")

# Generate ResourceRewriter.java from Android Libraries according the dep
# graph.
# Argument:
#   deps
#     The same deps of target that uses the generated ResourceRewriter.
#   package_name
#     The package name of ResourceRewriter.java.
#
# This target generates a single srcjar containing generated
# ResourceRewrite.java which will list the R classes generated by all the
# Android libraries reachabled from the target specified in deps. Add this
# target to srcjar_deps of android_library will call  ResourceRewriter.
#
template("generate_resource_rewriter") {
  set_sources_assignment_filter([])
  assert(defined(invoker.package_name))

  _final_target_name = target_name
  _build_config = "$target_gen_dir/${target_name}.build_config"
  _build_config_target_name = "${target_name}__build_config"
  _srcjar = "$target_gen_dir/${target_name}.srcjar"
  write_build_config(_build_config_target_name) {
    possible_config_deps = invoker.deps
    type = "resource_rewriter"
    build_config = _build_config
  }

  action(_final_target_name) {
    forward_variables_from(invoker, [ "visibility" ])
    inputs = [
      _build_config,
    ]
    deps = invoker.deps + [ ":${_build_config_target_name}" ]
    script = "//build/android/gyp/generate_resource_rewriter.py"

    _rebased_build_config = rebase_path(_build_config)
    args = [
      "--package-name",
      invoker.package_name,
      "--dep-packages",
      "@FileArg($_rebased_build_config:resources:extra_package_names)",
      "--srcjar",
      rebase_path(_srcjar),
    ]
    outputs = [
      _srcjar,
    ]
  }
}