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

Unified Diff: mojo/public/tools/bindings/mojom_bindings_generator.py

Issue 1572213002: Precompile mojom bindings generator jinja templates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/mojom_bindings_generator.py
diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.py b/mojo/public/tools/bindings/mojom_bindings_generator.py
index 83ab590fb8ea4c93e2ec75d77f861fbb1416674d..2dbd60d2c539eb051a239689baf67bc179b4445a 100755
--- a/mojo/public/tools/bindings/mojom_bindings_generator.py
+++ b/mojo/public/tools/bindings/mojom_bindings_generator.py
@@ -38,6 +38,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
from mojom.error import Error
import mojom.fileutil as fileutil
from mojom.generate.data import OrderedModuleFromData
+from mojom.generate import template_expander
from mojom.parse.parser import Parse
from mojom.parse.translate import Translate
@@ -142,7 +143,7 @@ class MojomProcessor(object):
for language, generator_module in generator_modules.iteritems():
generator = generator_module.Generator(
module, args.output_dir, typemap=self._typemap.get(language, {}),
- variant=args.variant)
+ variant=args.variant, bytecode_path=args.bytecode_path)
filtered_args = []
if hasattr(generator_module, 'GENERATOR_PREFIX'):
prefix = '--' + generator_module.GENERATOR_PREFIX + '_'
@@ -190,33 +191,7 @@ class MojomProcessor(object):
self._parsed_files[filename] = tree
-def main():
- parser = argparse.ArgumentParser(
- description="Generate bindings from mojom files.")
- parser.add_argument("filename", nargs="+",
- help="mojom input file")
- parser.add_argument("-d", "--depth", dest="depth", default=".",
- help="depth from source root")
- parser.add_argument("-o", "--output_dir", dest="output_dir", default=".",
- help="output directory for generated files")
- parser.add_argument("-g", "--generators", dest="generators_string",
- metavar="GENERATORS",
- default="c++,javascript,java",
- help="comma-separated list of generators")
- parser.add_argument("--debug_print_intermediate", action="store_true",
- help="print the intermediate representation")
- parser.add_argument("-I", dest="import_directories", action="append",
- metavar="directory", default=[],
- help="add a directory to be searched for import files")
- parser.add_argument("--use_bundled_pylibs", action="store_true",
- help="use Python modules bundled in the SDK")
- parser.add_argument("--typemap", action="append", metavar="TYPEMAP",
- default=[], dest="typemaps",
- help="apply TYPEMAP to generated output")
- parser.add_argument("--variant", dest="variant", default=None,
- help="output a named variant of the bindings")
- (args, remaining_args) = parser.parse_known_args()
-
+def _Generate(args, remaining_args):
if args.variant == "none":
args.variant = None
@@ -232,5 +207,59 @@ def main():
return 0
+def _Precompile(args, _):
+ generator_modules = LoadGenerators(",".join(_BUILTIN_GENERATORS.keys()))
+
+ template_expander.PrecompileTemplates(generator_modules, args.output_dir)
+ return 0
+
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="Generate bindings from mojom files.")
+ parser.add_argument("--use_bundled_pylibs", action="store_true",
+ help="use Python modules bundled in the SDK")
+
+ subparsers = parser.add_subparsers()
+ generate_parser = subparsers.add_parser(
+ "generate", description="Generate bindings from mojom files.")
+ generate_parser.add_argument("filename", nargs="+",
+ help="mojom input file")
+ generate_parser.add_argument("-d", "--depth", dest="depth", default=".",
+ help="depth from source root")
+ generate_parser.add_argument("-o", "--output_dir", dest="output_dir",
+ default=".",
+ help="output directory for generated files")
+ generate_parser.add_argument("--debug_print_intermediate",
+ action="store_true",
+ help="print the intermediate representation")
+ generate_parser.add_argument("-g", "--generators", dest="generators_string",
+ metavar="GENERATORS",
yzshen1 2016/01/14 01:32:47 nit: the indent is a little unusual.
Sam McNally 2016/01/14 02:58:18 Done.
+ default="c++,javascript,java",
+ help="comma-separated list of generators")
+ generate_parser.add_argument(
+ "-I", dest="import_directories", action="append", metavar="directory",
+ default=[], help="add a directory to be searched for import files")
+ generate_parser.add_argument("--typemap", action="append", metavar="TYPEMAP",
+ default=[], dest="typemaps",
+ help="apply TYPEMAP to generated output")
+ generate_parser.add_argument("--variant", dest="variant", default=None,
+ help="output a named variant of the bindings")
+ generate_parser.add_argument("--bytecode_path", default=None, type=str,
+ required=True)
yzshen1 2016/01/14 01:32:47 please add "help".
Sam McNally 2016/01/14 02:58:19 Done.
+ generate_parser.set_defaults(func=_Generate)
+
+ precompile_parser = subparsers.add_parser("precompile",
+ description="Precompile templates for the mojom bindings generator.")
+ precompile_parser.add_argument(
+ "-o", "--output_dir", dest="output_dir", default=".",
+ help="output directory for precompiled templates")
+ precompile_parser.set_defaults(func=_Precompile)
+
+ args, remaining_args = parser.parse_known_args()
+ return args.func(args, remaining_args)
+
+
if __name__ == "__main__":
sys.exit(main())

Powered by Google App Engine
This is Rietveld 408576698