Index: build/grit_action.gypi |
diff --git a/build/grit_action.gypi b/build/grit_action.gypi |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b24f0f8d715cd0333db9b9cb9e16a7635657878a |
--- /dev/null |
+++ b/build/grit_action.gypi |
@@ -0,0 +1,71 @@ |
+# Copyright (c) 2011 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. |
+ |
+# This file is meant to be included into an action to invoke grit in a |
+# consistent manner. To use this the following variables need to be |
+# defined: |
+# grit_grd_file: string: grd file path |
+# grit_out_dir: string: the output directory path |
+ |
+# It would be really nice to do this with a rule instead of actions, but it |
+# would need to determine inputs and outputs via grit_info on a per-file |
+# basis. GYP rules don't currently support that. They could be extended to |
+# do this, but then every generator would need to be updated to handle this. |
+ |
+{ |
+ 'variables': { |
+ 'grit_cmd': ['python', '<(DEPTH)/tools/grit/grit.py'], |
+ 'grit_resource_ids%': '<(DEPTH)/tools/gritsettings/resource_ids', |
+ # This makes it possible to add more defines in specific targets, |
+ # instead of build/common.gypi . |
+ 'grit_additional_defines%': [], |
+ 'grit_rc_header_format%': [], |
+ 'grit_whitelist%': '', |
+ |
+ 'conditions': [ |
+ # These scripts can skip writing generated files if they are identical |
+ # to the already existing files, which avoids further build steps, like |
+ # recompilation. However, a dependency (earlier build step) having a |
+ # newer timestamp than an output (later build step) confuses some build |
+ # systems, so only use this on ninja, which explicitly supports this use |
+ # case (gyp turns all actions into ninja restat rules). |
+ ['"<(GENERATOR)"=="ninja"', { |
+ 'write_only_new': '1', |
+ }, { |
+ 'write_only_new': '0', |
+ }], |
+ ], |
+ }, |
+ 'conditions': [ |
+ ['"<(grit_whitelist)"==""', { |
+ 'variables': { |
+ 'grit_whitelist_flag': [], |
+ } |
+ }, { |
+ 'variables': { |
+ 'grit_whitelist_flag': ['-w', '<(grit_whitelist)'], |
+ } |
+ }] |
+ ], |
+ 'inputs': [ |
+ '<!@pymod_do_main(grit_info <@(grit_defines) <@(grit_additional_defines) ' |
+ '<@(grit_whitelist_flag) --inputs <(grit_grd_file) ' |
+ '-f "<(grit_resource_ids)")', |
+ ], |
+ 'outputs': [ |
+ '<!@pymod_do_main(grit_info <@(grit_defines) <@(grit_additional_defines) ' |
+ '<@(grit_whitelist_flag) --outputs \'<(grit_out_dir)\' ' |
+ '<(grit_grd_file) -f "<(grit_resource_ids)")', |
+ ], |
+ 'action': ['<@(grit_cmd)', |
+ '-i', '<(grit_grd_file)', 'build', |
+ '-f', '<(grit_resource_ids)', |
+ '-o', '<(grit_out_dir)', |
+ '--write-only-new=<(write_only_new)', |
+ '<@(grit_defines)', |
+ '<@(grit_whitelist_flag)', |
+ '<@(grit_additional_defines)', |
+ '<@(grit_rc_header_format)'], |
+ 'message': 'Generating resources from <(grit_grd_file)', |
+} |