Geoffrey Martin-Noble 4aeb2e60df Introduce a Bazel build configuration
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
2021-06-22 12:47:43 -07:00

44 lines
1.5 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
"""BUILD extensions for MLIR linalg generation."""
def genlinalg(name, linalggen, src, linalg_outs):
"""genlinalg() generates code from a tc spec file.
Args:
name: The name of the build rule for use in dependencies.
linalggen: The binary used to produce the output.
src: The tc spec file.
linalg_outs: A list of tuples (opts, out), where each opts is a string of
options passed to linalggen, and the out is the corresponding output file
produced.
"""
for (opts, out) in linalg_outs:
# All arguments to generate the output except output destination.
base_args = [
"$(location %s)" % linalggen,
"%s" % opts,
"$(location %s)" % src,
]
rule_suffix = "_".join(opts.replace("-", "_").replace("=", "_").split(" "))
# Rule to generate code using generated shell script.
native.genrule(
name = "%s_%s_genrule" % (name, rule_suffix),
srcs = [src],
outs = [out],
tools = [linalggen],
cmd = (" ".join(base_args)),
)
# List of opts that do not generate cc files.
hdrs = [f for (opts, f) in linalg_outs]
native.cc_library(
name = name,
hdrs = hdrs,
textual_hdrs = hdrs,
)