blob: 9865bc734d3930398ba785ee9926d097a2280686 [file] [log] [blame]
Jorge Canizales4bc49052015-07-01 14:18:04 -07001
2def _lower_underscore_to_upper_camel(str):
3 humps = []
4 for hump in str.split('_'):
5 humps += [hump[0].upper() + hump[1:]]
6 return "".join(humps)
7
8def objc_grpc_library(name, srcs, visibility=None):
9 basename = srcs[0].split('/')[-1]
10 filename = basename[:-6] # remove .proto suffix
11 filename = _lower_underscore_to_upper_camel(filename)
12
13 protoc_command = "protoc -I . "
14 srcs_params = ""
15 for src in srcs:
16 srcs_params += " $(location %s)" % (src)
17
18 # Messages
19 protoc_messages_flags = "--objc_out=$(GENDIR)"
20 native.genrule(
21 name = name + "_mesages_codegen",
22 srcs = srcs,
23 outs = [
24 filename + ".pbobjc.h",
25 filename + ".pbobjc.m",
26 ],
27 cmd = protoc_command + protoc_messages_flags + srcs_params,
28 )
29 native.objc_library(
30 name = name + "_messages",
31 hdrs = [
32 ":" + filename + ".pbobjc.h",
33 ],
34 includes = ["."],
35 non_arc_srcs = [
36 ":" + filename + ".pbobjc.m",
37 ],
38 deps = [
39 "//external:protobuf_objc",
40 ],
41 )
42
43 # Services
44 protoc_services_flags = "--grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(location //external:grpc_protoc_plugin_objc)"
45 native.genrule(
46 name = name + "_codegen",
47 srcs = srcs + ["//external:grpc_protoc_plugin_objc"],
48 outs = [
49 filename + ".pbrpc.h",
50 filename + ".pbrpc.m",
51 ],
52 cmd = protoc_command + protoc_services_flags + srcs_params,
53 )
54 native.objc_library(
55 name = name,
56 hdrs = [
57 ":" + filename + ".pbrpc.h",
58 ],
59 includes = ["."],
60 srcs = [
61 ":" + filename + ".pbrpc.m",
62 ],
63 deps = [
64 ":" + name + "_messages",
65 "//external:proto_objc_rpc",
66 ],
67 visibility = visibility,
68 )