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  )