11ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# Copyright (C) 2015 The Android Open Source Project
21ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung#
31ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# Licensed under the Apache License, Version 2.0 (the "License");
41ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# you may not use this file except in compliance with the License.
51ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# You may obtain a copy of the License at
61ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung#
71ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung#      http://www.apache.org/licenses/LICENSE-2.0
81ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung#
91ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# Unless required by applicable law or agreed to in writing, software
101ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# distributed under the License is distributed on an "AS IS" BASIS,
111ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# See the License for the specific language governing permissions and
131ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung# limitations under the License.
141ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung#
151ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung#
161ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung
17ec7b18f7596719ad3faa4fc54724928884dadf0fKeun-young Park#disble build in PDK, missing aidl import breaks build
18ec7b18f7596719ad3faa4fc54724928884dadf0fKeun-young Parkifneq ($(TARGET_BUILD_PDK),true)
19ec7b18f7596719ad3faa4fc54724928884dadf0fKeun-young Park
201ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoungLOCAL_PATH:= $(call my-dir)
211ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung
221ab8e18e01d8063821bee0bf641a365224c7e1eekeunyounginclude $(CLEAR_VARS)
231ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung
24e54ac276796c6535558f8444d882adecd19ce2bdKeun-young ParkLOCAL_MODULE := android.car
251ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoungLOCAL_MODULE_TAGS := optional
261ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung
27161f69e17ee3d9c26770ac15a04085c416341a1bKeun-young Parkifneq ($(TARGET_USES_CAR_FUTURE_FEATURES),true)
28161f69e17ee3d9c26770ac15a04085c416341a1bKeun-young Park#TODO need a tool to generate proguard rule to drop all items under @FutureFeature
29161f69e17ee3d9c26770ac15a04085c416341a1bKeun-young Park#LOCAL_PROGUARD_ENABLED := custom
30161f69e17ee3d9c26770ac15a04085c416341a1bKeun-young Park#LOCAL_PROGUARD_FLAG_FILES := proguard_drop_future.flags
31161f69e17ee3d9c26770ac15a04085c416341a1bKeun-young Parkendif
32161f69e17ee3d9c26770ac15a04085c416341a1bKeun-young Park
33c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortescar_lib_sources := $(call all-java-files-under, src)
34c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortesifeq ($(TARGET_USES_CAR_FUTURE_FEATURES),true)
35c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortescar_lib_sources += $(call all-java-files-under, src_feature_future)
36c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Corteselse
37c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortescar_lib_sources += $(call all-java-files-under, src_feature_current)
38c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortesendif
39dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata
40c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortescar_lib_sources += $(call all-Iaidl-files-under, src)
41dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata
42dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata# IoStats* are parcelable types (vs. interface types), but the build system uses an initial
43dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata# I as a magic marker to mean "interface", and due to this ends up refusing to compile
44dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata# these files as part of the build process.
45dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata# A clean solution to this is actively being worked on by the build team, but is not yet
46dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata# available, so for now we just filter the files out by hand.
47dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granatacar_lib_sources := $(filter-out src/android/car/storagemonitoring/IoStats.aidl,$(car_lib_sources))
48dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granatacar_lib_sources := $(filter-out src/android/car/storagemonitoring/IoStatsEntry.aidl,$(car_lib_sources))
49dbda56fbeac92a6c2a5097181cf779c59d599240Enrico Granata
50b4dc215271f5eaa2fe14af42aabf00e925a8ebf5Jakub PawlowskiLOCAL_AIDL_INCLUDES += system/bt/binder
51c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio Cortes
52c52d5f9f6190cf9a44dd6dfd3bc92386fbf023b3Antonio CortesLOCAL_SRC_FILES := $(car_lib_sources)
531ab8e18e01d8063821bee0bf641a365224c7e1eekeunyoung
54e315d2ea1eb2a7e0c3929470ea7f200d4c982a21Allen Hairifeq ($(EMMA_INSTRUMENT_FRAMEWORK),true)
55e315d2ea1eb2a7e0c3929470ea7f200d4c982a21Allen HairLOCAL_EMMA_INSTRUMENT := true
56e315d2ea1eb2a7e0c3929470ea7f200d4c982a21Allen Hairendif
57e315d2ea1eb2a7e0c3929470ea7f200d4c982a21Allen Hair
58e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkinclude $(BUILD_JAVA_LIBRARY)
59ec7b18f7596719ad3faa4fc54724928884dadf0fKeun-young Park
609aef1ae7c554f7f77917dd57cfe5f5dabd96b454Vitalii Tomkivifeq ($(BOARD_IS_AUTOMOTIVE), true)
6162950b10bba9ffedca279f92f89b63810da379bfDean Harding$(call dist-for-goals,dist_files,$(full_classes_jar):$(LOCAL_MODULE).jar)
629aef1ae7c554f7f77917dd57cfe5f5dabd96b454Vitalii Tomkivendif
639aef1ae7c554f7f77917dd57cfe5f5dabd96b454Vitalii Tomkiv
64280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# API Check
65280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv# ---------------------------------------------
66280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module := $(LOCAL_MODULE)
67280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_src_files := $(LOCAL_SRC_FILES)
68280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_api_dir := $(LOCAL_PATH)/api
69280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_java_libraries := framework
70280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_include_systemapi := true
71280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivcar_module_java_packages := android.car*
72280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkivinclude $(CAR_API_CHECK)
73280b5721254e5ac974404e02e7589f17f560d1f9Vitalii Tomkiv
745c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# Build stubs jar for target android-support-car
755c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# ---------------------------------------------
765c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxinginclude $(CLEAR_VARS)
775c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
785c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_SRC_FILES := $(call all-java-files-under, src)
795c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
805c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_JAVA_LIBRARIES := android.car
815c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
825c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_ADDITIONAL_JAVA_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,android.car,,COMMON)/src
835c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
845c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxingandroid_car_stub_packages := \
855c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing    android.car*
865c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
875c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxingandroid_car_api := \
885c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/android.car_api.txt
895c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
905c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# Note: The make target is android.car-stub-docs
915c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_MODULE := android.car-stub
925c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_DROIDDOC_OPTIONS := \
935c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing    -stubs $(call intermediates-dir-for,JAVA_LIBRARIES,android.car-stubs,,COMMON)/src \
945c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing    -stubpackages $(subst $(space),:,$(android_car_stub_packages)) \
955c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing    -api $(android_car_api) \
965c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing    -nodocs
975c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
985c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/java/
995c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_DROIDDOC_HTML_DIR :=
1005c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1015c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_MODULE_CLASS := JAVA_LIBRARIES
1025c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1035c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_UNINSTALLABLE_MODULE := true
1045c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1055c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxinginclude $(BUILD_DROIDDOC)
1065c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1075c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing$(android_car_api): $(full_target)
1085c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1095c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxingandroid.car-stubs_stamp := $(full_target)
1105c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1115c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing###############################################
1125c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# Build the stubs java files into a jar. This build rule relies on the
1135c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# stubs_stamp make variable being set from the droiddoc rule.
1145c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1155c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxinginclude $(CLEAR_VARS)
1165c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1175c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# CAR_API_CHECK uses the same name to generate a module, but BUILD_DROIDDOC
1185c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# appends "-docs" to module name.
1195c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_MODULE := android.car-stubs
1205c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_SOURCE_FILES_ALL_GENERATED := true
1215c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1225c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing# Make sure to run droiddoc first to generate the stub source files.
1235c71c0dea24bcdbb55fe473932424434626585b4Yao, YuxingLOCAL_ADDITIONAL_DEPENDENCIES := $(android.car-stubs_stamp)
1245c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1255c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxinginclude $(BUILD_STATIC_JAVA_LIBRARY)
1265c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
1275c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxingandroid.car-stubs_stamp :=
1285c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxingandroid_car_stub_packages :=
1295c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxingandroid_car_api :=
1305c71c0dea24bcdbb55fe473932424434626585b4Yao, Yuxing
131b40de197fb9b60bcbb20c243ba6b1a41e25e2e67Steve Paikinclude $(call all-makefiles-under,$(LOCAL_PATH))
132b40de197fb9b60bcbb20c243ba6b1a41e25e2e67Steve Paik
1337bd39e929390e754c96e2792efe0deac7b3841e6Anthony Chenendif #TARGET_BUILD_PDK
134