1*b6fb3261SAndroid Build Coastguard Workerload("@rules_proto//proto:defs.bzl", "proto_library") 2*b6fb3261SAndroid Build Coastguard Workerload( 3*b6fb3261SAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf.bzl", 4*b6fb3261SAndroid Build Coastguard Worker "cc_proto_library", 5*b6fb3261SAndroid Build Coastguard Worker "proto_gen", 6*b6fb3261SAndroid Build Coastguard Worker "py_proto_library", 7*b6fb3261SAndroid Build Coastguard Worker) 8*b6fb3261SAndroid Build Coastguard Worker 9*b6fb3261SAndroid Build Coastguard Workerlicenses(["notice"]) 10*b6fb3261SAndroid Build Coastguard Worker 11*b6fb3261SAndroid Build Coastguard Workerfilegroup( 12*b6fb3261SAndroid Build Coastguard Worker name = "LICENSE", 13*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 14*b6fb3261SAndroid Build Coastguard Worker) 15*b6fb3261SAndroid Build Coastguard Worker 16*b6fb3261SAndroid Build Coastguard Worker# Map of all well known protos. 17*b6fb3261SAndroid Build Coastguard Worker# name => (include path, imports) 18*b6fb3261SAndroid Build Coastguard WorkerWELL_KNOWN_PROTO_MAP = { 19*b6fb3261SAndroid Build Coastguard Worker "any": ("google/protobuf/any.proto", []), 20*b6fb3261SAndroid Build Coastguard Worker "api": ( 21*b6fb3261SAndroid Build Coastguard Worker "google/protobuf/api.proto", 22*b6fb3261SAndroid Build Coastguard Worker [ 23*b6fb3261SAndroid Build Coastguard Worker "source_context", 24*b6fb3261SAndroid Build Coastguard Worker "type", 25*b6fb3261SAndroid Build Coastguard Worker ], 26*b6fb3261SAndroid Build Coastguard Worker ), 27*b6fb3261SAndroid Build Coastguard Worker "compiler_plugin": ( 28*b6fb3261SAndroid Build Coastguard Worker "google/protobuf/compiler/plugin.proto", 29*b6fb3261SAndroid Build Coastguard Worker ["descriptor"], 30*b6fb3261SAndroid Build Coastguard Worker ), 31*b6fb3261SAndroid Build Coastguard Worker "descriptor": ("google/protobuf/descriptor.proto", []), 32*b6fb3261SAndroid Build Coastguard Worker "duration": ("google/protobuf/duration.proto", []), 33*b6fb3261SAndroid Build Coastguard Worker "empty": ("google/protobuf/empty.proto", []), 34*b6fb3261SAndroid Build Coastguard Worker "field_mask": ("google/protobuf/field_mask.proto", []), 35*b6fb3261SAndroid Build Coastguard Worker "source_context": ("google/protobuf/source_context.proto", []), 36*b6fb3261SAndroid Build Coastguard Worker "struct": ("google/protobuf/struct.proto", []), 37*b6fb3261SAndroid Build Coastguard Worker "timestamp": ("google/protobuf/timestamp.proto", []), 38*b6fb3261SAndroid Build Coastguard Worker "type": ( 39*b6fb3261SAndroid Build Coastguard Worker "google/protobuf/type.proto", 40*b6fb3261SAndroid Build Coastguard Worker [ 41*b6fb3261SAndroid Build Coastguard Worker "any", 42*b6fb3261SAndroid Build Coastguard Worker "source_context", 43*b6fb3261SAndroid Build Coastguard Worker ], 44*b6fb3261SAndroid Build Coastguard Worker ), 45*b6fb3261SAndroid Build Coastguard Worker "wrappers": ("google/protobuf/wrappers.proto", []), 46*b6fb3261SAndroid Build Coastguard Worker} 47*b6fb3261SAndroid Build Coastguard Worker 48*b6fb3261SAndroid Build Coastguard WorkerRELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()] 49*b6fb3261SAndroid Build Coastguard Worker 50*b6fb3261SAndroid Build Coastguard Workergenrule( 51*b6fb3261SAndroid Build Coastguard Worker name = "link_proto_files", 52*b6fb3261SAndroid Build Coastguard Worker outs = RELATIVE_WELL_KNOWN_PROTOS, 53*b6fb3261SAndroid Build Coastguard Worker cmd = """ 54*b6fb3261SAndroid Build Coastguard Worker for i in $(OUTS); do 55*b6fb3261SAndroid Build Coastguard Worker f=$${i#$(@D)/} 56*b6fb3261SAndroid Build Coastguard Worker mkdir -p $(@D)/$${f%/*} 57*b6fb3261SAndroid Build Coastguard Worker ln -sf $(PROTOBUF_INCLUDE_PATH)/$$f $(@D)/$$f 58*b6fb3261SAndroid Build Coastguard Worker done 59*b6fb3261SAndroid Build Coastguard Worker """, 60*b6fb3261SAndroid Build Coastguard Worker) 61*b6fb3261SAndroid Build Coastguard Worker 62*b6fb3261SAndroid Build Coastguard Workercc_library( 63*b6fb3261SAndroid Build Coastguard Worker name = "protobuf", 64*b6fb3261SAndroid Build Coastguard Worker linkopts = ["-lprotobuf"], 65*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 66*b6fb3261SAndroid Build Coastguard Worker) 67*b6fb3261SAndroid Build Coastguard Worker 68*b6fb3261SAndroid Build Coastguard Workercc_library( 69*b6fb3261SAndroid Build Coastguard Worker name = "protobuf_headers", 70*b6fb3261SAndroid Build Coastguard Worker linkopts = ["-lprotobuf"], 71*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 72*b6fb3261SAndroid Build Coastguard Worker) 73*b6fb3261SAndroid Build Coastguard Worker 74*b6fb3261SAndroid Build Coastguard Workercc_library( 75*b6fb3261SAndroid Build Coastguard Worker name = "protoc_lib", 76*b6fb3261SAndroid Build Coastguard Worker linkopts = ["-lprotoc"], 77*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 78*b6fb3261SAndroid Build Coastguard Worker) 79*b6fb3261SAndroid Build Coastguard Worker 80*b6fb3261SAndroid Build Coastguard Workergenrule( 81*b6fb3261SAndroid Build Coastguard Worker name = "protoc", 82*b6fb3261SAndroid Build Coastguard Worker outs = ["protoc.bin"], 83*b6fb3261SAndroid Build Coastguard Worker cmd = "ln -s $$(which protoc) $@", 84*b6fb3261SAndroid Build Coastguard Worker executable = 1, 85*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 86*b6fb3261SAndroid Build Coastguard Worker) 87*b6fb3261SAndroid Build Coastguard Worker 88*b6fb3261SAndroid Build Coastguard Workercc_proto_library( 89*b6fb3261SAndroid Build Coastguard Worker name = "cc_wkt_protos", 90*b6fb3261SAndroid Build Coastguard Worker internal_bootstrap_hack = 1, 91*b6fb3261SAndroid Build Coastguard Worker protoc = ":protoc", 92*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 93*b6fb3261SAndroid Build Coastguard Worker) 94*b6fb3261SAndroid Build Coastguard Worker 95*b6fb3261SAndroid Build Coastguard Workerproto_gen( 96*b6fb3261SAndroid Build Coastguard Worker name = "protobuf_python_genproto", 97*b6fb3261SAndroid Build Coastguard Worker includes = ["."], 98*b6fb3261SAndroid Build Coastguard Worker protoc = "@com_google_protobuf//:protoc", 99*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 100*b6fb3261SAndroid Build Coastguard Worker) 101*b6fb3261SAndroid Build Coastguard Worker 102*b6fb3261SAndroid Build Coastguard Workerpy_library( 103*b6fb3261SAndroid Build Coastguard Worker name = "protobuf_python", 104*b6fb3261SAndroid Build Coastguard Worker srcs_version = "PY3", 105*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 106*b6fb3261SAndroid Build Coastguard Worker) 107*b6fb3261SAndroid Build Coastguard Worker 108*b6fb3261SAndroid Build Coastguard Worker[proto_library( 109*b6fb3261SAndroid Build Coastguard Worker name = proto[0] + "_proto", 110*b6fb3261SAndroid Build Coastguard Worker srcs = [proto[1][0]], 111*b6fb3261SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 112*b6fb3261SAndroid Build Coastguard Worker deps = [dep + "_proto" for dep in proto[1][1]], 113*b6fb3261SAndroid Build Coastguard Worker) for proto in WELL_KNOWN_PROTO_MAP.items()] 114