// // 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" ], }