1load( 2 "//bazel:generate_objc.bzl", 3 "generate_objc", 4 "generate_objc_hdrs", 5 "generate_objc_non_arc_srcs", 6 "generate_objc_srcs", 7) 8load("//bazel:protobuf.bzl", "well_known_proto_libs") 9 10def objc_grpc_library(name, deps, srcs = [], use_well_known_protos = False, **kwargs): 11 """Generates messages and/or service stubs for given proto_library and all transitively dependent proto files 12 13 Args: 14 name: name of target 15 deps: a list of proto_library targets that needs to be compiled 16 srcs: a list of labels to proto files with service stubs to be generated, 17 labels specified must include service stubs; otherwise Bazel will complain about srcs being empty 18 use_well_known_protos: whether to use the well known protos defined in 19 @com_google_protobuf//src/google/protobuf, default to false 20 **kwargs: other arguments 21 """ 22 objc_grpc_library_name = "_" + name + "_objc_grpc_library" 23 24 generate_objc( 25 name = objc_grpc_library_name, 26 srcs = srcs, 27 deps = deps, 28 use_well_known_protos = use_well_known_protos, 29 **kwargs 30 ) 31 32 generate_objc_hdrs( 33 name = objc_grpc_library_name + "_hdrs", 34 src = ":" + objc_grpc_library_name, 35 ) 36 37 generate_objc_non_arc_srcs( 38 name = objc_grpc_library_name + "_non_arc_srcs", 39 src = ":" + objc_grpc_library_name, 40 ) 41 42 arc_srcs = None 43 if len(srcs) > 0: 44 generate_objc_srcs( 45 name = objc_grpc_library_name + "_srcs", 46 src = ":" + objc_grpc_library_name, 47 ) 48 arc_srcs = [":" + objc_grpc_library_name + "_srcs"] 49 50 native.objc_library( 51 name = name, 52 hdrs = [":" + objc_grpc_library_name + "_hdrs"], 53 non_arc_srcs = [":" + objc_grpc_library_name + "_non_arc_srcs"], 54 srcs = arc_srcs, 55 defines = [ 56 "GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=0", 57 "GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO=0", 58 ], 59 includes = [ 60 "_generated_protos", 61 "src/objective-c", 62 ], 63 deps = [ 64 "@com_github_grpc_grpc//src/objective-c:proto_objc_rpc", 65 "@com_google_protobuf//:protobuf_objc", 66 ], 67 **kwargs 68 ) 69