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()) |