| Index: chrome/version.gni
|
| diff --git a/chrome/version.gni b/chrome/version.gni
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a29cb8d372ec3c18f2976864b4df4dcc3b20c8eb
|
| --- /dev/null
|
| +++ b/chrome/version.gni
|
| @@ -0,0 +1,153 @@
|
| +# Copyright 2014 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/chrome_build.gni")
|
| +
|
| +# Runs the version processing script over the given template file to produce
|
| +# an output file. This is used for generating various forms of files that
|
| +# incorporate the product name and version.
|
| +#
|
| +# Unlike GYP, this will actually compile the resulting file, so you don't need
|
| +# to add it separately to the sources, just depend on the target.
|
| +#
|
| +# This template automatically includes VERSION, LASTCHANGE, and BRANDING. It
|
| +# automatically uses the template file .
|
| +# GYP parameterizes this template file but all current invocations use this
|
| +# same one. If in the future we need to set it, this should be added as an
|
| +# optional argument.
|
| +#
|
| +# In GYP this is a rule that runs once per ".ver" file. In GN this just
|
| +# processes one file per invocation of the template so you may have to have
|
| +# multiple targets.
|
| +#
|
| +# Parameters:
|
| +# sources (optional):
|
| +# List of file names to read. When converting a GYP target, this should
|
| +# list the 'source' (see above) as well as any extra_variable_files.
|
| +#
|
| +# output:
|
| +# File name of file to write. In GYP this is unspecified and it will
|
| +# make up a file name for you based on the input name, and tack on
|
| +# "_version.rc" to the end. But in GN you need to specify the full name.
|
| +#
|
| +# template_file (optional):
|
| +# Template file to use (not a list). Most Windows uses for generating
|
| +# resources will want to specify the chrome_version_rc_template defined
|
| +# below.
|
| +#
|
| +# extra_args (optional):
|
| +# Extra arguments to pass to version.py. Any "-f <filename>" args should
|
| +# use sources instead.
|
| +#
|
| +# process_only (optional, defaults to false)
|
| +# Set to generate only one action that processes the version file and
|
| +# doesn't attempt to link the result into a source set. This is for if
|
| +# you are processing the version as data only.
|
| +#
|
| +# visibility (optional)
|
| +#
|
| +# Example:
|
| +# process_version("myversion") {
|
| +# sources = [ "myfile.h.in" ]
|
| +# output = "$target_gen_dir/myfile.h"
|
| +# extra_args = ["-e", "FOO=42"]
|
| +# extra_files = [ "foo/BRANDING" ]
|
| +# }
|
| +template("process_version") {
|
| + assert(defined(invoker.output), "Output must be defined for $target_name")
|
| +
|
| + process_only = defined(invoker.process_only) && invoker.process_only
|
| +
|
| + if (process_only) {
|
| + action_name = target_name
|
| + } else {
|
| + action_name = target_name + "_action"
|
| + source_set_name = target_name
|
| + }
|
| +
|
| + action(action_name) {
|
| + script = "//build/util/version.py"
|
| +
|
| + lastchange_path = "//build/util/LASTCHANGE"
|
| + version_path = "//chrome/VERSION"
|
| + if (is_chrome_branded) {
|
| + branding_path = "//chrome/app/theme/google_chrome/BRANDING"
|
| + } else {
|
| + branding_path = "//chrome/app/theme/chromium/BRANDING"
|
| + }
|
| +
|
| + inputs = [
|
| + version_path,
|
| + lastchange_path,
|
| + branding_path,
|
| + ]
|
| + if (defined(invoker.inputs)) {
|
| + inputs += invoker.inputs
|
| + }
|
| + if (defined(invoker.template_file)) {
|
| + inputs += [ invoker.template_file ]
|
| + }
|
| +
|
| + outputs = [
|
| + invoker.output,
|
| + ]
|
| +
|
| + args = []
|
| +
|
| + if (is_official_build) {
|
| + args += [ "--official" ]
|
| + }
|
| +
|
| + if (defined(invoker.sources)) {
|
| + inputs += invoker.sources
|
| + foreach(i, invoker.sources) {
|
| + args += [
|
| + "-f",
|
| + rebase_path(i, root_build_dir),
|
| + ]
|
| + }
|
| + }
|
| +
|
| + args += [
|
| + "-f",
|
| + rebase_path(version_path, root_build_dir),
|
| + "-f",
|
| + rebase_path(branding_path, root_build_dir),
|
| + "-f",
|
| + rebase_path(lastchange_path, root_build_dir),
|
| + ]
|
| + if (defined(invoker.extra_args)) {
|
| + args += invoker.extra_args
|
| + }
|
| + args += [
|
| + "-o",
|
| + rebase_path(invoker.output, root_build_dir),
|
| + ]
|
| + if (defined(invoker.template_file)) {
|
| + args += [ rebase_path(invoker.template_file, root_build_dir) ]
|
| + }
|
| +
|
| + forward_variables_from(invoker, [ "deps" ])
|
| +
|
| + if (process_only) {
|
| + # When processing only, visibility gets applied to this target.
|
| + forward_variables_from(invoker, [ "visibility" ])
|
| + } else {
|
| + # When linking the result, only the source set can depend on the action.
|
| + visibility = [ ":$source_set_name" ]
|
| + }
|
| + }
|
| +
|
| + if (!process_only) {
|
| + source_set(source_set_name) {
|
| + forward_variables_from(invoker, [ "visibility" ])
|
| + sources = get_target_outputs(":$action_name")
|
| + public_deps = [
|
| + ":$action_name",
|
| + ]
|
| + }
|
| + }
|
| +}
|
| +
|
| +chrome_version_rc_template = "//chrome/app/chrome_version.rc.version"
|
|
|