kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/cxx/extractor/BUILD (about) 1 load("@bazel_skylib//:bzl_library.bzl", "bzl_library") 2 load("//:visibility.bzl", "PUBLIC_VISIBILITY") 3 load(":toolchain.bzl", "cxx_extractor_toolchain") 4 5 package( 6 default_visibility = ["//kythe:default_visibility"], 7 features = ["layering_check"], 8 ) 9 10 cc_library( 11 name = "cxx_details", 12 srcs = [ 13 "cxx_details.cc", 14 ], 15 hdrs = [ 16 "cxx_details.h", 17 ], 18 copts = [ 19 "-Wno-non-virtual-dtor", 20 "-Wno-unused-variable", 21 "-Wno-implicit-fallthrough", 22 ], 23 deps = [ 24 "//kythe/proto:cxx_cc_proto", 25 "@com_google_absl//absl/log", 26 "@llvm-project//clang:basic", 27 "@llvm-project//clang:lex", 28 ], 29 ) 30 31 cc_library( 32 name = "path_utils", 33 srcs = ["path_utils.cc"], 34 hdrs = ["path_utils.h"], 35 deps = [ 36 "//kythe/cxx/common:lib", 37 "@com_google_absl//absl/strings:str_format", 38 "@llvm-project//clang:basic", 39 "@llvm-project//clang:lex", 40 "@llvm-project//clang:tooling", 41 "@llvm-project//llvm:Support", 42 ], 43 ) 44 45 cc_library( 46 name = "supported_language", 47 srcs = ["language.cc"], 48 hdrs = ["language.h"], 49 deps = ["@llvm-project//llvm:Support"], 50 ) 51 52 cc_library( 53 name = "command_line_utils", 54 srcs = [ 55 "CommandLineUtils.cc", 56 ], 57 hdrs = [ 58 "CommandLineUtils.h", 59 ], 60 copts = [ 61 "-Wno-non-virtual-dtor", 62 "-Wno-unused-variable", 63 "-Wno-implicit-fallthrough", 64 ], 65 deps = [ 66 "@com_google_absl//absl/functional:function_ref", 67 "@com_google_absl//absl/log", 68 "@com_google_absl//absl/strings:str_format", 69 "@llvm-project//llvm:Support", 70 ], 71 ) 72 73 cc_test( 74 name = "commandline_test", 75 size = "small", 76 srcs = [ 77 "CommandLineUtilsTest.cc", 78 ], 79 copts = [ 80 "-Wno-non-virtual-dtor", 81 "-Wno-unused-variable", 82 "-Wno-implicit-fallthrough", 83 ], 84 deps = [ 85 ":command_line_utils", 86 "//third_party:gtest", 87 ], 88 ) 89 90 cc_library( 91 name = "lib", 92 srcs = [ 93 "cxx_extractor.cc", 94 ], 95 hdrs = [ 96 "cxx_extractor.h", 97 ], 98 copts = [ 99 "-Wno-non-virtual-dtor", 100 "-Wno-unused-variable", 101 "-Wno-implicit-fallthrough", 102 ], 103 features = [ 104 "-layering_check", # TODO: protocolbuffers/protobuf#10889 105 ], 106 deps = [ 107 ":command_line_utils", 108 ":cxx_details", 109 ":path_utils", 110 ":supported_language", 111 "//external:zlib", 112 "//kythe/cxx/common:file_utils", 113 "//kythe/cxx/common:index_writer", 114 "//kythe/cxx/common:json_proto", 115 "//kythe/cxx/common:kzip_writer", 116 "//kythe/cxx/common:lib", 117 "//kythe/cxx/common:path_utils", 118 "//kythe/cxx/common:sha256_hasher", 119 "//kythe/cxx/indexer/cxx:clang_utils", 120 "//kythe/cxx/indexer/cxx:stream_adapter", 121 "//kythe/proto:analysis_cc_proto", 122 "//kythe/proto:buildinfo_cc_proto", 123 "//kythe/proto:cxx_cc_proto", 124 "//kythe/proto:filecontext_cc_proto", 125 "//third_party/llvm/src:clang_builtin_headers", 126 "//third_party/llvm/src:preprocessor_util_lib", 127 "@com_google_absl//absl/container:flat_hash_map", 128 "@com_google_absl//absl/container:flat_hash_set", 129 "@com_google_absl//absl/log", 130 "@com_google_absl//absl/log:check", 131 "@com_google_absl//absl/memory", 132 "@com_google_absl//absl/status:statusor", 133 "@com_google_absl//absl/strings", 134 "@com_google_absl//absl/strings:str_format", 135 "@com_google_protobuf//:protobuf", 136 "@com_google_protobuf//src/google/protobuf/io:gzip_stream", 137 "@com_googlesource_code_re2//:re2", 138 "@llvm-project//clang:frontend", 139 "@llvm-project//clang:lex", 140 "@llvm-project//clang:tooling", 141 "@llvm-project//llvm:Support", 142 ], 143 ) 144 145 cc_binary( 146 name = "cxx_extractor", 147 srcs = ["cxx_extractor_main.cc"], 148 features = [ 149 "-layering_check", # TODO: protocolbuffers/protobuf#10889 150 ], 151 deps = [ 152 ":lib", 153 ":supported_language", 154 "//kythe/cxx/common:init", 155 "@com_google_protobuf//:protobuf", 156 ], 157 ) 158 159 cc_library( 160 name = "objc_bazel_support_library", 161 srcs = ["objc_bazel_support.cc"], 162 hdrs = ["objc_bazel_support.h"], 163 features = [ 164 "-layering_check", # TODO: protocolbuffers/protobuf#10889 165 ], 166 deps = [ 167 "//third_party/bazel:extra_actions_base_cc_proto", 168 "@com_google_protobuf//:protobuf_lite", 169 "@com_googlesource_code_re2//:re2", 170 "@llvm-project//llvm:Support", 171 ], 172 ) 173 174 cc_test( 175 name = "objc_bazel_support_library_test", 176 size = "small", 177 srcs = ["objc_bazel_support_test.cc"], 178 features = [ 179 "-layering_check", # TODO: protocolbuffers/protobuf#10889 180 ], 181 deps = [ 182 ":objc_bazel_support_library", 183 "//third_party:gtest", 184 "//third_party/bazel:extra_actions_base_cc_proto", 185 "@com_google_absl//absl/log", 186 "@com_google_absl//absl/log:initialize", 187 "@com_google_protobuf//:protobuf_lite", 188 ], 189 ) 190 191 cc_binary( 192 name = "cxx_extractor_bazel", 193 srcs = [ 194 "cxx_extractor_bazel_main.cc", 195 ], 196 copts = [ 197 "-Wno-non-virtual-dtor", 198 "-Wno-unused-variable", 199 "-Wno-implicit-fallthrough", 200 ], 201 features = [ 202 "-layering_check", # TODO: protocolbuffers/protobuf#10889 203 ], 204 visibility = ["//visibility:public"], 205 deps = [ 206 ":lib", 207 ":supported_language", 208 "//external:zlib", 209 "//kythe/cxx/common:init", 210 "//kythe/cxx/common:path_utils", 211 "//third_party/bazel:extra_actions_base_cc_proto", 212 "@com_google_absl//absl/flags:flag", 213 "@com_google_absl//absl/flags:parse", 214 "@com_google_absl//absl/log:check", 215 "@com_google_absl//absl/strings", 216 "@com_google_absl//absl/strings:str_format", 217 "@com_google_protobuf//:protobuf", 218 "@com_google_protobuf//src/google/protobuf/io", 219 "@com_googlesource_code_re2//:re2", 220 ], 221 ) 222 223 cc_binary( 224 name = "objc_extractor_bazel", 225 srcs = [ 226 "objc_extractor_bazel_main.cc", 227 ], 228 copts = [ 229 "-Wno-non-virtual-dtor", 230 "-Wno-unused-variable", 231 "-Wno-implicit-fallthrough", 232 ], 233 features = [ 234 "-layering_check", # TODO: protocolbuffers/protobuf#10889 235 ], 236 visibility = ["//visibility:public"], 237 deps = [ 238 ":lib", 239 ":objc_bazel_support_library", 240 ":supported_language", 241 "//external:zlib", 242 "//kythe/cxx/common:init", 243 "//kythe/cxx/common:path_utils", 244 "//third_party/bazel:extra_actions_base_cc_proto", 245 "@com_google_absl//absl/flags:flag", 246 "@com_google_absl//absl/flags:parse", 247 "@com_google_absl//absl/log", 248 "@com_google_absl//absl/log:check", 249 "@com_google_absl//absl/strings:str_format", 250 "@com_google_protobuf//:protobuf", 251 "@com_google_protobuf//src/google/protobuf/io", 252 "@com_googlesource_code_re2//:re2", 253 ], 254 ) 255 256 cc_test( 257 name = "test", 258 size = "small", 259 srcs = [ 260 "cxx_extractor_test.cc", 261 ], 262 copts = [ 263 "-Wno-non-virtual-dtor", 264 "-Wno-unused-variable", 265 "-Wno-implicit-fallthrough", 266 ], 267 features = [ 268 "-layering_check", # TODO: protocolbuffers/protobuf#10889 269 ], 270 deps = [ 271 ":lib", 272 "//external:zlib", 273 "//kythe/cxx/common:path_utils", 274 "//kythe/proto:analysis_cc_proto", 275 "//third_party:gtest", 276 "@com_google_absl//absl/log", 277 "@com_google_absl//absl/log:check", 278 "@com_google_absl//absl/log:initialize", 279 "@com_google_absl//absl/memory", 280 "@com_google_protobuf//:protobuf", 281 "@com_googlesource_code_re2//:re2", 282 "@llvm-project//clang:frontend", 283 "@llvm-project//clang:tooling", 284 "@llvm-project//llvm:Support", 285 ], 286 ) 287 288 cc_library( 289 name = "testlib", 290 testonly = 1, 291 srcs = ["testlib.cc"], 292 hdrs = ["testlib.h"], 293 data = [":cxx_extractor"], 294 features = [ 295 "-layering_check", # TODO: protocolbuffers/protobuf#10889 296 ], 297 deps = [ 298 "//kythe/cxx/common:kzip_reader", 299 "//kythe/cxx/common:path_utils", 300 "//kythe/proto:analysis_cc_proto", 301 "//kythe/proto:cxx_cc_proto", 302 "//kythe/proto:filecontext_cc_proto", 303 "//third_party:gtest", 304 "@bazel_tools//tools/cpp/runfiles", 305 "@com_google_absl//absl/container:flat_hash_map", 306 "@com_google_absl//absl/log", 307 "@com_google_absl//absl/log:check", 308 "@com_google_absl//absl/strings", 309 "@com_google_protobuf//:protobuf", 310 "@llvm-project//llvm:Support", 311 ], 312 ) 313 314 cc_library( 315 name = "bazel_event_reader", 316 srcs = ["bazel_event_reader.cc"], 317 hdrs = ["bazel_event_reader.h"], 318 features = [ 319 "-layering_check", # TODO: protocolbuffers/protobuf#10889 320 ], 321 deps = [ 322 "//third_party/bazel:build_event_stream_cc_proto", 323 "@com_google_absl//absl/log", 324 "@com_google_absl//absl/status", 325 "@com_google_absl//absl/types:variant", 326 "@com_google_protobuf//:protobuf", 327 ], 328 ) 329 330 cc_test( 331 name = "bazel_event_reader_test", 332 srcs = ["bazel_event_reader_test.cc"], 333 features = [ 334 "-layering_check", # TODO: protocolbuffers/protobuf#10889 335 ], 336 deps = [ 337 ":bazel_event_reader", 338 "//third_party:gtest", 339 "//third_party:gtest_main", 340 "//third_party/bazel:build_event_stream_cc_proto", 341 "@com_google_absl//absl/strings", 342 "@com_google_protobuf//:protobuf", 343 "@com_google_protobuf//src/google/protobuf/io", 344 ], 345 ) 346 347 cc_library( 348 name = "bazel_artifact", 349 hdrs = ["bazel_artifact.h"], 350 deps = [ 351 "@com_google_absl//absl/strings:str_format", 352 ], 353 ) 354 355 cc_library( 356 name = "bazel_artifact_selector", 357 srcs = ["bazel_artifact_selector.cc"], 358 hdrs = ["bazel_artifact_selector.h"], 359 features = [ 360 "-layering_check", # TODO: protocolbuffers/protobuf#10889 361 ], 362 deps = [ 363 ":bazel_artifact", 364 "//kythe/cxx/common:regex", 365 "//kythe/proto:bazel_artifact_selector_cc_proto", 366 "//kythe/proto:bazel_artifact_selector_v2_cc_proto", 367 "//third_party/bazel:build_event_stream_cc_proto", 368 "@com_google_absl//absl/base", 369 "@com_google_absl//absl/container:flat_hash_map", 370 "@com_google_absl//absl/container:flat_hash_set", 371 "@com_google_absl//absl/container:inlined_vector", 372 "@com_google_absl//absl/container:node_hash_map", 373 "@com_google_absl//absl/hash", 374 "@com_google_absl//absl/log", 375 "@com_google_absl//absl/log:check", 376 "@com_google_absl//absl/log:die_if_null", 377 "@com_google_absl//absl/status", 378 "@com_google_absl//absl/strings", 379 "@com_google_protobuf//:protobuf", 380 "@com_googlesource_code_re2//:re2", 381 ], 382 ) 383 384 cc_test( 385 name = "bazel_artifact_selector_test", 386 srcs = ["bazel_artifact_selector_test.cc"], 387 features = [ 388 "-layering_check", # TODO: protocolbuffers/protobuf#10889 389 ], 390 deps = [ 391 ":bazel_artifact", 392 ":bazel_artifact_selector", 393 "//kythe/cxx/common:regex", 394 "//kythe/proto:bazel_artifact_selector_v2_cc_proto", 395 "//third_party:gtest", 396 "//third_party:gtest_main", 397 "//third_party/bazel:build_event_stream_cc_proto", 398 "@com_github_inazarenko_protobuf_matchers//protobuf-matchers", 399 "@com_google_absl//absl/container:flat_hash_map", 400 "@com_google_absl//absl/functional:any_invocable", 401 "@com_google_absl//absl/log:check", 402 "@com_google_absl//absl/status", 403 "@com_google_absl//absl/strings", 404 "@com_google_absl//absl/types:span", 405 "@com_google_protobuf//:protobuf", 406 "@com_google_protobuf//src/google/protobuf/io", 407 "@com_googlesource_code_re2//:re2", 408 ], 409 ) 410 411 cc_library( 412 name = "bazel_artifact_reader", 413 srcs = ["bazel_artifact_reader.cc"], 414 hdrs = ["bazel_artifact_reader.h"], 415 deps = [ 416 ":bazel_artifact", 417 ":bazel_artifact_selector", 418 ":bazel_event_reader", 419 "//third_party/bazel:build_event_stream_cc_proto", 420 "@com_google_absl//absl/container:flat_hash_map", 421 "@com_google_absl//absl/container:flat_hash_set", 422 "@com_google_absl//absl/log:check", 423 "@com_google_absl//absl/log:die_if_null", 424 "@com_google_absl//absl/status", 425 "@com_google_absl//absl/strings", 426 "@com_google_absl//absl/types:variant", 427 ], 428 ) 429 430 cc_test( 431 name = "bazel_artifact_reader_test", 432 srcs = ["bazel_artifact_reader_test.cc"], 433 features = [ 434 "-layering_check", # TODO: protocolbuffers/protobuf#10889 435 ], 436 deps = [ 437 ":bazel_artifact_reader", 438 ":bazel_event_reader", 439 "//third_party:gtest", 440 "//third_party:gtest_main", 441 "//third_party/bazel:build_event_stream_cc_proto", 442 "@com_google_absl//absl/strings", 443 "@com_google_protobuf//:protobuf", 444 "@com_google_protobuf//src/google/protobuf/io", 445 ], 446 ) 447 448 cc_binary( 449 name = "dump_bazel_artifacts", 450 srcs = ["dump_bazel_artifacts.cc"], 451 features = [ 452 "-layering_check", # TODO: protocolbuffers/protobuf#10889 453 ], 454 deps = [ 455 ":bazel_artifact_reader", 456 "//kythe/cxx/common:init", 457 "@com_google_absl//absl/flags:flag", 458 "@com_google_absl//absl/flags:parse", 459 "@com_google_absl//absl/log", 460 "@com_google_absl//absl/strings", 461 "@com_google_protobuf//:protobuf", 462 "@com_google_protobuf//src/google/protobuf/io", 463 ], 464 ) 465 466 sh_binary( 467 name = "xcode_wrapper", 468 srcs = ["xcode_wrapper.sh"], 469 data = [ 470 ":cxx_extractor", 471 "@bazel_tools//tools/bash/runfiles", 472 ], 473 ) 474 475 toolchain_type(name = "toolchain_type") 476 477 alias( 478 name = "cxx_extractor_default", 479 actual = "cxx_extractor_linux", 480 visibility = [PUBLIC_VISIBILITY], 481 ) 482 483 cxx_extractor_toolchain( 484 name = "cxx_extractor_linux", 485 ) 486 487 toolchain( 488 name = "linux_toolchain", 489 exec_compatible_with = [ 490 "@platforms//os:linux", 491 ], 492 target_compatible_with = [ 493 "@platforms//os:linux", 494 ], 495 toolchain = ":cxx_extractor_linux", 496 toolchain_type = ":toolchain_type", 497 ) 498 499 cxx_extractor_toolchain( 500 name = "cxx_extractor_macos", 501 compiler_executable = "__KYTHE_XCODE_CLANG_PATH__", 502 extractor = ":xcode_wrapper", 503 ) 504 505 toolchain( 506 name = "macos_toolchain", 507 exec_compatible_with = [ 508 "@platforms//os:osx", 509 ], 510 target_compatible_with = [ 511 "@platforms//os:osx", 512 ], 513 toolchain = ":cxx_extractor_macos", 514 toolchain_type = ":toolchain_type", 515 ) 516 517 bzl_library( 518 name = "toolchain_bzl", 519 srcs = ["toolchain.bzl"], 520 )