blob: 6e5ef807ecefef6cfe7e2d11d221acd5e4ef2bc7 [file] [log] [blame]
//
// Copyright (C) 2022 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Build NullAway from sources for the platform
//
// Note: this is only intended to be used for the platform development. This is *not* intended
// to be used in the SDK where apps can use the official jacoco release.
package {
default_applicable_licenses: ["external_nullaway_license"],
}
// See: http://go/android-license-faq
license {
name: "external_nullaway_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
"SPDX-license-identifier-GPL-2.0-with-classpath-exception",
"SPDX-license-identifier-MIT",
],
license_text: [
"LICENSE.txt",
"LICENSE",
"NOTICE",
],
}
java_plugin {
name: "nullaway_plugin",
static_libs: [
"nullaway_lib",
],
}
java_library_host {
name: "nullaway_lib",
srcs: [
"nullaway/src/**/*.java",
":nullaway_fake_contract_annotation",
],
exclude_srcs: ["nullaway/src/test/**/*.java"],
static_libs: [
"guava",
"//external/error_prone:error_prone_checkerframework_dataflow_nullaway",
"//external/error_prone:error_prone_core",
"nullaway_annotations",
],
libs: [
"auto_service_annotations",
"auto_value_annotations",
],
plugins: [
"auto_service_plugin",
"auto_value_plugin",
],
javacflags: [
"--add-modules=jdk.compiler",
"--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
"--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
"--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
"--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
"--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
"--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
"--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
],
}
// Nullaway depends on the Contract annotation, but we don't have it imported into android.
// Create a fake stub annotation to use instead.
genrule {
name: "nullaway_fake_contract_annotation",
out: ["org/jetbrains/annotations/Contract.java"],
cmd: "echo 'package org.jetbrains.annotations;' >> $(out) && " +
"echo 'import java.lang.annotation.*;' >> $(out) && " +
"echo '@Retention(RetentionPolicy.CLASS)' >> $(out) && " +
"echo '@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})' >> $(out) && " +
"echo 'public @interface Contract {' >> $(out) && " +
"echo ' String value() default \"\";' >> $(out) && " +
"echo '}' >> $(out)",
visibility: ["//visibility:private"],
}
java_library {
name: "nullaway_annotations",
host_supported: true,
srcs: [
"annotations/src/**/*.java"
],
}