Joshua Haberman | 4bd34da | 2020-11-04 20:16:47 -0800 | [diff] [blame^] | 1 | |
| 2 | def 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 | |
| 25 | def 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 | ) |