blob: cdf6c33a30a325550891f72d9e8fb7837cf58dce [file] [log] [blame]
# 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.
# Generates the FeatureProviders files for extension features files.
# The following variables are required:
# sources: The features.json files to use.
# feature_class: The name of the feature class to generate, e.g. APIFeature.
# provider_class: The name of the provider class to generate, e.g.
# APIFeatureProvider.
template("json_features") {
assert(defined(invoker.sources),
"\"sources\" must be defined for the $target_name template.")
assert(defined(invoker.feature_class),
"\"feature_class\" must be defined for the $target_name template.")
assert(defined(invoker.provider_class),
"\"provider_class\" must be defined for the $target_name template.")
feature_class = invoker.feature_class
provider_class = invoker.provider_class
compiler_root = "//tools/json_schema_compiler"
base_filename = target_name
action_name = "${target_name}_json_features"
generated_files = [
"$target_gen_dir/$base_filename.cc",
"$target_gen_dir/$base_filename.h",
]
action(action_name) {
sources = invoker.sources
script = "$compiler_root/feature_compiler.py"
inputs = [
"$compiler_root/code.py",
"$compiler_root/json_parse.py",
]
outputs = generated_files
rebased = rebase_path(sources, root_build_dir)
args = [
".",
"$feature_class",
"$provider_class",
rebase_path(target_gen_dir, root_build_dir),
"$base_filename",
] + rebased
}
source_set(target_name) {
sources = generated_files
public_deps = [
":$action_name",
]
}
}