| # 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, | |
| ) |