OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # Generates the FeatureProviders files for extension features files. | 5 # Generates the FeatureProviders files for extension features files. |
6 # The following variables are required: | 6 # The following variables are required: |
7 # sources: The features.json files to use. | 7 # sources: The features.json files to use. |
8 # feature_class: The name of the feature class to generate, e.g. APIFeature. | 8 # feature_class: The name of the feature class to generate, e.g. APIFeature. |
9 # provider_class: The name of the provider class to generate, e.g. | 9 # provider_class: The name of the provider class to generate, e.g. |
10 # APIFeatureProvider. | 10 # APIFeatureProvider. |
| 11 # deps/public_deps/visibility: normal meaning |
11 template("json_features") { | 12 template("json_features") { |
12 assert(defined(invoker.sources), | 13 assert(defined(invoker.sources), |
13 "\"sources\" must be defined for the $target_name template.") | 14 "\"sources\" must be defined for the $target_name template.") |
14 assert(defined(invoker.feature_class), | 15 assert(defined(invoker.feature_class), |
15 "\"feature_class\" must be defined for the $target_name template.") | 16 "\"feature_class\" must be defined for the $target_name template.") |
16 assert(defined(invoker.provider_class), | 17 assert(defined(invoker.provider_class), |
17 "\"provider_class\" must be defined for the $target_name template.") | 18 "\"provider_class\" must be defined for the $target_name template.") |
18 feature_class = invoker.feature_class | 19 feature_class = invoker.feature_class |
19 provider_class = invoker.provider_class | 20 provider_class = invoker.provider_class |
20 | 21 |
21 compiler_root = "//tools/json_schema_compiler" | 22 compiler_root = "//tools/json_schema_compiler" |
22 base_filename = target_name | 23 base_filename = target_name |
23 action_name = "${target_name}_json_features" | 24 action_name = "${target_name}_json_features" |
| 25 source_set_name = target_name |
24 generated_files = [ | 26 generated_files = [ |
25 "$target_gen_dir/$base_filename.cc", | 27 "$target_gen_dir/$base_filename.cc", |
26 "$target_gen_dir/$base_filename.h", | 28 "$target_gen_dir/$base_filename.h", |
27 ] | 29 ] |
28 | 30 |
29 action(action_name) { | 31 action(action_name) { |
| 32 visibility = [ ":$source_set_name" ] |
30 sources = invoker.sources | 33 sources = invoker.sources |
31 script = "$compiler_root/feature_compiler.py" | 34 script = "$compiler_root/feature_compiler.py" |
32 inputs = [ | 35 inputs = [ |
33 "$compiler_root/code.py", | 36 "$compiler_root/code.py", |
34 "$compiler_root/json_parse.py", | 37 "$compiler_root/json_parse.py", |
35 ] | 38 ] |
36 outputs = generated_files | 39 outputs = generated_files |
37 rebased = rebase_path(sources, root_build_dir) | 40 rebased = rebase_path(sources, root_build_dir) |
38 args = [ | 41 args = [ |
39 ".", | 42 ".", |
40 "$feature_class", | 43 "$feature_class", |
41 "$provider_class", | 44 "$provider_class", |
42 rebase_path(target_gen_dir, root_build_dir), | 45 rebase_path(target_gen_dir, root_build_dir), |
43 "$base_filename", | 46 "$base_filename", |
44 ] + rebased | 47 ] + rebased |
| 48 |
| 49 # Add the deps in for the action as well, in case the deps generate the |
| 50 # inputs used by the action. |
| 51 forward_variables_from(invoker, |
| 52 [ |
| 53 "deps", |
| 54 "public_deps", |
| 55 ]) |
| 56 |
| 57 # Append a dependency on the extensions system. Headers in this target |
| 58 # are included by the feature compiler automatically. |
| 59 if (!defined(deps)) { |
| 60 deps = [] |
| 61 } |
| 62 deps += [ "//extensions/common" ] |
45 } | 63 } |
46 | 64 |
47 source_set(target_name) { | 65 source_set(target_name) { |
48 sources = generated_files | 66 sources = generated_files |
49 public_deps = [ | 67 forward_variables_from(invoker, |
50 ":$action_name", | 68 [ |
51 ] | 69 "deps", |
| 70 "public_deps", |
| 71 "visibility", |
| 72 ]) |
| 73 if (!defined(public_deps)) { |
| 74 public_deps = [] |
| 75 } |
| 76 public_deps += [ ":$action_name" ] |
52 } | 77 } |
53 } | 78 } |
OLD | NEW |