1# Copyright (C) 2008 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15LOCAL_PATH:= $(call my-dir) 16include $(CLEAR_VARS) 17 18# don't include this package in any target 19LOCAL_MODULE_TAGS := optional 20# and when built explicitly put it in the data partition 21LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) 22# and because it is in data, do not strip classes.dex 23LOCAL_DEX_PREOPT := false 24 25LOCAL_SRC_FILES := $(call all-java-files-under, src) 26 27LOCAL_JAVA_LIBRARIES := android.test.runner 28 29LOCAL_PACKAGE_NAME := SignatureTest 30 31LOCAL_SDK_VERSION := current 32 33# To be passed in on command line 34CTS_API_VERSION ?= current 35 36android_api_description := $(SRC_API_DIR)/$(CTS_API_VERSION).txt 37 38# Can't call local-intermediates-dir directly here because we have to 39# include BUILD_PACAKGE first. Can't include BUILD_PACKAGE first 40# because we have to override LOCAL_RESOURCE_DIR first. Hence this 41# hack. 42intermediates.COMMON := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON) 43signature_res_dir := $(intermediates.COMMON)/genres 44LOCAL_RESOURCE_DIR := $(signature_res_dir) 45 46# These shell commands allow us to get around the package.mk check for 47# empty/non-existent resouce dirs (which ours would be). If it finds 48# an empty/non-existent resource dir, R_file_stamp doesn't contain a 49# target and our stuff never gets copied. 50# TODO: fix package.mk so we can avoid this hack 51fake_resource_check := $(signature_res_dir)/raw/fake_resource_check 52 53$(shell \ 54 if [ ! -f $(fake_resource_check) ]; then \ 55 mkdir -p $(dir $(fake_resource_check)); \ 56 touch $(fake_resource_check); \ 57 fi \ 58 ) 59 60include $(BUILD_PACKAGE) 61 62copied_res_stamp := $(intermediates.COMMON)/copyres.stamp 63generated_res_stamp := $(intermediates.COMMON)/genres.stamp 64api_ver_path := $(intermediates.COMMON) 65api_ver_file := $(api_ver_path)/api_ver_is_$(CTS_API_VERSION) 66 67# The api_ver_file keeps track of which api version was last built. 68# By only ever having one of these magic files in existance and making 69# sure the generated resources rule depend on it, we can ensure that 70# the proper version of the api resource gets generated. 71$(api_ver_file): 72 $(hide) rm -f $(api_ver_path)/api_ver_is_* 73 $(hide) touch $@ 74 75android_api_xml_description := $(intermediates.COMMON)/api.xml 76$(android_api_xml_description): PRIVATE_INPUT_FILE := $(android_api_description) 77$(android_api_xml_description): $(android_api_description) $(APICHECK) 78 $(hide) echo "Convert api file to xml: $@" 79 $(hide) $(APICHECK_COMMAND) -convert2xml $(PRIVATE_INPUT_FILE) $@ 80 81static_res_deps := $(call find-subdir-assets,$(LOCAL_PATH)/res) 82$(copied_res_stamp): PRIVATE_PATH := $(LOCAL_PATH) 83$(copied_res_stamp): PRIVATE_MODULE := $(LOCAL_MODULE) 84$(copied_res_stamp): PRIVATE_RES_DIR := $(signature_res_dir) 85$(copied_res_stamp): FAKE_RESOURCE_DIR := $(dir $(fake_resource_check)) 86$(copied_res_stamp): FAKE_RESOURCE_CHECK := $(fake_resource_check) 87$(copied_res_stamp): $(foreach res,$(static_res_deps),$(LOCAL_PATH)/res/${res}) | $(ACP) 88 $(hide) echo "Copy resources: $(PRIVATE_MODULE)" 89 $(hide) rm -f $@ 90 $(hide) rm -rf $(PRIVATE_RES_DIR) 91 $(hide) mkdir -p $(PRIVATE_RES_DIR) 92 $(hide) if [ ! -f $(FAKE_RESOURCE_CHECK) ]; \ 93 then mkdir -p $(FAKE_RESOURCE_DIR); \ 94 touch $(FAKE_RESOURCE_CHECK); \ 95 fi 96 $(hide) $(ACP) -rd $(PRIVATE_PATH)/res/* $(PRIVATE_RES_DIR)/ 97 $(hide) touch $@ 98 99# Split up config/api/1.xml by "package" and save the files as the 100# resource files of SignatureTest. 101$(generated_res_stamp): PRIVATE_PATH := $(LOCAL_PATH) 102$(generated_res_stamp): PRIVATE_MODULE := $(LOCAL_MODULE) 103$(generated_res_stamp): PRIVATE_RES_DIR := $(signature_res_dir) 104$(generated_res_stamp): $(api_ver_file) 105$(generated_res_stamp): $(copied_res_stamp) $(android_api_xml_description) 106 $(hide) echo "Copy generated resources: $(PRIVATE_MODULE)" 107 $(hide) rm -f $@ 108 $(hide) python cts/tools/utils/android_api_description_splitter.py \ 109 $(android_api_xml_description) $(PRIVATE_RES_DIR) package 110 $(hide) touch $@ 111 112$(R_file_stamp): $(generated_res_stamp) $(copied_res_stamp) 113 114# Use the folloing include to make our test apk. 115include $(call all-makefiles-under,$(LOCAL_PATH)) 116