|
|
|
"""Java options and protobuf-specific java build rules with those options."""
|
|
|
|
|
|
|
|
load("@rules_java//java:defs.bzl", "java_library")
|
|
|
|
load("@rules_jvm_external//:defs.bzl", "java_export")
|
|
|
|
load("//:protobuf_version.bzl", "PROTOBUF_JAVA_VERSION")
|
|
|
|
load("//java/osgi:osgi.bzl", "osgi_java_library")
|
|
|
|
|
|
|
|
JAVA_RELEASE_OPTS = [
|
|
|
|
"-source 8",
|
|
|
|
"-target 8",
|
|
|
|
"-Xep:Java8ApiChecker:ERROR",
|
|
|
|
]
|
|
|
|
|
|
|
|
BUNDLE_DOC_URL = "https://developers.google.com/protocol-buffers/"
|
|
|
|
BUNDLE_LICENSE = "https://opensource.org/licenses/BSD-3-Clause"
|
|
|
|
|
|
|
|
def protobuf_java_export(**kwargs):
|
|
|
|
java_export(
|
|
|
|
javacopts = JAVA_RELEASE_OPTS,
|
|
|
|
# https://github.com/bazelbuild/rules_jvm_external/issues/1245
|
|
|
|
javadocopts = [
|
|
|
|
"-notimestamp",
|
|
|
|
"-use",
|
|
|
|
"-quiet",
|
|
|
|
"-Xdoclint:-missing",
|
|
|
|
"-encoding",
|
|
|
|
"UTF8",
|
|
|
|
],
|
|
|
|
**kwargs
|
|
|
|
)
|
|
|
|
|
|
|
|
def protobuf_java_library(**kwargs):
|
|
|
|
java_library(
|
|
|
|
**kwargs
|
|
|
|
)
|
|
|
|
|
|
|
|
def protobuf_versioned_java_library(
|
|
|
|
automatic_module_name,
|
|
|
|
bundle_description,
|
|
|
|
bundle_name,
|
|
|
|
bundle_symbolic_name,
|
|
|
|
bundle_additional_imports = [],
|
|
|
|
bundle_additional_exports = [],
|
|
|
|
**kwargs):
|
|
|
|
"""Extends `java_library` to add OSGi headers to the MANIFEST.MF using bndlib
|
|
|
|
|
|
|
|
This macro should be usable as a drop-in replacement for java_library.
|
|
|
|
|
|
|
|
The additional arguments are given the bndlib tool to generate an OSGi-compliant manifest file.
|
|
|
|
See [bnd documentation](https://bnd.bndtools.org/chapters/110-introduction.html)
|
|
|
|
|
|
|
|
Takes all the args that are standard for a java_library target plus the following.
|
|
|
|
Args:
|
|
|
|
bundle_description: (required) The Bundle-Description header defines a short
|
|
|
|
description of this bundle.
|
|
|
|
automatic_module_name: (required) The Automatic-Module-Name header that represents
|
|
|
|
the name of the module when this bundle is used as an automatic
|
|
|
|
module.
|
|
|
|
bundle_name: (required) The Bundle-Name header defines a readable name for this
|
|
|
|
bundle. This should be a short, human-readable name that can
|
|
|
|
contain spaces.
|
|
|
|
bundle_symbolic_name: (required) The Bundle-SymbolicName header specifies a
|
|
|
|
non-localizable name for this bundle. The bundle symbolic name
|
|
|
|
together with a version must identify a unique bundle though it can
|
|
|
|
be installed multiple times in a framework. The bundle symbolic
|
|
|
|
name should be based on the reverse domain name convention.
|
|
|
|
bundle_additional_exports: The Export-Package header contains a
|
|
|
|
declaration of exported packages. These are additional export
|
|
|
|
package statements to be added before the default wildcard export
|
|
|
|
"*;version={$Bundle-Version}".
|
|
|
|
bundle_additional_imports: The Import-Package header declares the
|
|
|
|
imported packages for this bundle. These are additional import
|
|
|
|
package statements to be added before the default wildcard import
|
|
|
|
"*".
|
|
|
|
**kwargs: Additional key-word arguments that are passed to the internal
|
|
|
|
java_library target.
|
|
|
|
"""
|
|
|
|
osgi_java_library(
|
|
|
|
javacopts = JAVA_RELEASE_OPTS,
|
|
|
|
automatic_module_name = automatic_module_name,
|
|
|
|
bundle_doc_url = BUNDLE_DOC_URL,
|
|
|
|
bundle_license = BUNDLE_LICENSE,
|
|
|
|
bundle_version = PROTOBUF_JAVA_VERSION,
|
|
|
|
bundle_description = bundle_description,
|
|
|
|
bundle_name = bundle_name,
|
|
|
|
bundle_symbolic_name = bundle_symbolic_name,
|
|
|
|
bundle_additional_exports = bundle_additional_exports,
|
|
|
|
bundle_additional_imports = bundle_additional_imports + ["sun.misc;resolution:=optional"],
|
|
|
|
**kwargs
|
|
|
|
)
|