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  )