
This patch introduces configuration for a Bazel BUILD in a side directory in the monorepo. This is following the approval of https://github.com/llvm/llvm-www/blob/main/proposals/LP0002-BazelBuildConfiguration.md As detailed in the README, the Bazel BUILD is not supported by the community in general, and is maintained only by interested parties. It follows the requirements of the LLVM peripheral tier: https://llvm.org/docs/SupportPolicy.html#peripheral-tier. This is largely copied from https://github.com/google/llvm-bazel, with a few filepath tweaks and the addition of the README. Reviewed By: echristo, keith, dblaikie, kuhar Differential Revision: https://reviews.llvm.org/D90352
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
# This file is 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("/tools/build_rules/template_rule", "expand_header_template")
|
|
# 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,
|
|
)
|