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

Side by Side Diff: build/secondary/tools/grit/grit_rule.gni

Issue 469893002: Allow the grit GN targets to specify an output name. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/BUILD.gn » ('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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 # Instantiate grit. This will produce a script target to run grit, and a 5 # Instantiate grit. This will produce a script target to run grit, and a
6 # static library that compiles the .cc files. 6 # static library that compiles the .cc files.
7 # 7 #
8 # Parameters 8 # Parameters
9 # 9 #
10 # source (required) 10 # source (required)
(...skipping 16 matching lines...) Expand all
27 # python tools/grit/grit_info.py --outputs . path/to/your.grd 27 # python tools/grit/grit_info.py --outputs . path/to/your.grd
28 # And strip the leading "./" from the output files. 28 # And strip the leading "./" from the output files.
29 # 29 #
30 # defines (optional) 30 # defines (optional)
31 # Extra defines to pass to grit (on top of the global grit_defines list). 31 # Extra defines to pass to grit (on top of the global grit_defines list).
32 # 32 #
33 # grit_flags (optional) 33 # grit_flags (optional)
34 # List of strings containing extra command-line flags to pass to Grit. 34 # List of strings containing extra command-line flags to pass to Grit.
35 # 35 #
36 # resource_ids (optional) 36 # resource_ids (optional)
37 # Path to a grit "firstidsfile". Default is 37 # Path to a grit "firstidsfile". Default is
38 # //tools/gritsettings/resource_ids. Set to "" to use the value specified in 38 # //tools/gritsettings/resource_ids. Set to "" to use the value specified
39 # the <grit> nodes of the processed files. 39 # in the <grit> nodes of the processed files.
40 # 40 #
41 # output_dir (optional) 41 # output_dir (optional)
42 # Directory for generated files. 42 # Directory for generated files. If you specify this, you will often
43 # want to specify output_name if the target name is not particularly
44 # unique, since this can cause files from multiple grit targets to
45 # overwrite each other.
46 #
47 # output_name (optiona)
48 # Provide an alternate base name for the generated files, like the .d
49 # files. Normally these are based on the target name and go in the
50 # output_dir, but if multiple targets with the same name end up in
51 # the same output_dir, they can collide.
43 # 52 #
44 # use_qualified_include (optional) 53 # use_qualified_include (optional)
45 # If set, output_dir is not added to include_dirs. 54 # If set, output_dir is not added to include_dirs.
46 # 55 #
47 # deps (optional) 56 # deps (optional)
48 # visibility (optional) 57 # visibility (optional)
49 # Normal meaning. 58 # Normal meaning.
50 # 59 #
51 # Example 60 # Example
52 # 61 #
53 # grit("my_resources") { 62 # grit("my_resources") {
54 # # Source and outputs are required. 63 # # Source and outputs are required.
55 # source = "myfile.grd" 64 # source = "myfile.grd"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 } else { 209 } else {
201 resource_ids = grit_resource_id_file 210 resource_ids = grit_resource_id_file
202 } 211 }
203 212
204 if (defined(invoker.output_dir)) { 213 if (defined(invoker.output_dir)) {
205 output_dir = invoker.output_dir 214 output_dir = invoker.output_dir
206 } else { 215 } else {
207 output_dir = target_gen_dir 216 output_dir = target_gen_dir
208 } 217 }
209 218
219 if (defined(invoker.output_name)) {
220 grit_output_name = invoker.output_name
221 } else {
222 grit_output_name = target_name
223 }
224
210 # These are all passed as arguments to the script so have to be relative to 225 # These are all passed as arguments to the script so have to be relative to
211 # the build directory. 226 # the build directory.
212 if (resource_ids != "") { 227 if (resource_ids != "") {
213 resource_ids = rebase_path(resource_ids, root_build_dir) 228 resource_ids = rebase_path(resource_ids, root_build_dir)
214 } 229 }
215 rebased_output_dir = rebase_path(output_dir, root_build_dir) 230 rebased_output_dir = rebase_path(output_dir, root_build_dir)
216 source_path = rebase_path(invoker.source, root_build_dir) 231 source_path = rebase_path(invoker.source, root_build_dir)
217 232
218 if (defined(invoker.grit_flags)) { 233 if (defined(invoker.grit_flags)) {
219 grit_flags = invoker.grit_flags 234 grit_flags = invoker.grit_flags
220 } else { 235 } else {
221 grit_flags = [] # These are optional so default to empty list. 236 grit_flags = [] # These are optional so default to empty list.
222 } 237 }
223 238
224 grit_inputs = [ invoker.source ] 239 grit_inputs = [ invoker.source ]
225 240
226 assert_files_flags = [] 241 assert_files_flags = []
227 242
228 # We want to make sure the declared outputs actually match what Grit is 243 # We want to make sure the declared outputs actually match what Grit is
229 # writing. We write the list to a file (some of the output lists are long 244 # writing. We write the list to a file (some of the output lists are long
230 # enough to not fit on a Windows command line) and ask Grit to verify those 245 # enough to not fit on a Windows command line) and ask Grit to verify those
231 # are the actual outputs at runtime. 246 # are the actual outputs at runtime.
232 asserted_list_file = "$target_out_dir/${target_name}_expected_outputs.txt" 247 asserted_list_file =
248 "$target_out_dir/${grit_output_name}_expected_outputs.txt"
233 write_file(asserted_list_file, 249 write_file(asserted_list_file,
234 rebase_path(invoker.outputs, root_build_dir, output_dir)) 250 rebase_path(invoker.outputs, root_build_dir, output_dir))
235 assert_files_flags += [ 251 assert_files_flags += [
236 "--assert-file-list=" + rebase_path(asserted_list_file, root_build_dir), 252 "--assert-file-list=" + rebase_path(asserted_list_file, root_build_dir),
237 ] 253 ]
238 grit_outputs = get_path_info( 254 grit_outputs = get_path_info(
239 rebase_path(invoker.outputs, ".", output_dir), 255 rebase_path(invoker.outputs, ".", output_dir),
240 "abspath") 256 "abspath")
241 257
242 # The config and the action below get this visibility son only the generated 258 # The config and the action below get this visibility son only the generated
Joao da Silva 2014/08/13 20:47:27 nit: son -> so
243 # source set can depend on them. The variable "target_name" will get 259 # source set can depend on them. The variable "target_name" will get
244 # overwritten inside the innter classes so we need to compute it here. 260 # overwritten inside the inner classes so we need to compute it here.
245 target_visibility = ":$target_name" 261 target_visibility = ":$target_name"
246 262
247 # The current grit setup makes an file in $output_dir/grit/foo.h that 263 # The current grit setup makes an file in $output_dir/grit/foo.h that
248 # the source code expects to include via "grit/foo.h". It would be nice to 264 # the source code expects to include via "grit/foo.h". It would be nice to
249 # change this to including absolute paths relative to the root gen directory 265 # change this to including absolute paths relative to the root gen directory
250 # (like "mycomponent/foo.h"). This config sets up the include path. 266 # (like "mycomponent/foo.h"). This config sets up the include path.
251 grit_config = target_name + "_grit_config" 267 grit_config = target_name + "_grit_config"
252 config(grit_config) { 268 config(grit_config) {
253 if (!defined(invoker.use_qualified_include) || 269 if (!defined(invoker.use_qualified_include) ||
254 !invoker.use_qualified_include) { 270 !invoker.use_qualified_include) {
255 include_dirs = [ output_dir ] 271 include_dirs = [ output_dir ]
256 } 272 }
257 visibility = target_visibility 273 visibility = target_visibility
258 } 274 }
259 275
260 grit_custom_target = target_name + "_grit" 276 grit_custom_target = target_name + "_grit"
261 action(grit_custom_target) { 277 action(grit_custom_target) {
262 script = "//tools/grit/grit.py" 278 script = "//tools/grit/grit.py"
263 inputs = grit_inputs 279 inputs = grit_inputs
264 outputs = grit_outputs 280 outputs = grit_outputs
265 depfile = "$output_dir/${target_name}.d" 281 depfile = "$output_dir/${grit_output_name}.d"
266 282
267 args = [ 283 args = [
268 "-i", source_path, "build", 284 "-i", source_path, "build",
269 "-f", resource_ids, 285 "-f", resource_ids,
270 "-o", rebased_output_dir, 286 "-o", rebased_output_dir,
271 "--depdir", ".", 287 "--depdir", ".",
272 "--depfile", rebase_path(depfile, root_build_dir), 288 "--depfile", rebase_path(depfile, root_build_dir),
273 ] + grit_defines 289 ] + grit_defines
274 290
275 # Add extra defines with -D flags. 291 # Add extra defines with -D flags.
(...skipping 21 matching lines...) Expand all
297 sources = grit_outputs 313 sources = grit_outputs
298 314
299 # Deps set on the template invocation will go on the grit script running 315 # Deps set on the template invocation will go on the grit script running
300 # target rather than this library. 316 # target rather than this library.
301 deps = [ ":$grit_custom_target" ] 317 deps = [ ":$grit_custom_target" ]
302 direct_dependent_configs = [ ":$grit_config" ] 318 direct_dependent_configs = [ ":$grit_config" ]
303 319
304 if (defined(invoker.visibility)) { 320 if (defined(invoker.visibility)) {
305 visibility = invoker.visibility 321 visibility = invoker.visibility
306 } 322 }
307 if (defined(invoker.output_name)) { 323 output_name = grit_output_name
308 output_name = invoker.output_name
309 }
310 } 324 }
311 } 325 }
OLDNEW
« no previous file with comments | « no previous file | chrome/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698