OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 '''The 'grit build' tool along with integration for this tool with the | 6 '''The 'grit build' tool along with integration for this tool with the |
7 SCons build system. | 7 SCons build system. |
8 ''' | 8 ''' |
9 | 9 |
10 import filecmp | 10 import filecmp |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
48 module = sys.modules[modulename] | 48 module = sys.modules[modulename] |
49 try: | 49 try: |
50 return module.Format | 50 return module.Format |
51 except AttributeError: | 51 except AttributeError: |
52 return module.GetFormatter(type) | 52 return module.GetFormatter(type) |
53 | 53 |
54 | 54 |
55 class RcBuilder(interface.Tool): | 55 class RcBuilder(interface.Tool): |
56 '''A tool that builds RC files and resource header files for compilation. | 56 '''A tool that builds RC files and resource header files for compilation. |
57 | 57 |
58 Usage: grit build [-o OUTPUTDIR] [-D NAME[=VAL]]* | 58 Usage: grit build [-o OUTPUTDIR] [-D NAME[=VAL]]* |
newt (away)
2014/10/30 20:16:20
update this usage comment as well
lliabraa
2014/10/31 11:33:13
Done.
| |
59 | 59 |
60 All output options for this tool are specified in the input file (see | 60 All output options for this tool are specified in the input file (see |
61 'grit help' for details on how to specify the input file - it is a global | 61 'grit help' for details on how to specify the input file - it is a global |
62 option). | 62 option). |
63 | 63 |
64 Options: | 64 Options: |
65 | 65 |
66 -a FILE Assert that the given file is an output. There can be | 66 -a FILE Assert that the given file is an output. There can be |
67 multiple "-a" flags listed for multiple outputs. If a "-a" | 67 multiple "-a" flags listed for multiple outputs. If a "-a" |
68 or "--assert-file-list" argument is present, then the list | 68 or "--assert-file-list" argument is present, then the list |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
116 | 116 |
117 def Run(self, opts, args): | 117 def Run(self, opts, args): |
118 self.output_directory = '.' | 118 self.output_directory = '.' |
119 first_ids_file = None | 119 first_ids_file = None |
120 whitelist_filenames = [] | 120 whitelist_filenames = [] |
121 assert_output_files = [] | 121 assert_output_files = [] |
122 target_platform = None | 122 target_platform = None |
123 depfile = None | 123 depfile = None |
124 depdir = None | 124 depdir = None |
125 rc_header_format = None | 125 rc_header_format = None |
126 output_all_resource_defines = None | |
126 (own_opts, args) = getopt.getopt(args, 'a:o:D:E:f:w:t:h:', | 127 (own_opts, args) = getopt.getopt(args, 'a:o:D:E:f:w:t:h:', |
127 ('depdir=','depfile=','assert-file-list=')) | 128 ('depdir=','depfile=','assert-file-list=', |
129 'output-all-resource-defines', | |
newt (away)
2014/10/30 20:16:20
Alternatively, this could accept an argument, e.g.
lliabraa
2014/10/31 11:33:13
I think this is a little more explicit because it
| |
130 'nooutput-all-resource-defines',)) | |
128 for (key, val) in own_opts: | 131 for (key, val) in own_opts: |
129 if key == '-a': | 132 if key == '-a': |
130 assert_output_files.append(val) | 133 assert_output_files.append(val) |
131 elif key == '--assert-file-list': | 134 elif key == '--assert-file-list': |
132 with open(val) as f: | 135 with open(val) as f: |
133 assert_output_files += f.read().splitlines() | 136 assert_output_files += f.read().splitlines() |
134 elif key == '-o': | 137 elif key == '-o': |
135 self.output_directory = val | 138 self.output_directory = val |
136 elif key == '-D': | 139 elif key == '-D': |
137 name, val = util.ParseDefine(val) | 140 name, val = util.ParseDefine(val) |
138 self.defines[name] = val | 141 self.defines[name] = val |
139 elif key == '-E': | 142 elif key == '-E': |
140 (env_name, env_value) = val.split('=', 1) | 143 (env_name, env_value) = val.split('=', 1) |
141 os.environ[env_name] = env_value | 144 os.environ[env_name] = env_value |
142 elif key == '-f': | 145 elif key == '-f': |
143 # TODO(joi@chromium.org): Remove this override once change | 146 # TODO(joi@chromium.org): Remove this override once change |
144 # lands in WebKit.grd to specify the first_ids_file in the | 147 # lands in WebKit.grd to specify the first_ids_file in the |
145 # .grd itself. | 148 # .grd itself. |
146 first_ids_file = val | 149 first_ids_file = val |
147 elif key == '-w': | 150 elif key == '-w': |
148 whitelist_filenames.append(val) | 151 whitelist_filenames.append(val) |
152 elif key == '--output-all-resource-defines': | |
153 output_all_resource_defines = True | |
154 elif key == '--nooutput-all-resource-defines': | |
155 output_all_resource_defines = False | |
149 elif key == '-t': | 156 elif key == '-t': |
150 target_platform = val | 157 target_platform = val |
151 elif key == '-h': | 158 elif key == '-h': |
152 rc_header_format = val | 159 rc_header_format = val |
153 elif key == '--depdir': | 160 elif key == '--depdir': |
154 depdir = val | 161 depdir = val |
155 elif key == '--depfile': | 162 elif key == '--depfile': |
156 depfile = val | 163 depfile = val |
157 | 164 |
158 if len(args): | 165 if len(args): |
(...skipping 12 matching lines...) Expand all Loading... | |
171 for whitelist_filename in whitelist_filenames: | 178 for whitelist_filename in whitelist_filenames: |
172 self.VerboseOut('Using whitelist: %s\n' % whitelist_filename); | 179 self.VerboseOut('Using whitelist: %s\n' % whitelist_filename); |
173 whitelist_contents = util.ReadFile(whitelist_filename, util.RAW_TEXT) | 180 whitelist_contents = util.ReadFile(whitelist_filename, util.RAW_TEXT) |
174 self.whitelist_names.update(whitelist_contents.strip().split('\n')) | 181 self.whitelist_names.update(whitelist_contents.strip().split('\n')) |
175 | 182 |
176 self.res = grd_reader.Parse(opts.input, | 183 self.res = grd_reader.Parse(opts.input, |
177 debug=opts.extra_verbose, | 184 debug=opts.extra_verbose, |
178 first_ids_file=first_ids_file, | 185 first_ids_file=first_ids_file, |
179 defines=self.defines, | 186 defines=self.defines, |
180 target_platform=target_platform) | 187 target_platform=target_platform) |
188 | |
189 # If the output_all_resource_defines option is specified, override the value | |
190 # found in the grd file. | |
191 if output_all_resource_defines is not None: | |
192 self.res.SetShouldOutputAllResourceDefines(output_all_resource_defines) | |
193 | |
181 # Set an output context so that conditionals can use defines during the | 194 # Set an output context so that conditionals can use defines during the |
182 # gathering stage; we use a dummy language here since we are not outputting | 195 # gathering stage; we use a dummy language here since we are not outputting |
183 # a specific language. | 196 # a specific language. |
184 self.res.SetOutputLanguage('en') | 197 self.res.SetOutputLanguage('en') |
185 if rc_header_format: | 198 if rc_header_format: |
186 self.res.AssignRcHeaderFormat(rc_header_format) | 199 self.res.AssignRcHeaderFormat(rc_header_format) |
187 self.res.RunGatherers() | 200 self.res.RunGatherers() |
188 self.Process() | 201 self.Process() |
189 | 202 |
190 if assert_output_files: | 203 if assert_output_files: |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
425 self.MakeDirectoriesTo(depfile) | 438 self.MakeDirectoriesTo(depfile) |
426 outfile = self.fo_create(depfile, 'wb') | 439 outfile = self.fo_create(depfile, 'wb') |
427 outfile.writelines(depfile_contents) | 440 outfile.writelines(depfile_contents) |
428 | 441 |
429 @staticmethod | 442 @staticmethod |
430 def MakeDirectoriesTo(file): | 443 def MakeDirectoriesTo(file): |
431 '''Creates directories necessary to contain |file|.''' | 444 '''Creates directories necessary to contain |file|.''' |
432 dir = os.path.split(file)[0] | 445 dir = os.path.split(file)[0] |
433 if not os.path.exists(dir): | 446 if not os.path.exists(dir): |
434 os.makedirs(dir) | 447 os.makedirs(dir) |
OLD | NEW |