File: wayland_templater.gni

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (71 lines) | stat: -rw-r--r-- 2,608 bytes parent folder | download | duplicates (9)
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
62
63
64
65
66
67
68
69
70
71
# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# A wayland templater takes one or more |protocols| and processes its
# |sources| so as to instantiate a template for fuzzing wayland.
# The output of the wayland source will be the input's path, rebased
# under the gen/ directory and with the .tmpl suffix removed.
#
# This templater is used for all kinds of files (i.e. more than just
# c++), so we do not provide a convenient source_set target to depend
# on. Instead you must manually depend on the outputs like:
#
# wayland_templater("foo_tmpl") {
#   ...
# }
#
# source_set("foo") {
#   sources = get_target_outputs(":foo_tmpl")
#   deps = [
#     ":foo_tmpl",
#   ]
# }
#
# If needed, the user can set 'script_override=foo.py' to use a different
# templating script to the default (wayland_templater.py).

template("wayland_templater") {
  assert(defined(invoker.sources), "Need sources for wayland_templater")
  assert(defined(invoker.protocols), "Need protocols for wayland_templater")

  # Process the inputs to determine the output:
  # "//a/b/c.xyz.tmpl" -> "gen/a/b/c.xyz"
  template_outputs = []
  foreach(src, invoker.sources) {
    dir = get_path_info(src, "dir")
    name = get_path_info(src, "name")
    template_outputs += [ "${target_gen_dir}/${dir}/${name}" ]
  }

  templater_script_name = "wayland_templater.py"
  if (defined(invoker.script_override)) {
    templater_script_name = invoker.script_override
  }

  # Jinja2 doesnt like having ".." in the target path, so we give it the
  # source-tree's path rather than the build-directory's relative path (which
  # usually contains "..").
  build_to_src_path = rebase_path("//", root_build_dir)
  src_path_to_inputs = rebase_path(invoker.sources, "//")
  build_path_to_outputs = rebase_path(template_outputs, root_build_dir)
  build_path_to_protocols = rebase_path(invoker.protocols, root_build_dir)

  action(target_name) {
    script = "//third_party/blink/renderer/build/scripts/run_with_pythonpath.py"
    sources = [
                script,
                templater_script_name,
              ] + invoker.sources + invoker.protocols
    outputs = template_outputs
    args = [
             "-I",
             rebase_path("//third_party", root_build_dir),
             rebase_path(templater_script_name, root_build_dir),
             "--directory",
             build_to_src_path,
             "--input",
           ] + src_path_to_inputs + [ "--output" ] + build_path_to_outputs +
           [ "--spec" ] + build_path_to_protocols
  }
}