# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//mojo/public/tools/bindings/mojom.gni")

action("precompile_templates") {
  sources = mojom_generator_sources
  sources += [
    "$mojom_generator_root/generators/cpp_templates/enum_macros.tmpl",
    "$mojom_generator_root/generators/cpp_templates/enum_serialization_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_macros.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_proxy_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_request_validator_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_response_validator_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/interface_stub_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/module-shared-internal.h.tmpl",
    "$mojom_generator_root/generators/cpp_templates/module-shared.cc.tmpl",
    "$mojom_generator_root/generators/cpp_templates/module-shared.h.tmpl",
    "$mojom_generator_root/generators/cpp_templates/module.cc.tmpl",
    "$mojom_generator_root/generators/cpp_templates/module.h.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_data_view_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_data_view_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_macros.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_serialization_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_traits_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/struct_traits_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_data_view_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_data_view_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_serialization_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_traits_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/union_traits_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/validation_macros.tmpl",
    "$mojom_generator_root/generators/cpp_templates/wrapper_class_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/wrapper_class_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/wrapper_class_template_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/wrapper_union_class_declaration.tmpl",
    "$mojom_generator_root/generators/cpp_templates/wrapper_union_class_definition.tmpl",
    "$mojom_generator_root/generators/cpp_templates/wrapper_union_class_template_definition.tmpl",
    "$mojom_generator_root/generators/java_templates/constant_definition.tmpl",
    "$mojom_generator_root/generators/java_templates/constants.java.tmpl",
    "$mojom_generator_root/generators/java_templates/data_types_definition.tmpl",
    "$mojom_generator_root/generators/java_templates/enum.java.tmpl",
    "$mojom_generator_root/generators/java_templates/enum_definition.tmpl",
    "$mojom_generator_root/generators/java_templates/header.java.tmpl",
    "$mojom_generator_root/generators/java_templates/interface.java.tmpl",
    "$mojom_generator_root/generators/java_templates/interface_definition.tmpl",
    "$mojom_generator_root/generators/java_templates/interface_internal.java.tmpl",
    "$mojom_generator_root/generators/java_templates/struct.java.tmpl",
    "$mojom_generator_root/generators/java_templates/union.java.tmpl",
    "$mojom_generator_root/generators/js_templates/enum_definition.tmpl",
    "$mojom_generator_root/generators/js_templates/interface_definition.tmpl",
    "$mojom_generator_root/generators/js_templates/module.amd.tmpl",
    "$mojom_generator_root/generators/js_templates/module_definition.tmpl",
    "$mojom_generator_root/generators/js_templates/struct_definition.tmpl",
    "$mojom_generator_root/generators/js_templates/union_definition.tmpl",
    "$mojom_generator_root/generators/js_templates/validation_macros.tmpl",
  ]
  script = mojom_generator_script
  outputs = [
    "$target_gen_dir/cpp_templates.zip",
    "$target_gen_dir/java_templates.zip",
    "$target_gen_dir/js_templates.zip",
  ]
  args = [
    "--use_bundled_pylibs",
    "precompile",
    "-o",
    rebase_path(target_gen_dir),
  ]
}
