diff options
author | Vitalii Tomkiv <vitalit@google.com> | 2016-03-17 16:17:21 -0700 |
---|---|---|
committer | Vitalii Tomkiv <vitalit@google.com> | 2016-03-18 17:26:06 -0700 |
commit | 280b5721254e5ac974404e02e7589f17f560d1f9 (patch) | |
tree | 6dd99f540c99509b1cb2e2b79af884988a83d850 /apicheck.mk | |
parent | 04d8835b498ae007e77b3d8c64863b487ef7b68a (diff) | |
download | Car-280b5721254e5ac974404e02e7589f17f560d1f9.tar.gz |
Add car API checks.
Bug: 27705308
Change-Id: I9826211e2ae3287eb19cf96d57dbff150b208eb2
Diffstat (limited to 'apicheck.mk')
-rw-r--r-- | apicheck.mk | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/apicheck.mk b/apicheck.mk new file mode 100644 index 0000000000..df9af7ca64 --- /dev/null +++ b/apicheck.mk @@ -0,0 +1,244 @@ +# Copyright (C) 2016 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. + +# +# Input variables +# +# $(car_module) - name of the car library module +# $(car_module_api_dir) - dir to store API files +# $(car_module_include_systemapi) - if systemApi file should be generated +# $(car_module_java_libraries) - dependent libraries +# $(car_module_java_packages) - list of package names containing public classes +# $(car_module_src_files) - list of source files +# $(api_check_current_msg_file) - file containing error message for current API check +# $(api_check_last_msg_file) - file containing error message for last SDK API check +# --------------------------------------------- + +ifeq ($(BOARD_IS_AUTOMOTIVE), true) +ifneq ($(TARGET_BUILD_PDK), true) +# +# Generate the public stub source files +# --------------------------------------------- +include $(CLEAR_VARS) + +car_module_api_file := \ + $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_api.txt +car_module_removed_file := \ + $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_removed.txt + +LOCAL_MODULE := $(car_module)-stubs +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(car_module_src_files) +LOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module) +LOCAL_ADDITIONAL_JAVA_DIR := \ + $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src +LOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION) + +LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/src + +LOCAL_DROIDDOC_OPTIONS:= \ + -stubpackages "$(subst $(space),:,$(car_module_java_packages))" \ + -api $(car_module_api_file) \ + -removedApi $(car_module_removed_file) \ + -nodocs \ + -hide 113 \ + -hide 110 +LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := build/tools/droiddoc/templates-sdk +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_DROIDDOC) +car_stub_stamp := $(full_target) +$(car_module_api_file) : $(full_target) + +ifeq ($(car_module_include_systemapi), true) +# +# Generate the system stub source files +# --------------------------------------------- +include $(CLEAR_VARS) + +car_module_system_api_file := \ + $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_system_api.txt +car_module_system_removed_file := \ + $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_system_removed.txt + +LOCAL_MODULE := $(car_module)-system-stubs +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(car_module_src_files) +LOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module) +LOCAL_ADDITIONAL_JAVA_DIR := \ + $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src +LOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION) + +LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/src + +LOCAL_DROIDDOC_OPTIONS:= \ + -stubpackages "$(subst $(space),:,$(car_module_java_packages))" \ + -showAnnotation android.annotation.SystemApi \ + -api $(car_module_system_api_file) \ + -removedApi $(car_module_system_removed_file) \ + -nodocs \ + -hide 113 \ + -hide 110 +LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := build/tools/droiddoc/templates-sdk +LOCAL_UNINSTALLABLE_MODULE := true + +include $(BUILD_DROIDDOC) +car_system_stub_stamp := $(full_target) +$(car_module_system_api_file) : $(full_target) + +#($(car_module_include_systemapi), true) +endif +# +# Check public API +# --------------------------------------------- +.PHONY: $(car_module)-check-public-api +checkapi: $(car_module)-check-public-api +$(car_module): $(car_module)-check-public-api + +last_released_sdk_$(car_module) := $(lastword $(call numerically_sort, \ + $(filter-out current, \ + $(patsubst $(car_module_api_dir)/%.txt,%, $(wildcard $(car_module_api_dir)/*.txt)) \ + ))) + +# Check that the API we're building hasn't broken the last-released SDK version +# if it exists +ifneq ($(last_released_sdk_$(car_module)),) +$(eval $(call check-api, \ + $(car_module)-checkapi-last, \ + $(car_module_api_dir)/$(last_released_sdk_$(car_module)).txt, \ + $(car_module_api_file), \ + $(car_module_api_dir)/removed.txt, \ + $(car_module_removed_file), \ + -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \ + -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 \ + -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113, \ + cat $(api_check_last_msg_file), \ + $(car_module)-check-public-api, \ + $(car_stub_stamp))) +endif + +# Check that the API we're building hasn't changed from the not-yet-released +# SDK version. +$(eval $(call check-api, \ + $(car_module)-checkapi-current, \ + $(car_module_api_dir)/current.txt, \ + $(car_module_api_file), \ + $(car_module_api_dir)/removed.txt, \ + $(car_module_removed_file), \ + -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 \ + -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 \ + -error 21 -error 23 -error 24 -error 25 -hide 113, \ + cat $(api_check_current_msg_file), \ + $(car_module)-check-public-api, \ + $(car_stub_stamp))) + +.PHONY: update-$(car_module)-api +update-$(car_module)-api: PRIVATE_API_DIR := $(car_module_api_dir) +update-$(car_module)-api: PRIVATE_MODULE := $(car_module) +update-$(car_module)-api: PRIVATE_REMOVED_API_FILE := $(car_module_removed_file) +update-$(car_module)-api: $(car_module_api_file) | $(ACP) + @echo Copying $(PRIVATE_MODULE) current.txt + $(hide) $(ACP) $< $(PRIVATE_API_DIR)/current.txt + @echo Copying $(PRIVATE_MODULE) removed.txt + $(hide) $(ACP) $(PRIVATE_REMOVED_API_FILE) $(PRIVATE_API_DIR)/removed.txt + +# Run this update API task on the update-car-api task +update-car-api: update-$(car_module)-api + +ifeq ($(car_module_include_systemapi), true) + +# +# Check system API +# --------------------------------------------- +.PHONY: $(car_module)-check-system-api +checkapi: $(car_module)-check-system-api +$(car_module): $(car_module)-check-system-api + +last_released_system_sdk_$(car_module) := $(lastword $(call numerically_sort, \ + $(filter-out system-current, \ + $(patsubst $(car_module_api_dir)/%.txt,%, $(wildcard $(car_module_api_dir)/system-*.txt)) \ + ))) + +# Check that the API we're building hasn't broken the last-released SDK version +# if it exists +ifneq ($(last_released_system_sdk_$(car_module)),) +$(eval $(call check-api, \ + $(car_module)-checksystemapi-last, \ + $(car_module_api_dir)/$(last_released_system_sdk_$(car_module)).txt, \ + $(car_module_system_api_file), \ + $(car_module_api_dir)/system-removed.txt, \ + $(car_module_system_removed_file), \ + -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \ + -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 \ + -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113, \ + cat $(api_check_last_msg_file), \ + $(car_module)-check-system-api, \ + $(car_system_stub_stamp))) +endif + +# Check that the API we're building hasn't changed from the not-yet-released +# SDK version. +$(eval $(call check-api, \ + $(car_module)-checksystemapi-current, \ + $(car_module_api_dir)/system-current.txt, \ + $(car_module_system_api_file), \ + $(car_module_api_dir)/system-removed.txt, \ + $(car_module_system_removed_file), \ + -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 \ + -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 \ + -error 21 -error 23 -error 24 -error 25 -hide 113, \ + cat $(api_check_current_msg_file), \ + $(car_module)-check-system-api, \ + $(car_stub_stamp))) + +.PHONY: update-$(car_module)-system-api +update-$(car_module)-system-api: PRIVATE_API_DIR := $(car_module_api_dir) +update-$(car_module)-system-api: PRIVATE_MODULE := $(car_module) +update-$(car_module)-system-api: PRIVATE_REMOVED_API_FILE := $(car_module_system_removed_file) +update-$(car_module)-system-api: $(car_module_system_api_file) | $(ACP) + @echo Copying $(PRIVATE_MODULE) system-current.txt + $(hide) $(ACP) $< $(PRIVATE_API_DIR)/system-current.txt + @echo Copying $(PRIVATE_MODULE) system-removed.txt + $(hide) $(ACP) $(PRIVATE_REMOVED_API_FILE) $(PRIVATE_API_DIR)/system-removed.txt + +# Run this update API task on the update-car-api task +update-car-api: update-$(car_module)-system-api + +#($(car_module_include_systemapi), true) +endif + +#($(TARGET_BUILD_PDK),true) +endif + +#($(BOARD_IS_AUTOMOTIVE), true) +endif +# +# Clear variables +# --------------------------------------------- +car_module := +car_module_api_dir := +car_module_src_files := +car_module_java_libraries := +car_module_java_packages := +car_module_api_file := +car_module_removed_file := +car_module_system_api_file := +car_module_system_removed__file := +car_stub_stamp := +car_system_stub_stamp := +car_module_include_systemapi := |