blob: f00c9cbd5a60be9b5b647636e25ede8d9541bae6 [file] [log] [blame]
# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Generates cross-language style definitions from json5 files. The output files
# will go under the generated file directory tree with the same path as each
# input file.
#
# For input format examples, see the *_test.json5 files which contain
# illustrations of each feature, as well as expected outputs in the
# corresponding *_test_expected.* files.
#
# Other targets should depend on one of these generated targets (where "foo"
# is the target name):
#
# foo_css
# CSS Variables
#
# foo_views
# Views generation for use with AshColorProvider
#
# foo_proto
# Protobuf message schema generation
#
# foo_protojson
# Protobuf JSON value format, contains actual color information
template("style_variable_generator") {
script_file = "//tools/style_variable_generator/main.py"
original_target_name = target_name
common_inputs = [
"//tools/style_variable_generator/base_generator.py",
"//tools/style_variable_generator/color.py",
]
if (defined(invoker.gen_css)) {
gen_css = invoker.gen_css
} else {
gen_css = true
}
if (defined(invoker.gen_views)) {
gen_views = invoker.gen_views
} else {
gen_views = true
}
if (gen_css) {
action("${target_name}_css") {
script = script_file
forward_variables_from(invoker,
[
"deps",
"sources",
])
inputs =
common_inputs + [
"//tools/style_variable_generator/css_generator.py",
"//tools/style_variable_generator/templates/css_generator.tmpl",
]
out_file = "$target_gen_dir/${original_target_name}.css"
outputs = [ out_file ]
args = [
"--generator=CSS",
"--out-file",
rebase_path(out_file, root_build_dir),
] + rebase_path(sources, root_build_dir)
}
}
if (gen_views) {
action("${target_name}_views_generator") {
script = script_file
forward_variables_from(invoker,
[
"deps",
"sources",
"cpp_namespace",
])
inputs = common_inputs + [
"//tools/style_variable_generator/views_generator.py",
"//tools/style_variable_generator/templates/views_generator_cc.tmpl",
"//tools/style_variable_generator/templates/views_generator_h.tmpl",
]
out_file_cc = "$target_gen_dir/${original_target_name}.cc"
out_file_h = "$target_gen_dir/${original_target_name}.h"
outputs = [
out_file_cc,
out_file_h,
]
args = [
"--generator=ViewsCC",
"--generator-option",
"cpp_namespace=$cpp_namespace",
"--out-file",
rebase_path(out_file_cc, root_build_dir),
"--generator=ViewsH",
"--out-file",
rebase_path(out_file_h, root_build_dir),
] + rebase_path(sources, root_build_dir)
}
component("${target_name}_views") {
sources = [
"$target_gen_dir/${original_target_name}.cc",
"$target_gen_dir/${original_target_name}.h",
]
deps = [
":${original_target_name}_views_generator",
"//base",
"//skia",
]
defines = [ "IS_${original_target_name}_IMPL" ]
}
if (defined(invoker.color_id_start_value)) {
action("${target_name}_color_mappings_generator") {
script = script_file
forward_variables_from(invoker,
[
"deps",
"sources",
"cpp_namespace",
"color_id_start_value",
])
inputs = common_inputs + [
"//tools/style_variable_generator/color_mappings_generator.py",
"//tools/style_variable_generator/templates/color_mappings_generator_cc.tmpl",
"//tools/style_variable_generator/templates/color_mappings_generator_h.tmpl",
]
out_file_cc =
"$target_gen_dir/${original_target_name}_color_mappings.cc"
out_file_h = "$target_gen_dir/${original_target_name}_color_mappings.h"
outputs = [
out_file_cc,
out_file_h,
]
args = [
"--generator-option",
"cpp_namespace=$cpp_namespace",
"--generator-option",
"color_id_start_value=$color_id_start_value",
"--generator=ColorMappingsCC",
"--out-file",
rebase_path(out_file_cc, root_build_dir),
"--generator=ColorMappingsH",
"--out-file",
rebase_path(out_file_h, root_build_dir),
] + rebase_path(sources, root_build_dir)
}
component("${target_name}_color_mappings") {
sources = [
"$target_gen_dir/${original_target_name}_color_mappings.cc",
"$target_gen_dir/${original_target_name}_color_mappings.h",
]
deps = [
":${original_target_name}_color_mappings_generator",
"//base",
"//skia",
"//ui/color",
]
defines = [ "IS_${original_target_name}_COLOR_MAPPINGS_IMPL" ]
}
}
}
action("${target_name}_json") {
script = script_file
forward_variables_from(invoker,
[
"deps",
"sources",
])
inputs = common_inputs + [
"//tools/style_variable_generator/proto_generator.py",
"//tools/style_variable_generator/templates/json_generator.tmpl",
]
out_file = "$target_gen_dir/${original_target_name}.json"
outputs = [ out_file ]
args = [
"--generator=json",
"--out-file",
rebase_path(out_file, root_build_dir),
] + rebase_path(sources, root_build_dir)
}
}