| # 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. |
| |
| # TODO(brettw) this should maybe be moved to tools/json_schema_compiler/ where |
| # the script is. Currently, we keep it in the build directory with the gyp |
| # version to make it easier to find. |
| # |
| # Or, considering the fact that it references the chrome/extensions directory, |
| # it should possibly be moved there. |
| |
| _api_gen_dir = "//tools/json_schema_compiler" |
| _api_gen = "$_api_gen_dir/compiler.py" |
| _impl_dir = "chrome/browser/extensions/api" |
| |
| _python_files = [ |
| "$_api_gen_dir/cc_generator.py", |
| "$_api_gen_dir/code.py", |
| "$_api_gen_dir/compiler.py", |
| "$_api_gen_dir/cpp_bundle_generator.py", |
| "$_api_gen_dir/cpp_type_generator.py", |
| "$_api_gen_dir/cpp_util.py", |
| "$_api_gen_dir/h_generator.py", |
| "$_api_gen_dir/idl_schema.py", |
| "$_api_gen_dir/json_schema.py", |
| "$_api_gen_dir/model.py", |
| "$_api_gen_dir/util_cc_helper.py", |
| ] |
| |
| # Runs the schema compiler over a list of sources. |
| # |
| # Parameters: |
| # sources |
| # The .json and .idl files to compile. |
| # |
| # root_namespace |
| # The C++ namespace that all generated files go under. |
| # |
| # deps, visibility (optional) |
| template("json_schema_compile") { |
| assert(defined(invoker.sources), "Need sources for $target_name") |
| assert(defined(invoker.root_namespace), |
| "Need root_namespace defined for $target_name") |
| |
| action_name = "${target_name}_action" |
| source_set_name = target_name |
| |
| action_foreach(action_name) { |
| visibility = ":$source_set_name" |
| script = _api_gen |
| |
| source_prereqs = _python_files |
| sources = invoker.sources |
| |
| # TODO(GYP) We should probably be using {{source_gen_dir}} instead of |
| # $target_gen_dir but support for this string isn't pushed out in GN |
| # binaries yet. Replace this when it is. |
| outputs = [ |
| "$target_gen_dir/{{source_name_part}}.cc", |
| "$target_gen_dir/{{source_name_part}}.h", |
| ] |
| |
| args = [ |
| "--root", rebase_path("//", root_build_dir), |
| "--destdir", rebase_path(root_gen_dir, root_build_dir), |
| "--namespace", invoker.root_namespace, |
| "--generator=cpp", |
| "--impl-dir", _impl_dir, |
| "{{source}}", |
| ] |
| } |
| |
| source_set(source_set_name) { |
| if (defined(invoker.visibility)) { |
| visibility = invoker.visibility |
| } |
| |
| sources = get_target_outputs(":$action_name") |
| |
| deps = [ ":$action_name" ] |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| } |
| } |
| |
| # Runs the schema bundler. |
| # |
| # Parameters: |
| # sources |
| # The .json and .idl files to bundle. |
| # |
| # root_namespace |
| # The C++ namespace that all generated files go under. |
| # |
| # deps, visibility (optional) |
| template("json_schema_bundle") { |
| assert(defined(invoker.sources), "Need sources for $target_name") |
| assert(defined(invoker.root_namespace), |
| "Need root_namespace defined for $target_name") |
| |
| action_name = "${target_name}_action" |
| source_set_name = target_name |
| |
| action(action_name) { |
| visibility = ":$source_set_name" |
| script = _api_gen |
| |
| source_prereqs = _python_files |
| source_prereqs += invoker.sources |
| |
| outputs = [ |
| "$target_gen_dir/generated_api.h", |
| "$target_gen_dir/generated_api.cc", |
| "$target_gen_dir/generated_schemas.h", |
| "$target_gen_dir/generated_schemas.cc", |
| ] |
| |
| args = [ |
| "--root", rebase_path("//", root_build_dir), |
| "--destdir", rebase_path(root_gen_dir, root_build_dir), |
| "--namespace", invoker.root_namespace, |
| "--generator=cpp-bundle", |
| "--impl-dir", _impl_dir, |
| ] + rebase_path(invoker.sources, root_build_dir) |
| } |
| |
| source_set(source_set_name) { |
| if (defined(invoker.visibility)) { |
| visibility = invoker.visibility |
| } |
| |
| sources = get_target_outputs(":$action_name") |
| |
| deps = [ ":$action_name" ] |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| } |
| } |