blob: 402a523db2da242e84be702259a3943a467c018d [file] [log] [blame]
Joshua Haberman4bd34da2020-11-04 20:16:47 -08001
2def tmpl_cc_binary(name, srcs, replacements = [], **kwargs):
3 if len(srcs) != 1:
4 fail("Currently srcs must have exactly 1 element")
5 src = srcs[0]
6 if not src.endswith(".tmpl"):
7 fail("srcs of tmpl_cc_binary must end with .tmpl")
8 outs = [name + "_" + src[:-5]]
9 sed_cmds = ["s,{},{},g".format(k, v) for k, v in replacements.items()]
10 cmd = "sed -e '{}' $< > $@".format("; ".join(sed_cmds))
11
12 native.genrule(
13 name = name + "_gen_srcs",
14 srcs = [src],
15 outs = outs,
16 cmd = cmd,
17 )
18
19 native.cc_binary(
20 name = name,
21 srcs = outs,
22 **kwargs,
23 )
24
25def cc_lite_proto_library(name, srcs, outs):
26 if len(srcs) != 1:
27 fail("Currently srcs must have exactly 1 element")
28
29 native.genrule(
30 name = name + "_gen_proto",
31 srcs = srcs,
32 outs = outs,
33 cmd = "cp $< $@ && chmod a+w $@ && echo 'option optimize_for = LITE_RUNTIME;' >> $@",
34 )
35
36 native.proto_library(
37 name = name + "_proto",
38 srcs = outs,
39 )
40
41 native.cc_proto_library(
42 name = name,
43 deps = [":" + name + "_proto"],
44 )