| # 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. | 
 |  | 
 | # This template will generate inspector protocol source code. The code will | 
 | # not be compiled, use get_target_outputs(<name>) to compile them. | 
 | # | 
 | # Inputs | 
 | # | 
 | #   config_file  (required) | 
 | #       Path to json file specifying inspector protocol configuration. | 
 | # | 
 | #   out_dir  (required) | 
 | #       Path to put the generated files in. It must be inside output or | 
 | #       generated file directory. | 
 | # | 
 | #   outputs (required) | 
 | #       Files generated. Relative to out_dir. | 
 | # | 
 | #   inputs  (optional) | 
 | #       Extra inputs specified by the config file. | 
 | template("inspector_protocol_generate") { | 
 |   assert(defined(invoker.config_file)) | 
 |   assert(defined(invoker.out_dir)) | 
 |   assert(defined(invoker.outputs)) | 
 |   assert(defined(invoker.inspector_protocol_dir)) | 
 |   inspector_protocol_dir = invoker.inspector_protocol_dir | 
 |  | 
 |   action(target_name) { | 
 |     script = "$inspector_protocol_dir/code_generator.py" | 
 |  | 
 |     inputs = [ | 
 |       invoker.config_file, | 
 |       "$inspector_protocol_dir/lib/base_string_adapter_cc.template", | 
 |       "$inspector_protocol_dir/lib/base_string_adapter_h.template", | 
 |       "$inspector_protocol_dir/lib/DispatcherBase_cpp.template", | 
 |       "$inspector_protocol_dir/lib/DispatcherBase_h.template", | 
 |       "$inspector_protocol_dir/lib/ErrorSupport_cpp.template", | 
 |       "$inspector_protocol_dir/lib/ErrorSupport_h.template", | 
 |       "$inspector_protocol_dir/lib/Forward_h.template", | 
 |       "$inspector_protocol_dir/lib/FrontendChannel_h.template", | 
 |       "$inspector_protocol_dir/lib/Object_cpp.template", | 
 |       "$inspector_protocol_dir/lib/Object_h.template", | 
 |       "$inspector_protocol_dir/lib/Parser_cpp.template", | 
 |       "$inspector_protocol_dir/lib/Parser_h.template", | 
 |       "$inspector_protocol_dir/lib/Protocol_cpp.template", | 
 |       "$inspector_protocol_dir/lib/ValueConversions_h.template", | 
 |       "$inspector_protocol_dir/lib/Values_cpp.template", | 
 |       "$inspector_protocol_dir/lib/Values_h.template", | 
 |       "$inspector_protocol_dir/templates/Exported_h.template", | 
 |       "$inspector_protocol_dir/templates/Imported_h.template", | 
 |       "$inspector_protocol_dir/templates/TypeBuilder_cpp.template", | 
 |       "$inspector_protocol_dir/templates/TypeBuilder_h.template", | 
 |     ] | 
 |     if (defined(invoker.inputs)) { | 
 |       inputs += invoker.inputs | 
 |     } | 
 |  | 
 |     args = [ | 
 |       "--jinja_dir", | 
 |       rebase_path("//third_party/", root_build_dir),  # jinja is in chromium's third_party | 
 |       "--output_base", | 
 |       rebase_path(invoker.out_dir, root_build_dir), | 
 |       "--config", | 
 |       rebase_path(invoker.config_file, root_build_dir), | 
 |       "--inspector_protocol_dir", | 
 |       "$inspector_protocol_dir", | 
 |     ] | 
 |  | 
 |     if (defined(invoker.config_values)) { | 
 |       foreach(value, invoker.config_values) { | 
 |         args += [ | 
 |           "--config_value", | 
 |           value, | 
 |         ] | 
 |       } | 
 |     } | 
 |  | 
 |     outputs = get_path_info(rebase_path(invoker.outputs, ".", invoker.out_dir), | 
 |                             "abspath") | 
 |  | 
 |     forward_variables_from(invoker, | 
 |                            [ | 
 |                              "visibility", | 
 |                              "deps", | 
 |                              "public_deps", | 
 |                            ]) | 
 |   } | 
 | } |