|  | # Copyright 2020 The IREE Authors | 
|  | # | 
|  | # Licensed under the Apache License v2.0 with LLVM Exceptions. | 
|  | # See https://llvm.org/LICENSE.txt for license information. | 
|  | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  |  | 
|  | # Rule for simple expansion of template files. This performs a simple | 
|  | # search over the template file for the keys in substitutions, | 
|  | # and replaces them with the corresponding values. | 
|  | # | 
|  | # Typical usage: | 
|  | #   load("//build_tools/bazel:template_rule.bzl", "template_rule") | 
|  | #   template_rule( | 
|  | #       name = "ExpandMyTemplate", | 
|  | #       src = "my.template", | 
|  | #       out = "my.txt", | 
|  | #       substitutions = { | 
|  | #         "$VAR1": "foo", | 
|  | #         "$VAR2": "bar", | 
|  | #       } | 
|  | #   ) | 
|  | # | 
|  | # Args: | 
|  | #   name: The name of the rule. | 
|  | #   template: The template file to expand | 
|  | #   out: The destination of the expanded file | 
|  | #   substitutions: A dictionary mapping strings to their substitutions | 
|  |  | 
|  | def template_rule_impl(ctx): | 
|  | ctx.actions.expand_template( | 
|  | template = ctx.file.src, | 
|  | output = ctx.outputs.out, | 
|  | substitutions = ctx.attr.substitutions, | 
|  | ) | 
|  |  | 
|  | template_rule = rule( | 
|  | attrs = { | 
|  | "src": attr.label( | 
|  | mandatory = True, | 
|  | allow_single_file = True, | 
|  | ), | 
|  | "substitutions": attr.string_dict(mandatory = True), | 
|  | "out": attr.output(mandatory = True), | 
|  | }, | 
|  | # output_to_genfiles is required for header files. | 
|  | output_to_genfiles = True, | 
|  | implementation = template_rule_impl, | 
|  | ) |