# Copyright 2017 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. # 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 # # icons (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.icons), "Need icons in $target_name listing the icon files.") assert( defined(invoker.icon_directory), "Need icon_directory in $target_name where the icons and templates live.") 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.icons, ".", invoker.icon_directory) + [ "//components/vector_icons/aggregate_vector_icons.py" ] outputs = [ output_cc, output_h, ] response_file_contents = rebase_path(invoker.icons, 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), ] } }