1280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Copyright (C) 2016 The Android Open Source Project
2280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
3280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Licensed under the Apache License, Version 2.0 (the "License");
4280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# you may not use this file except in compliance with the License.
5280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# You may obtain a copy of the License at
6280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
7280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#      http://www.apache.org/licenses/LICENSE-2.0
8280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
9280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Unless required by applicable law or agreed to in writing, software
10280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# distributed under the License is distributed on an "AS IS" BASIS,
11280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# See the License for the specific language governing permissions and
13280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# limitations under the License.
14280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
15280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
16280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Input variables
17280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
18280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(car_module) - name of the car library module
19280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(car_module_api_dir) - dir to store API files
20280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(car_module_include_systemapi) - if systemApi file should be generated
21a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup# $(car_module_proguard_file) - where to output the proguard file, if empty no file will be produced
22280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(car_module_java_libraries) - dependent libraries
23280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(car_module_java_packages) - list of package names containing public classes
24280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(car_module_src_files) - list of source files
25280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(api_check_current_msg_file) - file containing error message for current API check
26280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# $(api_check_last_msg_file) - file containing error message for last SDK API check
27280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
28280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
29280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivifeq ($(BOARD_IS_AUTOMOTIVE), true)
30280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivifneq ($(TARGET_BUILD_PDK), true)
31280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
32280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Generate the public stub source files
33280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
34280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivinclude $(CLEAR_VARS)
35280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
36280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_api_file := \
37280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_api.txt
38280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_removed_file := \
39280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_removed.txt
40280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
41280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_MODULE := $(car_module)-stubs
42280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_MODULE_CLASS := JAVA_LIBRARIES
43280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_MODULE_TAGS := optional
44280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
45280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_SRC_FILES := $(car_module_src_files)
46280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
47280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_ADDITIONAL_JAVA_DIR := \
48280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
49280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
50280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
51280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/src
52280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
53280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_DROIDDOC_OPTIONS:= \
54280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -stubpackages "$(subst $(space),:,$(car_module_java_packages))" \
55280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -api $(car_module_api_file) \
56280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -removedApi $(car_module_removed_file) \
57280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -nodocs \
58280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -hide 113 \
59280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -hide 110
609688038518ab6bb23841d94b68b9597122b4a279Scott MainLOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := external/doclava/res/assets/templates-sdk
61280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_UNINSTALLABLE_MODULE := true
62280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
63280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivinclude $(BUILD_DROIDDOC)
64280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_stub_stamp := $(full_target)
65280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(car_module_api_file) : $(full_target)
66280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
67280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivifeq ($(car_module_include_systemapi), true)
68280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
69280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Generate the system stub source files
70280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
71280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivinclude $(CLEAR_VARS)
72280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
73280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_system_api_file := \
74280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_system_api.txt
75280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_system_removed_file := \
76280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(car_module)_system_removed.txt
77280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
78280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_MODULE := $(car_module)-system-stubs
79280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_MODULE_CLASS := JAVA_LIBRARIES
80280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_MODULE_TAGS := optional
81280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
82280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_SRC_FILES := $(car_module_src_files)
83280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
84280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_ADDITIONAL_JAVA_DIR := \
85280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
86280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
87280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
88280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/src
89280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
90280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_DROIDDOC_OPTIONS:= \
91280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -stubpackages "$(subst $(space),:,$(car_module_java_packages))" \
92280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -showAnnotation android.annotation.SystemApi \
93280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -api $(car_module_system_api_file) \
94280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -removedApi $(car_module_system_removed_file) \
95280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -nodocs \
96280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -hide 113 \
97280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -hide 110
989688038518ab6bb23841d94b68b9597122b4a279Scott MainLOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := external/doclava/res/assets/templates-sdk
99280b5721254e5ac974404e02e7589f17f560d1f9Vitalii TomkivLOCAL_UNINSTALLABLE_MODULE := true
100280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
101280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivinclude $(BUILD_DROIDDOC)
102280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_system_stub_stamp := $(full_target)
103280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(car_module_system_api_file) : $(full_target)
104280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
105280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#($(car_module_include_systemapi), true)
106280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivendif
107a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
108a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
109a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupifneq ($(strip $(car_module_proguard_file)),)
110a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup#
111a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup# Generate a proguard files
112a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup# ---------------------------------------------
113a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupinclude $(CLEAR_VARS)
114a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
115a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_MODULE := $(car_module)-proguard
116a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_MODULE_CLASS := JAVA_LIBRARIES
117a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_MODULE_TAGS := optional
118a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
119a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_SRC_FILES := $(car_module_src_files)
120a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
121a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_ADDITIONAL_JAVA_DIR := \
122a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup    $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
123a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
124a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
125a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupdocs_proguard_intermediates_output := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,COMMON)/keep_list.proguard
126a0b23acf599b7cf57e1941352fae44e3c984c605Jason TholstrupLOCAL_DROIDDOC_OPTIONS := -proguard $(docs_proguard_intermediates_output)
127a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
128a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupinclude $(BUILD_DROIDDOC)
129a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
130a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupupdate-car-api: PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT := $(docs_proguard_intermediates_output)
131a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupupdate-car-api: PRIVATE_PROGUARD_OUTPUT_FILE := $(car_module_proguard_file)
132a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupupdate-car-api: PRIVATE_CAR_MODULE := $(car_module)
133a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupupdate-car-api: $(car_module)-proguard-docs | $(ACP)
134a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup	@echo $(PRIVATE_CAR_MODULE) copying $(PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT) to $(PRIVATE_PROGUARD_OUTPUT_FILE)
135a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup	$(hide) $(ACP) $(PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT) $(PRIVATE_PROGUARD_OUTPUT_FILE)
136a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
137a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup# cleanup vars
138a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupdocs_proguard_output :=
139a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup# ($(strip $(car_module_proguard_file)),)
140a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupendif
141a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
142a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
143280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
144280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Check public API
145280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
146280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv.PHONY: $(car_module)-check-public-api
147280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcheckapi: $(car_module)-check-public-api
148280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(car_module): $(car_module)-check-public-api
149280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
150280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivlast_released_sdk_$(car_module) := $(lastword $(call numerically_sort, \
151280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(filter-out current, \
152280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        $(patsubst $(car_module_api_dir)/%.txt,%, $(wildcard $(car_module_api_dir)/*.txt)) \
153280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    )))
154280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
155280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Check that the API we're building hasn't broken the last-released SDK version
156280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# if it exists
157280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivifneq ($(last_released_sdk_$(car_module)),)
158280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(eval $(call check-api, \
159280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-checkapi-last, \
160280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/$(last_released_sdk_$(car_module)).txt, \
161280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_file), \
162280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/removed.txt, \
163280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_removed_file), \
164280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \
165280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 \
166280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113, \
167280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    cat $(api_check_last_msg_file), \
168280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-check-public-api, \
169280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_stub_stamp)))
170280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivendif
171280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
172280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Check that the API we're building hasn't changed from the not-yet-released
173280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# SDK version.
174280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(eval $(call check-api, \
175280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-checkapi-current, \
176280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/current.txt, \
177280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_file), \
178280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/removed.txt, \
179280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_removed_file), \
180280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 \
181280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 \
182280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -error 21 -error 23 -error 24 -error 25 -hide 113, \
183280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    cat $(api_check_current_msg_file), \
184280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-check-public-api, \
185280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_stub_stamp)))
186280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
187280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv.PHONY: update-$(car_module)-api
188280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-api: PRIVATE_API_DIR := $(car_module_api_dir)
189280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-api: PRIVATE_MODULE := $(car_module)
190280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-api: PRIVATE_REMOVED_API_FILE := $(car_module_removed_file)
191a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupupdate-$(car_module)-api: PRIVATE_PROGUARD_FILE := $(car_module_proguard_file)
192280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-api: $(car_module_api_file) | $(ACP)
193280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	@echo Copying $(PRIVATE_MODULE) current.txt
194280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	$(hide) $(ACP) $< $(PRIVATE_API_DIR)/current.txt
195280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	@echo Copying $(PRIVATE_MODULE) removed.txt
196280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	$(hide) $(ACP) $(PRIVATE_REMOVED_API_FILE) $(PRIVATE_API_DIR)/removed.txt
197280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
198280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Run this update API task on the update-car-api task
199280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-car-api: update-$(car_module)-api
200280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
201280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivifeq ($(car_module_include_systemapi), true)
202280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
203280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
204280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Check system API
205280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
206280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv.PHONY: $(car_module)-check-system-api
207280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcheckapi: $(car_module)-check-system-api
208280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(car_module): $(car_module)-check-system-api
209280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
210280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivlast_released_system_sdk_$(car_module) := $(lastword $(call numerically_sort, \
211280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(filter-out system-current, \
212280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        $(patsubst $(car_module_api_dir)/%.txt,%, $(wildcard $(car_module_api_dir)/system-*.txt)) \
213280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    )))
214280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
215280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Check that the API we're building hasn't broken the last-released SDK version
216280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# if it exists
217280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivifneq ($(last_released_system_sdk_$(car_module)),)
218280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(eval $(call check-api, \
219280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-checksystemapi-last, \
220280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/$(last_released_system_sdk_$(car_module)).txt, \
221280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_system_api_file), \
222280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/system-removed.txt, \
223280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_system_removed_file), \
224280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \
225280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -warning 7 -warning 8 -warning 9 -warning 10 -warning 11 -warning 12 \
226280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -warning 13 -warning 14 -warning 15 -warning 16 -warning 17 -warning 18 -hide 113, \
227280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    cat $(api_check_last_msg_file), \
228280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-check-system-api, \
229280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_system_stub_stamp)))
230280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivendif
231280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
232280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Check that the API we're building hasn't changed from the not-yet-released
233280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# SDK version.
234280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv$(eval $(call check-api, \
235280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-checksystemapi-current, \
236280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/system-current.txt, \
237280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_system_api_file), \
238280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_api_dir)/system-removed.txt, \
239280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module_system_removed_file), \
240280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 \
241280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 \
242280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv        -error 21 -error 23 -error 24 -error 25 -hide 113, \
243280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    cat $(api_check_current_msg_file), \
244280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_module)-check-system-api, \
245280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv    $(car_stub_stamp)))
246280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
247280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv.PHONY: update-$(car_module)-system-api
248280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-system-api: PRIVATE_API_DIR := $(car_module_api_dir)
249280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-system-api: PRIVATE_MODULE := $(car_module)
250280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-system-api: PRIVATE_REMOVED_API_FILE := $(car_module_system_removed_file)
251a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupupdate-$(car_module)-system-api: PRIVATE_PROGUARD_FILE := $(car_module_proguard_file)
252280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-$(car_module)-system-api: $(car_module_system_api_file) | $(ACP)
253280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	@echo Copying $(PRIVATE_MODULE) system-current.txt
254280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	$(hide) $(ACP) $< $(PRIVATE_API_DIR)/system-current.txt
255280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	@echo Copying $(PRIVATE_MODULE) system-removed.txt
256280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv	$(hide) $(ACP) $(PRIVATE_REMOVED_API_FILE) $(PRIVATE_API_DIR)/system-removed.txt
257280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
258280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Run this update API task on the update-car-api task
259280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivupdate-car-api: update-$(car_module)-system-api
260280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
261a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
262a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrup
263280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#($(car_module_include_systemapi), true)
264280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivendif
265280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
266280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#($(TARGET_BUILD_PDK),true)
267280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivendif
268280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
269280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#($(BOARD_IS_AUTOMOTIVE), true)
270280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivendif
271280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv#
272280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# Clear variables
273280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
274280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module :=
275280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_api_dir :=
276280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_src_files :=
277280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_java_libraries :=
278280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_java_packages :=
279280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_api_file :=
280280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_removed_file :=
281280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_system_api_file :=
282280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_system_removed__file :=
283280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_stub_stamp :=
284280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_system_stub_stamp :=
285280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_include_systemapi :=
286a0b23acf599b7cf57e1941352fae44e3c984c605Jason Tholstrupcar_module_proguard_file :=
287