aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornewt@chromium.org <newt@chromium.org>2014-11-04 18:51:39 +0000
committernewt@chromium.org <newt@chromium.org>2014-11-04 18:51:39 +0000
commitc538054245ee7b36b2b076a3028d4ff30809c1f3 (patch)
tree3be75ce2fd834bce066fd4a28cd186521aaa5ae6
parentaaa243a230b262ff487d72922612f7ada95cb8c1 (diff)
downloadgrit-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-xgrit/node/misc.py5
-rw-r--r--grit/testdata/whitelist_resources.grd4
-rw-r--r--grit/tool/build.py20
-rw-r--r--grit/tool/build_unittest.py67
-rwxr-xr-xgrit_info.py6
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)