1# Copyright (c) 2009-2021, Google LLC 2# All rights reserved. 3# 4# Use of this source code is governed by a BSD-style 5# license that can be found in the LICENSE file or at 6# https://developers.google.com/open-source/licenses/bsd 7 8load("//bazel:cc_proto_library.bzl", "cc_proto_library") 9load("//bazel:proto_library.bzl", "proto_library") 10 11_is_google3 = False 12 13def tmpl_cc_binary(name, gen, args, replacements = [], **kwargs): 14 srcs = [name + ".cc"] 15 native.genrule( 16 name = name + "_gen_srcs", 17 tools = [gen], 18 outs = srcs, 19 cmd = "$(location " + gen + ") " + " ".join(args) + " > $@", 20 ) 21 22 if _is_google3: 23 kwargs["malloc"] = "//base:system_malloc" 24 kwargs["features"] = ["-static_linking_mode"] 25 native.cc_binary( 26 name = name, 27 srcs = srcs, 28 **kwargs 29 ) 30 31def cc_optimizefor_proto_library(name, srcs, outs, optimize_for): 32 if len(srcs) != 1: 33 fail("Currently srcs must have exactly 1 element") 34 35 native.genrule( 36 name = name + "_gen_proto", 37 srcs = srcs, 38 outs = outs, 39 cmd = "cp $< $@ && chmod a+w $@ && echo 'option optimize_for = " + optimize_for + ";' >> $@", 40 ) 41 42 proto_library( 43 name = name + "_proto", 44 srcs = outs, 45 ) 46 47 cc_proto_library( 48 name = name, 49 deps = [":" + name + "_proto"], 50 ) 51 52def expand_suffixes(vals, suffixes): 53 ret = [] 54 for val in vals: 55 for suffix in suffixes: 56 ret.append(val + suffix) 57 return ret 58