# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Creates an action that aggregates vector icon files (.icon) into a C++ file.
# In addition to running the action, the outputs should be added to another
# target's sources for compilation.
#
# Parameters
#
# sources (required)
# A list of icon filenames to use as inputs.
#
# icon_directory (required)
# The path component of the location of the icons, relative to the current
# directory. For example, if the invoking BUILD file exists in //foo/bar
# and the icons are in //foo/bar/vector_icons/, then icon_directory should
# be set to "vector_icons". There must also be template files in this
# directory.
#
# Example
#
# See BUILD.gn in this directory (//components/vector_icons/) for an example.
template("aggregate_vector_icons") {
assert(defined(invoker.sources),
"Need sources in $target_name listing the icon files.")
assert(
defined(invoker.icon_directory),
"Need icon_directory in $target_name where the icons and templates live.")
public_deps = [ "//base" ]
action(target_name) {
visibility = [ ":*" ]
script = "//components/vector_icons/aggregate_vector_icons.py"
output_cc = "$target_gen_dir/vector_icons.cc"
output_h = "$target_gen_dir/vector_icons.h"
templates = [
"vector_icons.cc.template",
"vector_icons.h.template",
]
inputs =
rebase_path(templates + invoker.sources, ".", invoker.icon_directory) +
[ "//components/vector_icons/aggregate_vector_icons.py" ]
outputs = [
output_cc,
output_h,
]
response_file_contents =
rebase_path(invoker.sources, root_build_dir, invoker.icon_directory)
args = [
"--working_directory=" +
rebase_path(invoker.icon_directory, root_build_dir),
"--file_list={{response_file_name}}",
"--output_cc=" + rebase_path(output_cc, root_build_dir),
"--output_h=" + rebase_path(output_h, root_build_dir),
]
}
}