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

import("//build/config/chrome_build.gni")
import("//build/util/lastchange.gni")
import("//build/util/process_version.gni")

# This is a wrapper around process_version() that eases the task of processing
# a .rc.version file (used especially on Windows).
#
# This template automatically includes VERSION, LASTCHANGE and BRANDING, and
# any additional source files are passed after those (so their values can
# override the ones specified by those 3 files).
#
# Parameters:
#   sources (optional):
#     List of files with value definitions that will be passed in addition to
#     VERSION, LASTCHANGE and BRANDING.
#
#   template_file (optional):
#     Template file to use (not a list). If not specified, a default value,
#     //chrome/app/chrome_version.rc.version will be used.
#
# This template forwards all other parameters directly to process_version().
#
# Examples:
#   process_version_rc_template("my_exe_version") {
#     output = "$target_gen_dir/my_exe_version.rc"
#     sources = [ "frob/my_exe.ver" ]
#     extra_args = [ "-e", "FOO=42" ]
#   }
#
#   process_version_rc_template("my_dll_version") {
#     output = "$target_gen_dir/my_dll_version.rc"
#     template_file = [ "//foo/bar/my_dll_version.rc.version" ]
#   }
template("process_version_rc_template") {
  if (defined(invoker.template_file)) {
    _template_file = invoker.template_file
  } else {
    _template_file = "//chrome/app/chrome_version.rc.version"
  }
  _sources = [
    "//chrome/VERSION",
    branding_file_path,
    lastchange_file,
  ]
  if (defined(invoker.sources)) {
    _sources += invoker.sources
  }

  process_version(target_name) {
    template_file = _template_file
    sources = _sources
    forward_variables_from(invoker,
                           "*",
                           [
                             "sources",
                             "template_file",
                           ])
  }
}
