• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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