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