Index: build/config/ios/rules.gni |
diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni |
index 3e2b4f4ce15a664e5fe3277f9cca31f2f91d2d23..4181fc6b146734c1bd79a6967334c4f26465abaf 100644 |
--- a/build/config/ios/rules.gni |
+++ b/build/config/ios/rules.gni |
@@ -9,8 +9,13 @@ import("//build/config/mac/base_rules.gni") |
# Arguments |
# |
# info_plist: |
-# string, the path to an plist file that will be included in the final |
-# Info.plist generated. |
+# (optional) string, path to the Info.plist file that will be used for |
+# the bundle. |
+# |
+# info_plist_target: |
+# (optional) string, if the info_plist is generated from an action, |
+# rather than a regular source file, specify the target name in lieu |
+# of info_plist. The two arguments are mutually exclusive. |
# |
# executable_name: |
# string, name of the generated target used for the product |
@@ -20,6 +25,17 @@ import("//build/config/mac/base_rules.gni") |
# (optional) string array, 'key=value' pairs for extra fields which are |
# specified in a source Info.plist template. |
template("ios_info_plist") { |
+ assert(defined(invoker.info_plist) != defined(invoker.info_plist_target), |
+ "Only one of info_plist or info_plist_target may be specified in " + |
+ target_name) |
+ |
+ if (defined(invoker.info_plist)) { |
+ _info_plist = invoker.info_plist |
+ } else { |
+ _info_plist_target_output = get_target_outputs(invoker.info_plist_target) |
+ _info_plist = _info_plist_target_output[0] |
+ } |
+ |
info_plist(target_name) { |
format = "binary1" |
extra_substitutions = [] |
@@ -37,8 +53,13 @@ template("ios_info_plist") { |
] |
plist_templates = [ |
"//build/config/ios/BuildInfo.plist", |
- invoker.info_plist, |
+ _info_plist, |
] |
+ if (defined(invoker.info_plist_target)) { |
+ deps = [ |
+ invoker.info_plist_target, |
+ ] |
+ } |
forward_variables_from(invoker, |
[ |
"executable_name", |
@@ -71,8 +92,13 @@ template("ios_info_plist") { |
# the application Info.plist |
# |
# info_plist: |
-# path to the template to use to generate the application Info.plist |
-# by performing variable substitutions. |
+# (optional) string, path to the Info.plist file that will be used for |
+# the bundle. |
+# |
+# info_plist_target: |
+# (optional) string, if the info_plist is generated from an action, |
+# rather than a regular source file, specify the target name in lieu |
+# of info_plist. The two arguments are mutually exclusive. |
# |
# bundle_extension: |
# (optional) bundle extension including the dot, default to ".app". |
@@ -84,9 +110,6 @@ template("ios_info_plist") { |
# |
# For more information, see "gn help executable". |
template("ios_app_bundle") { |
- assert(defined(invoker.info_plist), |
- "info_plist must be specified for target $target_name") |
- |
_output_name = target_name |
_target_name = target_name |
if (defined(invoker.output_name)) { |
@@ -102,6 +125,7 @@ template("ios_app_bundle") { |
[ |
"extra_substitutions", |
"info_plist", |
+ "info_plist_target", |
]) |
} |
@@ -131,6 +155,7 @@ template("ios_app_bundle") { |
"data_deps", |
"entitlements_path", |
"info_plist", |
+ "info_plist_target", |
"output_name", |
"product_type", |
"visibility", |
@@ -230,8 +255,13 @@ template("ios_app_bundle") { |
# the application Info.plist |
# |
# info_plist: |
-# path to the template to use to generate the application Info.plist |
-# by performing variable substitutions. |
+# (optional) string, path to the Info.plist file that will be used for |
+# the bundle. |
+# |
+# info_plist_target: |
+# (optional) string, if the info_plist is generated from an action, |
+# rather than a regular source file, specify the target name in lieu |
+# of info_plist. The two arguments are mutually exclusive. |
# |
# For more information, see "gn help executable". |
template("ios_appex_bundle") { |