1# Copyright (C) 2011 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 16LOCAL_PATH := $(call my-dir) 17 18include art/build/Android.common_test.mk 19 20# Dependencies for actually running a run-test. 21TEST_ART_RUN_TEST_DEPENDENCIES := \ 22 $(HOST_OUT_EXECUTABLES)/dx \ 23 $(HOST_OUT_EXECUTABLES)/d8 \ 24 $(HOST_OUT_EXECUTABLES)/hiddenapi \ 25 $(HOST_OUT_EXECUTABLES)/jasmin \ 26 $(HOST_OUT_EXECUTABLES)/smali 27 28# We need the ART Testing APEX (which is a superset of the Release 29# and Debug APEXes) -- which contains dex2oat, dalvikvm, their 30# dependencies and ART gtests -- on the target, as well as the core 31# images (all images as we sync only once). 32ART_TEST_TARGET_RUN_TEST_DEPENDENCIES := $(TESTING_ART_APEX) $(TARGET_CORE_IMG_OUTS) 33 34# Also need libartagent. 35ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += libartagent-target libartagentd-target 36 37# Also need libtiagent. 38ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += libtiagent-target libtiagentd-target 39 40# Also need libtistress. 41ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += libtistress-target libtistressd-target 42 43# Also need libarttest. 44ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += libarttest-target libarttestd-target 45 46# Also need libnativebridgetest. 47ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += libnativebridgetest-target libnativebridgetestd-target 48 49# Also need signal_dumper. 50ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += signal_dumper-target 51 52ART_TEST_TARGET_RUN_TEST_DEPENDENCIES += \ 53 $(foreach jar,$(TARGET_TEST_CORE_JARS),$(TARGET_OUT_JAVA_LIBRARIES)/$(jar).jar) 54 55# All tests require the host executables. The tests also depend on the core images, but on 56# specific version depending on the compiler. 57ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \ 58 $(ART_HOST_EXECUTABLES) \ 59 $(HOST_OUT_EXECUTABLES)/hprof-conv \ 60 $(HOST_OUT_EXECUTABLES)/signal_dumper \ 61 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \ 62 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \ 63 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistress) \ 64 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistressd) \ 65 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \ 66 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \ 67 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \ 68 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \ 69 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \ 70 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetestd) \ 71 $(ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$(ART_HOST_SHLIB_EXTENSION) \ 72 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \ 73 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \ 74 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \ 75 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \ 76 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \ 77 $(HOST_CORE_DEX_LOCATIONS) \ 78 79ifneq ($(HOST_PREFER_32_BIT),true) 80ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \ 81 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \ 82 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \ 83 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistress) \ 84 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistressd) \ 85 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \ 86 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \ 87 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \ 88 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \ 89 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \ 90 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetestd) \ 91 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$(ART_HOST_SHLIB_EXTENSION) \ 92 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \ 93 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \ 94 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \ 95 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \ 96 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \ 97 98endif 99 100# Host executables. 101host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES) 102 103# Required for jasmin and smali. 104host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES) 105 106define core-image-dependencies 107 image_suffix := $(3) 108 ifeq ($(3),regalloc_gc) 109 image_suffix:=optimizing 110 else 111 ifeq ($(3),jit) 112 image_suffix:=interpreter 113 endif 114 endif 115 ifeq ($(2),no-image) 116 $(1)_prereq_rules += $$($(call to-upper,$(1))_CORE_IMAGE_$$(image_suffix)_$(4)) 117 else 118 ifeq ($(2),picimage) 119 $(1)_prereq_rules += $$($(call to-upper,$(1))_CORE_IMAGE_$$(image_suffix)_$(4)) 120 else 121 ifeq ($(2),multipicimage) 122 $(1)_prereq_rules += $$($(call to-upper,$(1))_CORE_IMAGE_$$(image_suffix)_multi_$(4)) 123 endif 124 endif 125 endif 126endef 127 128TARGET_TYPES := host target 129COMPILER_TYPES := jit interpreter optimizing regalloc_gc jit interp-ac speed-profile 130IMAGE_TYPES := picimage no-image multipicimage 131ALL_ADDRESS_SIZES := 64 32 132 133# Add core image dependencies required for given target - HOST or TARGET, 134# IMAGE_TYPE, COMPILER_TYPE and ADDRESS_SIZE to the prereq_rules. 135$(foreach target, $(TARGET_TYPES), \ 136 $(foreach image, $(IMAGE_TYPES), \ 137 $(foreach compiler, $(COMPILER_TYPES), \ 138 $(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \ 139 $(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size))))))) 140 141test-art-host-run-test-dependencies : $(host_prereq_rules) 142.PHONY: test-art-host-run-test-dependencies 143test-art-target-run-test-dependencies : 144.PHONY: test-art-target-run-test-dependencies 145test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies 146.PHONY: test-art-run-test-dependencies 147 148# Create a rule to build and run a test group of the following form: 149# test-art-{1: host target}-run-test 150define define-test-art-host-or-target-run-test-group 151 build_target := test-art-$(1)-run-test 152 .PHONY: $$(build_target) 153 154 $$(build_target) : args := --$(1) --verbose 155 $$(build_target) : test-art-$(1)-run-test-dependencies 156 ./art/test/testrunner/testrunner.py $$(args) 157 build_target := 158 args := 159endef # define-test-art-host-or-target-run-test-group 160 161$(foreach target, $(TARGET_TYPES), $(eval \ 162 $(call define-test-art-host-or-target-run-test-group,$(target)))) 163 164test-art-run-test : test-art-host-run-test test-art-target-run-test 165 166host_prereq_rules := 167core-image-dependencies := 168define-test-art-host-or-target-run-test-group := 169TARGET_TYPES := 170COMPILER_TYPES := 171IMAGE_TYPES := 172ALL_ADDRESS_SIZES := 173LOCAL_PATH := 174