summaryrefslogtreecommitdiff
path: root/chromium/components/vector_icons/vector_icons.gni
blob: e1a364810743c236111bacfff50be5e26bcbe335 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 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)

    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),
    ]
  }
}