
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
44 lines
1.5 KiB
Python
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,
|
|
)
|