| # Copyright (c) 2009-2021, Google LLC | |
| # All rights reserved. | |
| # | |
| # Use of this source code is governed by a BSD-style | |
| # license that can be found in the LICENSE file or at | |
| # https://developers.google.com/open-source/licenses/bsd | |
| load("@rules_cc//cc:cc_binary.bzl", "cc_binary") | |
| load("//bazel:cc_proto_library.bzl", "cc_proto_library") | |
| load("//bazel:proto_library.bzl", "proto_library") | |
| _is_google3 = False | |
| def tmpl_cc_binary(name, gen, args, replacements = [], **kwargs): | |
| srcs = [name + ".cc"] | |
| native.genrule( | |
| name = name + "_gen_srcs", | |
| tools = [gen], | |
| outs = srcs, | |
| cmd = "$(location " + gen + ") " + " ".join(args) + " > $@", | |
| ) | |
| if _is_google3: | |
| kwargs["malloc"] = "@bazel_tools//tools/cpp:malloc" | |
| kwargs["features"] = ["-static_linking_mode"] | |
| cc_binary( | |
| name = name, | |
| srcs = srcs, | |
| **kwargs | |
| ) | |
| def cc_optimizefor_proto_library(name, srcs, outs, optimize_for): | |
| if len(srcs) != 1: | |
| fail("Currently srcs must have exactly 1 element") | |
| native.genrule( | |
| name = name + "_gen_proto", | |
| srcs = srcs, | |
| outs = outs, | |
| cmd = "cp $< $@ && chmod a+w $@ && echo 'option optimize_for = " + optimize_for + ";' >> $@", | |
| ) | |
| proto_library( | |
| name = name + "_proto", | |
| srcs = outs, | |
| ) | |
| cc_proto_library( | |
| name = name, | |
| deps = [":" + name + "_proto"], | |
| ) | |
| def expand_suffixes(vals, suffixes): | |
| ret = [] | |
| for val in vals: | |
| for suffix in suffixes: | |
| ret.append(val + suffix) | |
| return ret |