| # 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) |
| } |
| } |