Home | History | Annotate | Download | only in SignatureTest
      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 
     15 LOCAL_PATH:= $(call my-dir)
     16 include $(CLEAR_VARS)
     17 
     18 # don't include this package in any target
     19 LOCAL_MODULE_TAGS := optional
     20 # and when built explicitly put it in the data partition
     21 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
     22 
     23 LOCAL_SRC_FILES := $(call all-java-files-under, src)
     24 
     25 LOCAL_JAVA_LIBRARIES := android.test.runner
     26 
     27 LOCAL_PACKAGE_NAME := SignatureTest
     28 
     29 LOCAL_SDK_VERSION := current
     30 
     31 # To be passed in on command line
     32 CTS_API_VERSION ?= current
     33 
     34 android_api_description := $(SRC_API_DIR)/$(CTS_API_VERSION).txt
     35 
     36 # Can't call local-intermediates-dir directly here because we have to
     37 # include BUILD_PACAKGE first.  Can't include BUILD_PACKAGE first
     38 # because we have to override LOCAL_RESOURCE_DIR first.  Hence this
     39 # hack.
     40 intermediates.COMMON := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON)
     41 signature_res_dir := $(intermediates.COMMON)/genres
     42 LOCAL_RESOURCE_DIR := $(signature_res_dir)
     43 
     44 # These shell commands allow us to get around the package.mk check for
     45 # empty/non-existent resouce dirs (which ours would be).  If it finds
     46 # an empty/non-existent resource dir, R_file_stamp doesn't contain a
     47 # target and our stuff never gets copied.
     48 # TODO: fix package.mk so we can avoid this hack
     49 fake_resource_check := $(signature_res_dir)/raw/fake_resource_check
     50 
     51 $(shell \
     52  if [ ! -f $(fake_resource_check) ]; then \
     53    mkdir -p $(dir $(fake_resource_check)); \
     54    touch $(fake_resource_check); \
     55  fi \
     56  )
     57 
     58 include $(BUILD_PACKAGE)
     59 
     60 copied_res_stamp := $(intermediates.COMMON)/copyres.stamp
     61 generated_res_stamp := $(intermediates.COMMON)/genres.stamp
     62 api_ver_path := $(intermediates.COMMON)
     63 api_ver_file := $(api_ver_path)/api_ver_is_$(CTS_API_VERSION)
     64 
     65 # The api_ver_file keeps track of which api version was last built.
     66 # By only ever having one of these magic files in existance and making
     67 # sure the generated resources rule depend on it, we can ensure that
     68 # the proper version of the api resource gets generated.
     69 $(api_ver_file):
     70 	$(hide) rm -f $(api_ver_path)/api_ver_is_*
     71 	$(hide) touch $@
     72 
     73 android_api_xml_description := $(intermediates.COMMON)/api.xml
     74 $(android_api_xml_description): PRIVATE_INPUT_FILE := $(android_api_description)
     75 $(android_api_xml_description): $(android_api_description) $(APICHECK)
     76 	$(hide) echo "Convert api file to xml: $@"
     77 	$(hide) $(APICHECK_COMMAND) -convert2xml $(PRIVATE_INPUT_FILE) $@
     78 
     79 static_res_deps := $(call find-subdir-assets,$(LOCAL_PATH)/res)
     80 $(copied_res_stamp): PRIVATE_PATH := $(LOCAL_PATH)
     81 $(copied_res_stamp): PRIVATE_MODULE := $(LOCAL_MODULE)
     82 $(copied_res_stamp): PRIVATE_RES_DIR := $(signature_res_dir)
     83 $(copied_res_stamp): FAKE_RESOURCE_DIR := $(dir $(fake_resource_check))
     84 $(copied_res_stamp): FAKE_RESOURCE_CHECK := $(fake_resource_check)
     85 $(copied_res_stamp): $(foreach res,$(static_res_deps),$(LOCAL_PATH)/res/${res}) | $(ACP)
     86 	$(hide) echo "Copy resources: $(PRIVATE_MODULE)"
     87 	$(hide) rm -f $@
     88 	$(hide) rm -rf $(PRIVATE_RES_DIR)
     89 	$(hide) mkdir -p $(PRIVATE_RES_DIR)
     90 	$(hide) if [ ! -f $(FAKE_RESOURCE_CHECK) ]; \
     91 	  then mkdir -p $(FAKE_RESOURCE_DIR); \
     92 	  touch $(FAKE_RESOURCE_CHECK); \
     93 	fi
     94 	$(hide) $(ACP) -rd $(PRIVATE_PATH)/res/* $(PRIVATE_RES_DIR)/
     95 	$(hide) touch $@
     96 
     97 # Split up config/api/1.xml by "package" and save the files as the
     98 # resource files of SignatureTest.
     99 $(generated_res_stamp): PRIVATE_PATH := $(LOCAL_PATH)
    100 $(generated_res_stamp): PRIVATE_MODULE := $(LOCAL_MODULE)
    101 $(generated_res_stamp): PRIVATE_RES_DIR := $(signature_res_dir)
    102 $(generated_res_stamp): $(api_ver_file)
    103 $(generated_res_stamp): $(copied_res_stamp) $(android_api_xml_description)
    104 	$(hide) echo "Copy generated resources: $(PRIVATE_MODULE)"
    105 	$(hide) rm -f $@
    106 	$(hide) python cts/tools/utils/android_api_description_splitter.py \
    107 		$(android_api_xml_description) $(PRIVATE_RES_DIR) package
    108 	$(hide) touch $@
    109 
    110 $(R_file_stamp): $(generated_res_stamp) $(copied_res_stamp)
    111 
    112 # Use the folloing include to make our test apk.
    113 include $(call all-makefiles-under,$(LOCAL_PATH))
    114