kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/release/release.BUILD (about) 1 load(":extractors.bzl", "extractor_action") 2 load(":vnames.bzl", "construct_vnames_config") 3 4 package(default_visibility = ["//visibility:public"]) 5 6 exports_files(glob([ 7 "LICENSE", 8 "extractors/*", 9 "indexers/*", 10 "proto/*", 11 "tools/*", 12 ])) 13 14 config_setting( 15 name = "assign_external_projects_to_separate_corpora", 16 values = { 17 "define": "kythe_assign_external_projects_to_separate_corpora=true", 18 }, 19 ) 20 21 construct_vnames_config( 22 name = "vnames_config", 23 srcs = select({ 24 "//conditions:default": [ 25 # by default, the simple vname rules are used, which map everything 26 # to the corpus set via `--define kythe_corpus=<my corpus>`. 27 "simple_vnames.json", 28 ], 29 ":assign_external_projects_to_separate_corpora": [ 30 "vnames.cxx.json", 31 "vnames.go.json", 32 "vnames.java.json", 33 "vnames.json", 34 ], 35 }), 36 ) 37 38 # Clone of default Java proto toolchain with "annotate_code" enabled for 39 # cross-language metadata file generation. 40 proto_lang_toolchain( 41 name = "java_proto_toolchain", 42 command_line = "--java_out=annotate_code,shared,immutable:$(OUT)", 43 runtime = ":protobuf", 44 ) 45 46 java_import( 47 name = "jsr250", 48 jars = ["jsr250-api-1.0.jar"], 49 ) 50 51 java_library( 52 name = "protobuf", 53 visibility = ["//visibility:private"], 54 exports = [ 55 ":jsr250", 56 "@com_google_protobuf//:protobuf_java", 57 ], 58 runtime_deps = [ 59 "@com_google_protobuf//:protobuf_java", 60 ], 61 ) 62 63 # Clone of default C++ proto toolchain with "annotate_headers" enabled for 64 # cross-language metadata file generation. 65 proto_lang_toolchain( 66 name = "cc_proto_toolchain", 67 command_line = "--$(PLUGIN_OUT)=:$(OUT)", 68 plugin = ":cc_proto_metadata_plugin", 69 runtime = "@com_google_protobuf//:protobuf_nowkt", 70 ) 71 72 # Alternatively, if the plugin doesn't work you can use the default code generator 73 # to output the metadata into a separate file. This needs to be invoked with: 74 # 75 # bazel build \ 76 # --proto_toolchain_for_cc=@io_kythe//kythe/extractor:cc_native_proto_toolchain \ 77 # --cc_proto_library_header_suffixes=.pb.h,.pb.h.meta 78 proto_lang_toolchain( 79 name = "cc_native_proto_toolchain", 80 command_line = "--cpp_out=annotate_headers,annotation_pragma_name=kythe_metadata,annotation_guard_name=KYTHE_IS_RUNNING:$(OUT)", 81 runtime = "@com_google_protobuf//:protobuf_nowkt", 82 ) 83 84 filegroup( 85 name = "cc_proto_metadata_plugin", 86 srcs = ["tools/cc_proto_metadata_plugin"], 87 ) 88 89 filegroup( 90 name = "bazel_cxx_extractor", 91 srcs = ["extractors/bazel_cxx_extractor"], 92 ) 93 94 java_binary( 95 name = "bazel_java_extractor", 96 # If the code being run against does annotation processing, the extractor loads and executes those 97 # annotation processors during compilation, and that code could use internal APIs that require 98 # additional --add-exports. 99 jvm_flags = [ 100 "--add-exports=jdk.internal.opt/jdk.internal.opt=ALL-UNNAMED", 101 "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 102 "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", 103 "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", 104 "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", 105 "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", 106 ], 107 main_class = "com.google.devtools.kythe.extractors.java.bazel.JavaExtractor", 108 runtime_deps = [ 109 "extractors/bazel_java_extractor.jar", 110 "jsr250-api-1.0.jar", 111 ], 112 ) 113 114 java_binary( 115 name = "bazel_jvm_extractor", 116 # If the code being run against does annotation processing, the extractor loads and executes those 117 # annotation processors during compilation, and that code could use internal APIs that require 118 # additional --add-exports. 119 jvm_flags = [ 120 "--add-exports=jdk.internal.opt/jdk.internal.opt=ALL-UNNAMED", 121 "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 122 "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", 123 "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", 124 "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", 125 "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", 126 ], 127 main_class = "com.google.devtools.kythe.extractors.jvm.bazel.BazelJvmExtractor", 128 runtime_deps = ["extractors/bazel_jvm_extractor.jar"], 129 ) 130 131 filegroup( 132 name = "bazel_go_extractor", 133 srcs = ["extractors/bazel_go_extractor"], 134 ) 135 136 filegroup( 137 name = "bazel_extract_kzip", 138 srcs = ["extractors/bazel_extract_kzip"], 139 ) 140 141 filegroup( 142 name = "bazel_proto_extractor", 143 srcs = ["extractors/bazel_proto_extractor"], 144 ) 145 146 extractor_action( 147 name = "extract_kzip_cxx", 148 args = [ 149 "$(EXTRA_ACTION_FILE)", 150 "$(output $(ACTION_ID).cxx.kzip)", 151 "$(location :vnames_config)", 152 ], 153 data = [":vnames_config"], 154 extractor = ":bazel_cxx_extractor", 155 mnemonics = ["CppCompile"], 156 output = "$(ACTION_ID).cxx.kzip", 157 ) 158 159 extractor_action( 160 name = "extract_kzip_java", 161 args = [ 162 "$(EXTRA_ACTION_FILE)", 163 "$(output $(ACTION_ID).java.kzip)", 164 "$(location :vnames_config)", 165 ], 166 data = [":vnames_config"], 167 extractor = ":bazel_java_extractor", 168 mnemonics = ["Javac"], 169 output = "$(ACTION_ID).java.kzip", 170 ) 171 172 extractor_action( 173 name = "extract_kzip_jvm", 174 args = [ 175 "$(EXTRA_ACTION_FILE)", 176 "$(output $(ACTION_ID).jvm.kzip)", 177 "$(location :vnames_config)", 178 ], 179 data = [":vnames_config"], 180 extractor = ":bazel_jvm_extractor", 181 mnemonics = ["JavaIjar"], 182 output = "$(ACTION_ID).jvm.kzip", 183 ) 184 185 # We only support Bazel rules_go 0.19.0 and up. 186 extractor_action( 187 name = "extract_kzip_go", 188 args = [ 189 "$(EXTRA_ACTION_FILE)", 190 "$(output $(ACTION_ID).go.kzip)", 191 "$(location :vnames_config)", 192 ], 193 data = [":vnames_config"], 194 extractor = ":bazel_go_extractor", 195 mnemonics = ["GoCompilePkg"], 196 output = "$(ACTION_ID).go.kzip", 197 ) 198 199 extractor_action( 200 name = "extract_kzip_typescript", 201 args = [ 202 "--extra_action=$(EXTRA_ACTION_FILE)", 203 "--include='\\.(js|json|tsx?|d\\.ts)$$'", 204 "--language=typescript", 205 "--output=$(output $(ACTION_ID).typescript.kzip)", 206 "--rules=$(location :vnames_config)", 207 "--scoped=true", 208 "--source='\\.ts$$'", 209 ], 210 data = [":vnames_config"], 211 extractor = ":bazel_extract_kzip", 212 mnemonics = [ 213 "TsProject", 214 "TypeScriptCompile", 215 "AngularTemplateCompile", 216 ], 217 output = "$(ACTION_ID).typescript.kzip", 218 ) 219 220 extractor_action( 221 name = "extract_kzip_protobuf", 222 args = [ 223 "--extra_action=$(EXTRA_ACTION_FILE)", 224 "--language=protobuf", 225 "--rules=$(location :vnames_config)", 226 "--output=$(output $(ACTION_ID).protobuf.kzip)", 227 ], 228 data = [":vnames_config"], 229 extractor = ":bazel_proto_extractor", 230 mnemonics = ["GenProtoDescriptorSet"], 231 output = "$(ACTION_ID).protobuf.kzip", 232 )