[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / utils / bazel / llvm-project-overlay / llvm / template_rule.bzl
blobb453e7e4d8cbcecc4ae1602a96d429461c9ff626
1 # This file is licensed under the Apache License v2.0 with LLVM Exceptions.
2 # See https://llvm.org/LICENSE.txt for license information.
3 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5 # Rule for simple expansion of template files. This performs a simple
6 # search over the template file for the keys in substitutions,
7 # and replaces them with the corresponding values.
9 # Typical usage:
10 #   load("/tools/build_rules/template_rule", "expand_header_template")
11 #   template_rule(
12 #       name = "ExpandMyTemplate",
13 #       src = "my.template",
14 #       out = "my.txt",
15 #       substitutions = {
16 #         "$VAR1": "foo",
17 #         "$VAR2": "bar",
18 #       }
19 #   )
21 # Args:
22 #   name: The name of the rule.
23 #   template: The template file to expand
24 #   out: The destination of the expanded file
25 #   substitutions: A dictionary mapping strings to their substitutions
27 def template_rule_impl(ctx):
28     ctx.actions.expand_template(
29         template = ctx.file.src,
30         output = ctx.outputs.out,
31         substitutions = ctx.attr.substitutions,
32     )
34 template_rule = rule(
35     attrs = {
36         "src": attr.label(
37             mandatory = True,
38             allow_single_file = True,
39         ),
40         "substitutions": attr.string_dict(mandatory = True),
41         "out": attr.output(mandatory = True),
42     },
43     # output_to_genfiles is required for header files.
44     output_to_genfiles = True,
45     implementation = template_rule_impl,