Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: build/config/ios/rules.gni

Issue 2033403003: [iOS/GN] Add support for info_plist_target to ios_info_plist. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tweak_info_plist
Patch Set: Rebase on origin/master Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | build/config/mac/rules.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/config/mac/base_rules.gni") 5 import("//build/config/mac/base_rules.gni")
6 6
7 # Generates Info.plist files for Mac apps and frameworks. 7 # Generates Info.plist files for Mac apps and frameworks.
8 # 8 #
9 # Arguments 9 # Arguments
10 # 10 #
11 # info_plist: 11 # info_plist:
12 # string, the path to an plist file that will be included in the final 12 # (optional) string, path to the Info.plist file that will be used for
13 # Info.plist generated. 13 # the bundle.
14 #
15 # info_plist_target:
16 # (optional) string, if the info_plist is generated from an action,
17 # rather than a regular source file, specify the target name in lieu
18 # of info_plist. The two arguments are mutually exclusive.
14 # 19 #
15 # executable_name: 20 # executable_name:
16 # string, name of the generated target used for the product 21 # string, name of the generated target used for the product
17 # and executable name as specified in the output Info.plist. 22 # and executable name as specified in the output Info.plist.
18 # 23 #
19 # extra_substitutions: 24 # extra_substitutions:
20 # (optional) string array, 'key=value' pairs for extra fields which are 25 # (optional) string array, 'key=value' pairs for extra fields which are
21 # specified in a source Info.plist template. 26 # specified in a source Info.plist template.
22 template("ios_info_plist") { 27 template("ios_info_plist") {
28 assert(defined(invoker.info_plist) != defined(invoker.info_plist_target),
29 "Only one of info_plist or info_plist_target may be specified in " +
30 target_name)
31
32 if (defined(invoker.info_plist)) {
33 _info_plist = invoker.info_plist
34 } else {
35 _info_plist_target_output = get_target_outputs(invoker.info_plist_target)
36 _info_plist = _info_plist_target_output[0]
37 }
38
23 info_plist(target_name) { 39 info_plist(target_name) {
24 format = "binary1" 40 format = "binary1"
25 extra_substitutions = [] 41 extra_substitutions = []
26 if (defined(invoker.extra_substitutions)) { 42 if (defined(invoker.extra_substitutions)) {
27 extra_substitutions = invoker.extra_substitutions 43 extra_substitutions = invoker.extra_substitutions
28 } 44 }
29 extra_substitutions += [ 45 extra_substitutions += [
30 "IOS_DEPLOYMENT_TARGET=$ios_deployment_target", 46 "IOS_DEPLOYMENT_TARGET=$ios_deployment_target",
31 "IOS_PLATFORM_BUILD=$ios_platform_build", 47 "IOS_PLATFORM_BUILD=$ios_platform_build",
32 "IOS_PLATFORM_NAME=$ios_sdk_name", 48 "IOS_PLATFORM_NAME=$ios_sdk_name",
33 "IOS_PLATFORM_VERSION=$ios_sdk_version", 49 "IOS_PLATFORM_VERSION=$ios_sdk_version",
34 "IOS_SDK_BUILD=$ios_sdk_build", 50 "IOS_SDK_BUILD=$ios_sdk_build",
35 "IOS_SDK_NAME=$ios_sdk_name$ios_sdk_version", 51 "IOS_SDK_NAME=$ios_sdk_name$ios_sdk_version",
36 "IOS_SUPPORTED_PLATFORM=$ios_sdk_platform", 52 "IOS_SUPPORTED_PLATFORM=$ios_sdk_platform",
37 ] 53 ]
38 plist_templates = [ 54 plist_templates = [
39 "//build/config/ios/BuildInfo.plist", 55 "//build/config/ios/BuildInfo.plist",
40 invoker.info_plist, 56 _info_plist,
41 ] 57 ]
58 if (defined(invoker.info_plist_target)) {
59 deps = [
60 invoker.info_plist_target,
61 ]
62 }
42 forward_variables_from(invoker, 63 forward_variables_from(invoker,
43 [ 64 [
44 "executable_name", 65 "executable_name",
45 "output_name", 66 "output_name",
46 "visibility", 67 "visibility",
47 ]) 68 ])
48 } 69 }
49 } 70 }
50 71
51 # TODO(crbug.com/297668): refactor this template to extract common behaviour 72 # TODO(crbug.com/297668): refactor this template to extract common behaviour
(...skipping 12 matching lines...) Expand all
64 # output_name: 85 # output_name:
65 # (optional) string, name of the generated application, if omitted, 86 # (optional) string, name of the generated application, if omitted,
66 # defaults to the target_name. 87 # defaults to the target_name.
67 # 88 #
68 # extra_substitutions: 89 # extra_substitutions:
69 # (optional) list of string in "key=value" format, each value will 90 # (optional) list of string in "key=value" format, each value will
70 # be used as an additional variable substitution rule when generating 91 # be used as an additional variable substitution rule when generating
71 # the application Info.plist 92 # the application Info.plist
72 # 93 #
73 # info_plist: 94 # info_plist:
74 # path to the template to use to generate the application Info.plist 95 # (optional) string, path to the Info.plist file that will be used for
75 # by performing variable substitutions. 96 # the bundle.
97 #
98 # info_plist_target:
99 # (optional) string, if the info_plist is generated from an action,
100 # rather than a regular source file, specify the target name in lieu
101 # of info_plist. The two arguments are mutually exclusive.
76 # 102 #
77 # bundle_extension: 103 # bundle_extension:
78 # (optional) bundle extension including the dot, default to ".app". 104 # (optional) bundle extension including the dot, default to ".app".
79 # 105 #
80 # product_type 106 # product_type
81 # (optional) string, product type for the generated Xcode project, 107 # (optional) string, product type for the generated Xcode project,
82 # default to "com.apple.product-type.application". Should generally 108 # default to "com.apple.product-type.application". Should generally
83 # not be overridden. 109 # not be overridden.
84 # 110 #
85 # For more information, see "gn help executable". 111 # For more information, see "gn help executable".
86 template("ios_app_bundle") { 112 template("ios_app_bundle") {
87 assert(defined(invoker.info_plist),
88 "info_plist must be specified for target $target_name")
89
90 _output_name = target_name 113 _output_name = target_name
91 _target_name = target_name 114 _target_name = target_name
92 if (defined(invoker.output_name)) { 115 if (defined(invoker.output_name)) {
93 _output_name = invoker.output_name 116 _output_name = invoker.output_name
94 } 117 }
95 118
96 _generate_info_plist = target_name + "_generate_info_plist" 119 _generate_info_plist = target_name + "_generate_info_plist"
97 _bundle_data_info_plist = target_name + "_bundle_data_info_plist" 120 _bundle_data_info_plist = target_name + "_bundle_data_info_plist"
98 121
99 ios_info_plist(_generate_info_plist) { 122 ios_info_plist(_generate_info_plist) {
100 executable_name = _output_name 123 executable_name = _output_name
101 forward_variables_from(invoker, 124 forward_variables_from(invoker,
102 [ 125 [
103 "extra_substitutions", 126 "extra_substitutions",
104 "info_plist", 127 "info_plist",
128 "info_plist_target",
105 ]) 129 ])
106 } 130 }
107 131
108 bundle_data(_bundle_data_info_plist) { 132 bundle_data(_bundle_data_info_plist) {
109 forward_variables_from(invoker, [ "testonly" ]) 133 forward_variables_from(invoker, [ "testonly" ])
110 visibility = [ ":$_target_name" ] 134 visibility = [ ":$_target_name" ]
111 sources = get_target_outputs(":$_generate_info_plist") 135 sources = get_target_outputs(":$_generate_info_plist")
112 outputs = [ 136 outputs = [
113 "{{bundle_root_dir}}/Info.plist", 137 "{{bundle_root_dir}}/Info.plist",
114 ] 138 ]
115 public_deps = [ 139 public_deps = [
116 ":$_generate_info_plist", 140 ":$_generate_info_plist",
117 ] 141 ]
118 } 142 }
119 143
120 _generate_executable = target_name + "_generate_executable" 144 _generate_executable = target_name + "_generate_executable"
121 _bundle_data_executable = target_name + "_bundle_data_executable" 145 _bundle_data_executable = target_name + "_bundle_data_executable"
122 146
123 executable(_generate_executable) { 147 executable(_generate_executable) {
124 visibility = [ ":$_bundle_data_executable" ] 148 visibility = [ ":$_bundle_data_executable" ]
125 forward_variables_from(invoker, 149 forward_variables_from(invoker,
126 "*", 150 "*",
127 [ 151 [
128 "assert_no_deps", 152 "assert_no_deps",
129 "bundle_extension", 153 "bundle_extension",
130 "code_signing_identity", 154 "code_signing_identity",
131 "data_deps", 155 "data_deps",
132 "entitlements_path", 156 "entitlements_path",
133 "info_plist", 157 "info_plist",
158 "info_plist_target",
134 "output_name", 159 "output_name",
135 "product_type", 160 "product_type",
136 "visibility", 161 "visibility",
137 ]) 162 ])
138 163
139 output_name = rebase_path("$target_gen_dir/$_output_name", root_out_dir) 164 output_name = rebase_path("$target_gen_dir/$_output_name", root_out_dir)
140 if (!defined(libs)) { 165 if (!defined(libs)) {
141 libs = [] 166 libs = []
142 } 167 }
143 libs += [ "UIKit.framework" ] 168 libs += [ "UIKit.framework" ]
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 # output_name: 248 # output_name:
224 # (optional) string, name of the generated application, if omitted, 249 # (optional) string, name of the generated application, if omitted,
225 # defaults to the target_name. 250 # defaults to the target_name.
226 # 251 #
227 # extra_substitutions: 252 # extra_substitutions:
228 # (optional) list of string in "key=value" format, each value will 253 # (optional) list of string in "key=value" format, each value will
229 # be used as an additional variable substitution rule when generating 254 # be used as an additional variable substitution rule when generating
230 # the application Info.plist 255 # the application Info.plist
231 # 256 #
232 # info_plist: 257 # info_plist:
233 # path to the template to use to generate the application Info.plist 258 # (optional) string, path to the Info.plist file that will be used for
234 # by performing variable substitutions. 259 # the bundle.
260 #
261 # info_plist_target:
262 # (optional) string, if the info_plist is generated from an action,
263 # rather than a regular source file, specify the target name in lieu
264 # of info_plist. The two arguments are mutually exclusive.
235 # 265 #
236 # For more information, see "gn help executable". 266 # For more information, see "gn help executable".
237 template("ios_appex_bundle") { 267 template("ios_appex_bundle") {
238 ios_app_bundle(target_name) { 268 ios_app_bundle(target_name) {
239 forward_variables_from(invoker, 269 forward_variables_from(invoker,
240 "*", 270 "*",
241 [ 271 [
242 "bundle_extension", 272 "bundle_extension",
243 "product_type", 273 "product_type",
244 ]) 274 ])
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 [ 527 [
498 "testonly", 528 "testonly",
499 "visibility", 529 "visibility",
500 ]) 530 ])
501 public_deps = [ 531 public_deps = [
502 ":$_framework_target+link", 532 ":$_framework_target+link",
503 ] 533 ]
504 } 534 }
505 } 535 }
506 } 536 }
OLDNEW
« no previous file with comments | « no previous file | build/config/mac/rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698