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  )