| Index: tools/json_to_struct/json_to_struct.gni
|
| diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0ef5bd88835b998ca9a20b6163fb33aba5faaa54
|
| --- /dev/null
|
| +++ b/tools/json_to_struct/json_to_struct.gni
|
| @@ -0,0 +1,62 @@
|
| +# Copyright 2014 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.
|
| +
|
| +# Converts a .json file to a C++ struct.
|
| +#
|
| +# Variables:
|
| +#
|
| +# source (required)
|
| +# Single file name of source .json file.
|
| +#
|
| +# schema_file (required)
|
| +# Single file name of the .json file that defines the schema.
|
| +#
|
| +# namespace (required)
|
| +# Namespace name to put result in.
|
| +#
|
| +# visibility (optional)
|
| +# Normal meaning.
|
| +template("json_to_struct") {
|
| + assert(defined(invoker.source), "source required in $target_name")
|
| + assert(defined(invoker.schema_file), "schema_file required in $target_name")
|
| + assert(defined(invoker.namespace), "namespace required in $target_name")
|
| +
|
| + action_name = target_name + "_action"
|
| + source_set_name = target_name
|
| +
|
| + action(action_name) {
|
| + visibility = [ ":$source_set_name" ]
|
| + script = "//tools/json_to_struct/json_to_struct.py"
|
| +
|
| + inputs = [
|
| + "//tools/json_to_struct/element_generator.py",
|
| + "//tools/json_to_struct/struct_generator.py",
|
| + invoker.source,
|
| + ]
|
| +
|
| + out_dir = get_path_info(invoker.source, "gen_dir")
|
| + out_name = get_path_info(invoker.source, "name")
|
| + outputs = [
|
| + "$out_dir/$out_name.cc",
|
| + "$out_dir/$out_name.h",
|
| + ]
|
| +
|
| + args = [
|
| + rebase_path(invoker.source, root_build_dir),
|
| + "--destbase=" + rebase_path(out_dir, root_build_dir),
|
| + "--namespace=" + invoker.namespace,
|
| + "--schema=" + rebase_path(invoker.schema_file, root_build_dir),
|
| + ]
|
| + }
|
| +
|
| + source_set(source_set_name) {
|
| + if (defined(invoker.visibility)) {
|
| + visibility = invoker.visibility
|
| + }
|
| +
|
| + sources = get_target_outputs(":$action_name")
|
| +
|
| + deps = [ ":$action_name" ]
|
| + }
|
| +}
|
|
|