| # 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 | |
| """Generates FlatBuffer source files with flatcc.""" | |
| def iree_flatbuffer_c_library( | |
| name, | |
| srcs, | |
| flatcc_args = ["--common", "--reader"], | |
| testonly = False, | |
| **kwargs): | |
| flatcc = "@com_github_dvidelabs_flatcc//:flatcc" | |
| flags = [ | |
| "-o$(RULEDIR)", | |
| ] + flatcc_args | |
| out_stem = "%s" % (srcs[0].replace(".fbs", "")) | |
| outs = [] | |
| for arg in flags: | |
| if arg == "--reader": | |
| outs.append("%s_reader.h" % (out_stem)) | |
| if arg == "--builder": | |
| outs.append("%s_builder.h" % (out_stem)) | |
| if arg == "--verifier": | |
| outs.append("%s_verifier.h" % (out_stem)) | |
| if arg == "--json": | |
| outs.append("%s_json_parser.h" % (out_stem)) | |
| outs.append("%s_json_printer.h" % (out_stem)) | |
| native.genrule( | |
| name = name + "_gen", | |
| srcs = srcs, | |
| outs = outs, | |
| tools = [flatcc], | |
| cmd = "$(location %s) %s $(SRCS)" % (flatcc, " ".join(flags)), | |
| testonly = testonly, | |
| ) | |
| native.cc_library( | |
| name = name, | |
| hdrs = outs, | |
| testonly = testonly, | |
| **kwargs | |
| ) |