1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6  'rules': [
7    {
8      'rule_name': '<(_target_name)_mojom_bindings_generator',
9      'extension': 'mojom',
10      'variables': {
11        'mojom_base_output_dir':
12             '<!(python <(DEPTH)/build/inverse_depth.py <(DEPTH))',
13        'mojom_bindings_generator':
14            '<(DEPTH)/mojo/public/tools/bindings/mojom_bindings_generator.py',
15        'java_out_dir': '<(PRODUCT_DIR)/java_mojo/<(_target_name)/src',
16        'mojom_import_args%': [
17         '-I<(DEPTH)'
18        ],
19      },
20      'inputs': [
21        '<(mojom_bindings_generator)',
22        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/enum_declaration.tmpl',
23        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl',
24        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl',
25        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_macros.tmpl',
26        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_proxy_declaration.tmpl',
27        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_request_validator_declaration.tmpl',
28        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_response_validator_declaration.tmpl',
29        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/interface_stub_declaration.tmpl',
30        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/module.cc.tmpl',
31        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl',
32        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/module-internal.h.tmpl',
33        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/params_definition.tmpl',
34        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/struct_declaration.tmpl',
35        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/struct_definition.tmpl',
36        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/struct_macros.tmpl',
37        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl',
38        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_definition.tmpl',
39        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/wrapper_class_declaration.tmpl',
40        '<(DEPTH)/mojo/public/tools/bindings/generators/cpp_templates/wrapper_class_definition.tmpl',
41        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/constant_definition.tmpl',
42        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/constants.java.tmpl',
43        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/enum_definition.tmpl',
44        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/enum.java.tmpl',
45        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/header.java.tmpl',
46        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/interface_definition.tmpl',
47        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/interface.java.tmpl',
48        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/interface_internal.java.tmpl',
49        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl',
50        '<(DEPTH)/mojo/public/tools/bindings/generators/java_templates/struct.java.tmpl',
51        '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/enum_definition.tmpl',
52        '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl',
53        '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/module.js.tmpl',
54        '<(DEPTH)/mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl',
55        '<(DEPTH)/mojo/public/tools/bindings/generators/python_templates/module_macros.tmpl',
56        '<(DEPTH)/mojo/public/tools/bindings/generators/python_templates/module.py.tmpl',
57        '<(DEPTH)/mojo/public/tools/bindings/generators/mojom_cpp_generator.py',
58        '<(DEPTH)/mojo/public/tools/bindings/generators/mojom_java_generator.py',
59        '<(DEPTH)/mojo/public/tools/bindings/generators/mojom_js_generator.py',
60        '<(DEPTH)/mojo/public/tools/bindings/generators/mojom_python_generator.py',
61        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/__init__.py',
62        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/error.py',
63        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/generate/__init__.py',
64        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/generate/data.py',
65        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/generate/generator.py',
66        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/generate/module.py',
67        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/generate/pack.py',
68        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py',
69        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/parse/__init__.py',
70        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/parse/ast.py',
71        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/parse/lexer.py',
72        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/parse/parser.py',
73        '<(DEPTH)/mojo/public/tools/bindings/pylib/mojom/parse/translate.py',
74      ],
75      'outputs': [
76        '<(SHARED_INTERMEDIATE_DIR)/<(mojom_base_output_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).mojom.cc',
77        '<(SHARED_INTERMEDIATE_DIR)/<(mojom_base_output_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).mojom.h',
78        '<(SHARED_INTERMEDIATE_DIR)/<(mojom_base_output_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).mojom.js',
79        '<(SHARED_INTERMEDIATE_DIR)/<(mojom_base_output_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT)_mojom.py',
80        '<(SHARED_INTERMEDIATE_DIR)/<(mojom_base_output_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).mojom-internal.h',
81      ],
82      'action': [
83        'python', '<@(mojom_bindings_generator)',
84        './<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).mojom',
85        '--use_chromium_bundled_pylibs',
86        '-d', '<(DEPTH)',
87        '<@(mojom_import_args)',
88        '-o', '<(SHARED_INTERMEDIATE_DIR)/<(mojom_base_output_dir)/<(RULE_INPUT_DIRNAME)',
89        '--java_output_directory=<(java_out_dir)',
90      ],
91      'message': 'Generating Mojo bindings from <(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).mojom',
92      'process_outputs_as_sources': 1,
93    }
94  ],
95  'include_dirs': [
96    '<(DEPTH)',
97    '<(SHARED_INTERMEDIATE_DIR)',
98  ],
99  'direct_dependent_settings': {
100    'include_dirs': [
101      '<(DEPTH)',
102      '<(SHARED_INTERMEDIATE_DIR)',
103    ],
104    'variables': {
105      'generated_src_dirs': [
106        '<(PRODUCT_DIR)/java_mojo/<(_target_name)/src',
107      ],
108    },
109  },
110  'hard_dependency': 1,
111}
112