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 $(DX) \ 23 $(HOST_OUT_EXECUTABLES)/jasmin \ 24 $(HOST_OUT_EXECUTABLES)/smali \ 25 $(HOST_OUT_EXECUTABLES)/dexmerger \ 26 $(JACK) 27 28 # Convert's a rule name to the form used in variables, e.g. no-relocate to NO_RELOCATE 29 define name-to-var 30 $(shell echo $(1) | tr '[:lower:]' '[:upper:]' | tr '-' '_') 31 endef # name-to-var 32 33 # We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync 34 # only once). 35 TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS) 36 37 # Also need libartagent. 38 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagent) 39 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagentd) 40 ifdef TARGET_2ND_ARCH 41 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagent) 42 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagentd) 43 endif 44 45 # Also need libtiagent. 46 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagent) 47 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagentd) 48 ifdef TARGET_2ND_ARCH 49 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagent) 50 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagentd) 51 endif 52 53 # Also need libtistress. 54 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtistress) 55 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtistressd) 56 ifdef TARGET_2ND_ARCH 57 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtistress) 58 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtistressd) 59 endif 60 61 # Also need libarttest. 62 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttest) 63 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttestd) 64 ifdef TARGET_2ND_ARCH 65 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttest) 66 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttestd) 67 endif 68 69 # Also need libnativebridgetest. 70 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libnativebridgetest) 71 ifdef TARGET_2ND_ARCH 72 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libnativebridgetest) 73 endif 74 75 # Also need libopenjdkjvmti. 76 TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmti 77 TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmtid 78 79 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-libart-testdex.jar 80 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-oj-testdex.jar 81 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/okhttp-testdex.jar 82 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/bouncycastle-testdex.jar 83 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/conscrypt-testdex.jar 84 85 # All tests require the host executables. The tests also depend on the core images, but on 86 # specific version depending on the compiler. 87 ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \ 88 $(ART_HOST_EXECUTABLES) \ 89 $(HOST_OUT_EXECUTABLES)/hprof-conv \ 90 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \ 91 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \ 92 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistress) \ 93 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistressd) \ 94 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \ 95 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \ 96 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \ 97 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \ 98 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \ 99 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \ 100 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \ 101 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \ 102 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \ 103 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \ 104 105 ifneq ($(HOST_PREFER_32_BIT),true) 106 ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \ 107 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \ 108 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \ 109 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistress) \ 110 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistressd) \ 111 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \ 112 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \ 113 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \ 114 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \ 115 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \ 116 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \ 117 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \ 118 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \ 119 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \ 120 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \ 121 122 endif 123 124 # Host executables. 125 host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES) 126 127 ifeq ($(ANDROID_COMPILE_WITH_JACK),true) 128 # Classpath for Jack compilation for host. 129 host_prereq_rules += $(HOST_JACK_CLASSPATH_DEPENDENCIES) 130 endif 131 132 # Required for dx, jasmin, smali, dexmerger, jack. 133 host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES) 134 135 ifeq ($(ANDROID_COMPILE_WITH_JACK),true) 136 # Classpath for Jack compilation for target. 137 target_prereq_rules := $(TARGET_JACK_CLASSPATH_DEPENDENCIES) 138 endif 139 140 # Sync test files to the target, depends upon all things that must be pushed 141 #to the target. 142 target_prereq_rules += test-art-target-sync 143 144 define core-image-dependencies 145 image_suffix := $(3) 146 ifeq ($(3),regalloc_gc) 147 image_suffix:=optimizing 148 else 149 ifeq ($(3),jit) 150 image_suffix:=interpreter 151 endif 152 endif 153 ifeq ($(2),no-image) 154 $(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_$(4)) 155 else 156 ifeq ($(2),picimage) 157 $(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_$(4)) 158 else 159 ifeq ($(2),multipicimage) 160 $(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_multi_$(4)) 161 endif 162 endif 163 endif 164 endef 165 166 TARGET_TYPES := host target 167 COMPILER_TYPES := jit interpreter optimizing regalloc_gc jit interp-ac speed-profile 168 IMAGE_TYPES := picimage no-image multipicimage 169 ALL_ADDRESS_SIZES := 64 32 170 171 # Add core image dependencies required for given target - HOST or TARGET, 172 # IMAGE_TYPE, COMPILER_TYPE and ADDRESS_SIZE to the prereq_rules. 173 $(foreach target, $(TARGET_TYPES), \ 174 $(foreach image, $(IMAGE_TYPES), \ 175 $(foreach compiler, $(COMPILER_TYPES), \ 176 $(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \ 177 $(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size))))))) 178 179 test-art-host-run-test-dependencies : $(host_prereq_rules) 180 test-art-target-run-test-dependencies : $(target_prereq_rules) 181 test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies 182 183 # Create a rule to build and run a test group of the following form: 184 # test-art-{1: host target}-run-test 185 define define-test-art-host-or-target-run-test-group 186 build_target := test-art-$(1)-run-test 187 .PHONY: $$(build_target) 188 189 $$(build_target) : args := --$(1) --verbose 190 $$(build_target) : test-art-$(1)-run-test-dependencies 191 ./art/test/testrunner/testrunner.py $$(args) 192 build_target := 193 args := 194 endef # define-test-art-host-or-target-run-test-group 195 196 $(foreach target, $(TARGET_TYPES), $(eval \ 197 $(call define-test-art-host-or-target-run-test-group,$(target)))) 198 199 test-art-run-test : test-art-host-run-test test-art-target-run-test 200 201 host_prereq_rules := 202 target_prereq_rules := 203 core-image-dependencies := 204 name-to-var := 205 define-test-art-host-or-target-run-test-group := 206 TARGET_TYPES := 207 COMPILER_TYPES := 208 IMAGE_TYPES := 209 ALL_ADDRESS_SIZES := 210 LOCAL_PATH := 211