kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/extractors/BUILD (about) 1 load("@bazel_skylib//:bzl_library.bzl", "bzl_library") 2 load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain") 3 load("@rules_java//java:defs.bzl", "java_library") 4 load(":extractors.bzl", "extractor_action") 5 6 package(default_visibility = ["//visibility:public"]) 7 8 exports_files(["extractors.bzl"]) 9 10 # Clone of default Java proto toolchain with "annotate_code" enabled for 11 # cross-language metadata file generation. 12 # 13 # --proto_toolchain_for_java=@io_kythe//kythe/extractors:java_proto_toolchain 14 proto_lang_toolchain( 15 name = "java_proto_toolchain", 16 command_line = "--java_out=annotate_code:$(OUT)", 17 runtime = ":protobuf_java", 18 ) 19 20 # Clone of the java protobuf runtime that also exposes jsr250 so the generated 21 # proto classes with our inserted annotations can be compiled. 22 java_library( 23 name = "protobuf_java", 24 exports = [ 25 "@com_google_protobuf//:protobuf_java", 26 "@maven//:org_apache_tomcat_tomcat_annotations_api", 27 ], 28 ) 29 30 # Clone of default C++ proto toolchain with "annotate_headers" enabled for 31 # cross-language metadata file generation. 32 # 33 # In order to work around the difficulty of plumbing additional files through 34 # the C++ rules, we use a plugin which embeds the metadata generated by protoc 35 # directly at the end of the respective headers. 36 # 37 # --proto_toolchain_for_cc=@io_kythe//kythe/extractors:cc_proto_toolchain 38 proto_lang_toolchain( 39 name = "cc_proto_toolchain", 40 command_line = "--PLUGIN_C++_out=:$(OUT)", 41 plugin = "//kythe/cxx/tools:proto_metadata_plugin", 42 runtime = "@com_google_protobuf//:protobuf_nowkt", 43 ) 44 45 # Alternatively, if the plugin doesn't work you can use the default code generator 46 # to output the metadata into a separate file. This needs to be invoked with: 47 # 48 # bazel build \ 49 # --proto_toolchain_for_cc=@io_kythe//kythe/extractor:cc_native_proto_toolchain \ 50 # --cc_proto_library_header_suffixes=.pb.h,.pb.h.meta 51 proto_lang_toolchain( 52 name = "cc_native_proto_toolchain", 53 command_line = "--cpp_out=annotate_headers,annotation_pragma_name=kythe_metadata,annotation_guard_name=KYTHE_IS_RUNNING:$(OUT)", 54 runtime = "@com_google_protobuf//:protobuf_nowkt", 55 ) 56 57 extractor_action( 58 name = "extract_kzip_cxx", 59 args = [ 60 "$(EXTRA_ACTION_FILE)", 61 "$(output $(ACTION_ID).cxx.kzip)", 62 "$(location //external:vnames_config)", 63 ], 64 data = ["//external:vnames_config"], 65 extractor = "@io_kythe//kythe/cxx/extractor:cxx_extractor_bazel", 66 mnemonics = ["CppCompile"], 67 output = "$(ACTION_ID).cxx.kzip", 68 ) 69 70 extractor_action( 71 name = "extract_kzip_java", 72 args = [ 73 "$(EXTRA_ACTION_FILE)", 74 "$(output $(ACTION_ID).java.kzip)", 75 "$(location //external:vnames_config)", 76 ], 77 data = ["//external:vnames_config"], 78 extractor = "@io_kythe//kythe/java/com/google/devtools/kythe/extractors/java/bazel:java_extractor", 79 mnemonics = ["Javac"], 80 output = "$(ACTION_ID).java.kzip", 81 ) 82 83 # We only support Bazel rules_go 0.19.0 and up. 84 extractor_action( 85 name = "extract_kzip_go", 86 args = [ 87 "-corpus kythe.io", 88 "$(EXTRA_ACTION_FILE)", 89 "$(output $(ACTION_ID).go.kzip)", 90 "$(location //external:vnames_config)", 91 ], 92 data = ["//external:vnames_config"], 93 extractor = "@io_kythe//kythe/go/extractors/cmd/bazel:bazel_go_extractor", 94 mnemonics = ["GoCompilePkg"], 95 output = "$(ACTION_ID).go.kzip", 96 ) 97 98 extractor_action( 99 name = "extract_kzip_jvm", 100 args = [ 101 "$(EXTRA_ACTION_FILE)", 102 "$(output $(ACTION_ID).jvm.kzip)", 103 "$(location //external:vnames_config)", 104 ], 105 data = ["//external:vnames_config"], 106 extractor = "@io_kythe//kythe/java/com/google/devtools/kythe/extractors/jvm/bazel:bazel_jvm_extractor", 107 mnemonics = ["JavaIjar"], 108 output = "$(ACTION_ID).jvm.kzip", 109 ) 110 111 extractor_action( 112 name = "extract_kzip_objc", 113 args = [ 114 "$(EXTRA_ACTION_FILE)", 115 "$(output $(ACTION_ID).objc.kzip)", 116 "$(location //external:vnames_config)", 117 "$(location //third_party/bazel:get_devdir)", 118 "$(location //third_party/bazel:get_sdkroot)", 119 ], 120 data = [ 121 "//external:vnames_config", 122 "//third_party/bazel:get_devdir", 123 "//third_party/bazel:get_sdkroot", 124 ], 125 extractor = "@io_kythe//kythe/cxx/extractor:objc_extractor_bazel", 126 mnemonics = ["ObjcCompile"], 127 output = "$(ACTION_ID).objc.kzip", 128 ) 129 130 extractor_action( 131 name = "extract_typescript_kzip", 132 args = [ 133 "--extra_action=$(EXTRA_ACTION_FILE)", 134 "--include='\\.(js|json|tsx?|d\\.ts)$$'", 135 "--language=typescript", 136 "--output=$(output $(ACTION_ID).typescript.kzip)", 137 "--rules=$(location //external:vnames_config)", 138 "--scoped=true", 139 "--source='\\.ts$$'", 140 ], 141 data = ["//external:vnames_config"], 142 extractor = "@io_kythe//kythe/go/extractors/cmd/bazel:extract_kzip", 143 mnemonics = [ 144 "TypeScriptCompile", 145 "AngularTemplateCompile", 146 ], 147 output = "$(ACTION_ID).typescript.kzip", 148 ) 149 150 extractor_action( 151 name = "extract_kzip_protobuf", 152 args = [ 153 "--extra_action=$(EXTRA_ACTION_FILE)", 154 "--language=protobuf", 155 "--rules=$(location //external:vnames_config)", 156 "--output=$(output $(ACTION_ID).protobuf.kzip)", 157 ], 158 data = ["//external:vnames_config"], 159 extractor = "//kythe/go/extractors/proto:extract_proto_kzip", 160 mnemonics = ["GenProtoDescriptorSet"], 161 output = "$(ACTION_ID).protobuf.kzip", 162 ) 163 164 bzl_library( 165 name = "extractors_bzl", 166 srcs = ["extractors.bzl"], 167 )