From f5f29aa97690f1e5b9507281fe0a17c8dc0b29fe Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 28 Feb 2018 17:01:51 +0000 Subject: [PATCH] Add more control to the java sdk enforcement. I plan on turning the error on for APPS in AOSP soon, and in preparation for that I'm introducing a finer granularity of warning/error control. Also add an almost-empty whitelist, which will likely need to be expanded in the future. Bug: 73535841 Test: make Change-Id: I2fc6700a504b7af50aa7bde727047bc56b167937 --- core/sdk_check.mk | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/core/sdk_check.mk b/core/sdk_check.mk index c5c2bc8b7..49ea2a8c9 100644 --- a/core/sdk_check.mk +++ b/core/sdk_check.mk @@ -2,13 +2,31 @@ # Enforcement checks that LOCAL_SDK_VERSION and LOCAL_PRIVATE_PLATFORM_APIS are # set correctly. # Should be included by java targets that allow specifying LOCAL_SDK_VERSION. +# The JAVA_SDK_ENFORCEMENT_WARNING and JAVA_SDK_ENFORCEMENT_ERROR variables may +# be set to a particular module class to enable warnings and errors for that +# subtype. + +whitelisted_modules := framework-res__auto_generated_rro ifeq ($(LOCAL_SDK_VERSION)$(LOCAL_PRIVATE_PLATFORM_APIS),) -ifneq ($(JAVA_SDK_ENFORCEMENT_WARNING),) -$(warning Java modules must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS, but $(LOCAL_MODULE) specifies neither.) -endif + ifeq (,$(filter $(LOCAL_MODULE),$(whitelisted_modules))) + ifneq ($(JAVA_SDK_ENFORCEMENT_WARNING)$(JAVA_SDK_ENFORCEMENT_ERROR),) + my_message := Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS, + ifeq ($(LOCAL_MODULE_CLASS),$(JAVA_SDK_ENFORCEMENT_ERROR)) + $(call pretty-error,$(my_message)) + endif + ifeq ($(LOCAL_MODULE_CLASS),$(JAVA_SDK_ENFORCEMENT_WARNING)) + $(call pretty-warning,$(my_message)) + endif + my_message := + endif + endif else ifneq ($(LOCAL_SDK_VERSION),) -ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),) -$(error $(LOCAL_MODULE) specifies both LOCAL_SDK_VERSION ($(LOCAL_SDK_VERSION)) and LOCAL_PRIVATE_PLATFORM_APIS ($(LOCAL_PRIVATE_PLATFORM_APIS)), but should specify only one.) -endif + ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),) + my_message := Specifies both LOCAL_SDK_VERSION ($(LOCAL_SDK_VERSION)) and + my_message += LOCAL_PRIVATE_PLATFORM_APIS ($(LOCAL_PRIVATE_PLATFORM_APIS)) + my_message += but should specify only one + $(call pretty-error,$(my_message)) + my_message := + endif endif