Index: build/util/process_version.gni |
diff --git a/chrome/version.gni b/build/util/process_version.gni |
similarity index 62% |
rename from chrome/version.gni |
rename to build/util/process_version.gni |
index a29cb8d372ec3c18f2976864b4df4dcc3b20c8eb..8c6477d04c166446a3d7128dc4ff6eecf54b35b5 100644 |
--- a/chrome/version.gni |
+++ b/build/util/process_version.gni |
@@ -11,12 +11,6 @@ import("//build/config/chrome_build.gni") |
# 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. |
@@ -25,6 +19,7 @@ import("//build/config/chrome_build.gni") |
# 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. |
+# The files will be passed to version.py in the order specified here. |
# |
# output: |
# File name of file to write. In GYP this is unspecified and it will |
@@ -33,8 +28,7 @@ import("//build/config/chrome_build.gni") |
# |
# 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. |
+# resources will want to use process_version_rc_template() instead. |
# |
# extra_args (optional): |
# Extra arguments to pass to version.py. Any "-f <filename>" args should |
@@ -49,10 +43,12 @@ import("//build/config/chrome_build.gni") |
# |
# Example: |
# process_version("myversion") { |
-# sources = [ "myfile.h.in" ] |
+# sources = [ |
+# "//chrome/VERSION" |
+# "myfile.h.in" |
+# ] |
# output = "$target_gen_dir/myfile.h" |
-# extra_args = ["-e", "FOO=42"] |
-# extra_files = [ "foo/BRANDING" ] |
+# extra_args = [ "-e", "FOO=42" ] |
# } |
template("process_version") { |
assert(defined(invoker.output), "Output must be defined for $target_name") |
@@ -69,19 +65,7 @@ template("process_version") { |
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, |
- ] |
+ inputs = [] |
if (defined(invoker.inputs)) { |
inputs += invoker.inputs |
} |
@@ -109,14 +93,6 @@ template("process_version") { |
} |
} |
- 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 |
} |
@@ -150,4 +126,58 @@ template("process_version") { |
} |
} |
-chrome_version_rc_template = "//chrome/app/chrome_version.rc.version" |
+# 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" |
brettw
2016/09/06 22:52:31
Since this depends on files from //chrome, it shou
|
+ } |
+ _sources = [ |
+ "//build/util/LASTCHANGE", |
+ "//chrome/VERSION", |
+ branding_file_path, |
+ ] |
+ if (defined(invoker.sources)) { |
+ _sources += invoker.sources |
+ } |
+ |
+ process_version(target_name) { |
+ template_file = _template_file |
+ sources = _sources |
+ forward_variables_from(invoker, |
+ "*", |
+ [ |
+ "sources", |
+ "template_file", |
+ ]) |
+ } |
+} |