diff options
author | newt@chromium.org <newt@chromium.org> | 2014-11-04 18:51:39 +0000 |
---|---|---|
committer | newt@chromium.org <newt@chromium.org> | 2014-11-04 18:51:39 +0000 |
commit | c538054245ee7b36b2b076a3028d4ff30809c1f3 (patch) | |
tree | 3be75ce2fd834bce066fd4a28cd186521aaa5ae6 | |
parent | aaa243a230b262ff487d72922612f7ada95cb8c1 (diff) | |
download | grit-c538054245ee7b36b2b076a3028d4ff30809c1f3.tar.gz |
Add support to override output_all_resource_defines from command line.
If --output_all_resource_defines or --nooutput_all_resource_defines
is specified to grit's build tool, then the value in the .grd will be
overridden.
Because gyp sends the same args to grit_info.py and grit.py, this CL
also updates grit_info.py to accept these arguments to avoid
unsupported argument errors.
BUG=428947
R=newt@chromium.org
Review URL: https://codereview.chromium.org/691873002
Patch from Lane LiaBraaten <lliabraa@chromium.org>.
git-svn-id: http://grit-i18n.googlecode.com/svn/trunk@180 7262f16d-afe8-6277-6482-052fa10e57b1
-rwxr-xr-x | grit/node/misc.py | 5 | ||||
-rw-r--r-- | grit/testdata/whitelist_resources.grd | 4 | ||||
-rw-r--r-- | grit/tool/build.py | 20 | ||||
-rw-r--r-- | grit/tool/build_unittest.py | 67 | ||||
-rwxr-xr-x | grit_info.py | 6 |
5 files changed, 99 insertions, 3 deletions
diff --git a/grit/node/misc.py b/grit/node/misc.py index 9a23263..64c4690 100755 --- a/grit/node/misc.py +++ b/grit/node/misc.py @@ -292,6 +292,11 @@ class GritNode(base.Node): """ return self.attrs['base_dir'] + def SetShouldOutputAllResourceDefines(self, value): + """Overrides the value of output_all_resource_defines found in the grd file. + """ + self.attrs['output_all_resource_defines'] = 'true' if value else 'false' + def ShouldOutputAllResourceDefines(self): """Returns true if all resource defines should be output, false if defines for resources not emitted to resource files should be diff --git a/grit/testdata/whitelist_resources.grd b/grit/testdata/whitelist_resources.grd index a5eeb2d..9925688 100644 --- a/grit/testdata/whitelist_resources.grd +++ b/grit/testdata/whitelist_resources.grd @@ -35,11 +35,11 @@ </if> <if expr="False"> <structure name="IDR_STRUCTURE_IN_FALSE_IF_WHITELISTED" - file="deleted.html" + file="status.html" type="chrome_html" > </structure> <structure name="IDR_STRUCTURE_IN_FALSE_IF_NOT_WHITELISTED" - file="deleted.html" + file="simple.html" type="chrome_html" > </structure> </if> diff --git a/grit/tool/build.py b/grit/tool/build.py index 186c8b1..c3c1aff 100644 --- a/grit/tool/build.py +++ b/grit/tool/build.py @@ -104,6 +104,11 @@ Options: and {numeric_id}. E.g. "#define {textual_id} {numeric_id}" Otherwise it will use the default "#define SYMBOL 1234" + --output-all-resource-defines + --no-output-all-resource-defines If specified, overrides the value of the + output_all_resource_defines attribute of the root <grit> + element of the input .grd file. + Conditional inclusion of resources only affects the output of files which control which resources get linked into a binary, e.g. it affects .rc files meant for compilation but it does not affect resource header files (that define @@ -123,8 +128,11 @@ are exported to translation interchange files (e.g. XMB files), etc. depfile = None depdir = None rc_header_format = None + output_all_resource_defines = None (own_opts, args) = getopt.getopt(args, 'a:o:D:E:f:w:t:h:', - ('depdir=','depfile=','assert-file-list=')) + ('depdir=','depfile=','assert-file-list=', + 'output-all-resource-defines', + 'no-output-all-resource-defines',)) for (key, val) in own_opts: if key == '-a': assert_output_files.append(val) @@ -146,6 +154,10 @@ are exported to translation interchange files (e.g. XMB files), etc. first_ids_file = val elif key == '-w': whitelist_filenames.append(val) + elif key == '--output-all-resource-defines': + output_all_resource_defines = True + elif key == '--no-output-all-resource-defines': + output_all_resource_defines = False elif key == '-t': target_platform = val elif key == '-h': @@ -178,6 +190,12 @@ are exported to translation interchange files (e.g. XMB files), etc. first_ids_file=first_ids_file, defines=self.defines, target_platform=target_platform) + + # If the output_all_resource_defines option is specified, override the value + # found in the grd file. + if output_all_resource_defines is not None: + self.res.SetShouldOutputAllResourceDefines(output_all_resource_defines) + # Set an output context so that conditionals can use defines during the # gathering stage; we use a dummy language here since we are not outputting # a specific language. diff --git a/grit/tool/build_unittest.py b/grit/tool/build_unittest.py index d94b30e..b687bb3 100644 --- a/grit/tool/build_unittest.py +++ b/grit/tool/build_unittest.py @@ -178,6 +178,73 @@ class BuildUnittest(unittest.TestCase): non_whitelisted_ids, ) + def testOutputAllResourceDefinesTrue(self): + output_dir = tempfile.mkdtemp() + builder = build.RcBuilder() + class DummyOpts(object): + def __init__(self): + self.input = util.PathFromRoot('grit/testdata/whitelist_resources.grd') + self.verbose = False + self.extra_verbose = False + whitelist_file = util.PathFromRoot('grit/testdata/whitelist.txt') + builder.Run(DummyOpts(), ['-o', output_dir, + '-w', whitelist_file, + '--output-all-resource-defines',]) + header = os.path.join(output_dir, 'whitelist_test_resources.h') + map_cc = os.path.join(output_dir, 'whitelist_test_resources_map.cc') + + whitelisted_ids = [ + 'IDR_STRUCTURE_WHITELISTED', + 'IDR_STRUCTURE_NOT_WHITELISTED', + 'IDR_STRUCTURE_IN_TRUE_IF_WHITELISTED', + 'IDR_STRUCTURE_IN_TRUE_IF_NOT_WHITELISTED', + 'IDR_STRUCTURE_IN_FALSE_IF_WHITELISTED', + 'IDR_STRUCTURE_IN_FALSE_IF_NOT_WHITELISTED', + 'IDR_INCLUDE_WHITELISTED', + 'IDR_INCLUDE_NOT_WHITELISTED', + ] + non_whitelisted_ids = [] + for output_file in (header, map_cc): + self._verifyWhitelistedOutput( + output_file, + whitelisted_ids, + non_whitelisted_ids, + ) + + def testOutputAllResourceDefinesFalse(self): + output_dir = tempfile.mkdtemp() + builder = build.RcBuilder() + class DummyOpts(object): + def __init__(self): + self.input = util.PathFromRoot('grit/testdata/whitelist_resources.grd') + self.verbose = False + self.extra_verbose = False + whitelist_file = util.PathFromRoot('grit/testdata/whitelist.txt') + builder.Run(DummyOpts(), ['-o', output_dir, + '-w', whitelist_file, + '--no-output-all-resource-defines',]) + header = os.path.join(output_dir, 'whitelist_test_resources.h') + map_cc = os.path.join(output_dir, 'whitelist_test_resources_map.cc') + + whitelisted_ids = [ + 'IDR_STRUCTURE_WHITELISTED', + 'IDR_STRUCTURE_IN_TRUE_IF_WHITELISTED', + 'IDR_INCLUDE_WHITELISTED', + ] + non_whitelisted_ids = [ + 'IDR_STRUCTURE_NOT_WHITELISTED', + 'IDR_STRUCTURE_IN_TRUE_IF_NOT_WHITELISTED', + 'IDR_STRUCTURE_IN_FALSE_IF_WHITELISTED', + 'IDR_STRUCTURE_IN_FALSE_IF_NOT_WHITELISTED', + 'IDR_INCLUDE_NOT_WHITELISTED', + ] + for output_file in (header, map_cc): + self._verifyWhitelistedOutput( + output_file, + whitelisted_ids, + non_whitelisted_ids, + ) + if __name__ == '__main__': unittest.main() diff --git a/grit_info.py b/grit_info.py index 47a51f7..ce52997 100755 --- a/grit_info.py +++ b/grit_info.py @@ -112,6 +112,12 @@ def DoMain(argv): # line flags. parser.add_option("-E", action="append", dest="build_env", default=[]) parser.add_option("-w", action="append", dest="whitelist_files", default=[]) + parser.add_option("--output-all-resource-defines", action="store_true", + dest="output_all_resource_defines", default=True, + help="Unused") + parser.add_option("--no-output-all-resource-defines", action="store_false", + dest="output_all_resource_defines", default=True, + help="Unused") parser.add_option("-f", dest="ids_file", default="GRIT_DIR/../gritsettings/resource_ids") parser.add_option("-t", dest="target_platform", default=None) |