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# List of all tests of the form 003-omnibus-opcodes. 21TEST_ART_RUN_TESTS := $(wildcard $(LOCAL_PATH)/[0-9]*) 22TEST_ART_RUN_TESTS := $(subst $(LOCAL_PATH)/,, $(TEST_ART_RUN_TESTS)) 23 24######################################################################## 25# The art-run-tests module, used to build all run-tests into an image. 26 27# The path where build only targets will be output, e.g. 28# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA 29art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA 30 31# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is 32# an empty file touched in the intermediate directory. 33TEST_ART_RUN_TEST_BUILD_RULES := 34 35# Dependencies for actually running a run-test. 36TEST_ART_RUN_TEST_DEPENDENCIES := \ 37 $(DX) \ 38 $(HOST_OUT_EXECUTABLES)/jasmin \ 39 $(HOST_OUT_EXECUTABLES)/smali \ 40 $(HOST_OUT_EXECUTABLES)/dexmerger 41 42ifeq ($(ANDROID_COMPILE_WITH_JACK),true) 43 TEST_ART_RUN_TEST_DEPENDENCIES += \ 44 $(JACK_JAR) \ 45 $(JACK_LAUNCHER_JAR) \ 46 $(JILL_JAR) 47endif 48 49# Helper to create individual build targets for tests. Must be called with $(eval). 50# $(1): the test number 51define define-build-art-run-test 52 dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch 53 run_test_options = --build-only 54 ifeq ($(ANDROID_COMPILE_WITH_JACK),true) 55 run_test_options += --build-with-jack 56 else 57 run_test_options += --build-with-javac-dx 58 endif 59$$(dmart_target): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options) 60$$(dmart_target): $(TEST_ART_RUN_TEST_DEPENDENCIES) 61 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@) 62 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \ 63 SMALI=$(abspath $(HOST_OUT_EXECUTABLES)/smali) \ 64 DXMERGER=$(abspath $(HOST_OUT_EXECUTABLES)/dexmerger) \ 65 JACK=$(abspath $(JACK)) \ 66 JACK_VM_COMMAND="$(JACK_VM) $(DEFAULT_JACK_VM_ARGS) $(JAVA_TMPDIR_ARG) -jar $(abspath $(JACK_LAUNCHER_JAR)) " \ 67 JACK_CLASSPATH=$(TARGET_JACK_CLASSPATH) \ 68 JACK_JAR=$(abspath $(JACK_JAR)) \ 69 JILL_JAR=$(abspath $(JILL_JAR)) \ 70 $(LOCAL_PATH)/run-test $$(PRIVATE_RUN_TEST_OPTIONS) --output-path $$(abspath $$(dir $$@)) $(1) 71 $(hide) touch $$@ 72 73 TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target) 74 dmart_target := 75 run_test_options := 76endef 77$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test)))) 78 79include $(CLEAR_VARS) 80LOCAL_MODULE_TAGS := tests 81LOCAL_MODULE := art-run-tests 82LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES) 83# The build system use this flag to pick up files generated by declare-make-art-run-test. 84LOCAL_PICKUP_FILES := $(art_run_tests_dir) 85 86include $(BUILD_PHONY_PACKAGE) 87 88# Clear temp vars. 89art_run_tests_dir := 90define-build-art-run-test := 91TEST_ART_RUN_TEST_BUILD_RULES := 92 93######################################################################## 94# General rules to build and run a run-test. 95 96TARGET_TYPES := host target 97PREBUILD_TYPES := 98ifeq ($(ART_TEST_RUN_TEST_PREBUILD),true) 99 PREBUILD_TYPES += prebuild 100endif 101ifeq ($(ART_TEST_RUN_TEST_NO_PREBUILD),true) 102 PREBUILD_TYPES += no-prebuild 103endif 104ifeq ($(ART_TEST_RUN_TEST_NO_DEX2OAT),true) 105 PREBUILD_TYPES += no-dex2oat 106endif 107COMPILER_TYPES := 108ifeq ($(ART_TEST_DEFAULT_COMPILER),true) 109 COMPILER_TYPES += default 110endif 111ifeq ($(ART_TEST_INTERPRETER),true) 112 COMPILER_TYPES += interpreter 113endif 114ifeq ($(ART_TEST_JIT),true) 115 COMPILER_TYPES += jit 116endif 117ifeq ($(ART_TEST_OPTIMIZING),true) 118 COMPILER_TYPES += optimizing 119endif 120RELOCATE_TYPES := relocate 121ifeq ($(ART_TEST_RUN_TEST_NO_RELOCATE),true) 122 RELOCATE_TYPES += no-relocate 123endif 124ifeq ($(ART_TEST_RUN_TEST_RELOCATE_NO_PATCHOAT),true) 125 RELOCATE_TYPES += relocate-npatchoat 126endif 127TRACE_TYPES := ntrace 128ifeq ($(ART_TEST_TRACE),true) 129 TRACE_TYPES += trace 130endif 131ifeq ($(ART_TEST_TRACE_STREAM),true) 132 TRACE_TYPES += stream 133endif 134GC_TYPES := cms 135ifeq ($(ART_TEST_GC_STRESS),true) 136 GC_TYPES += gcstress 137endif 138ifeq ($(ART_TEST_GC_VERIFY),true) 139 GC_TYPES += gcverify 140endif 141JNI_TYPES := checkjni 142ifeq ($(ART_TEST_JNI_FORCECOPY),true) 143 JNI_TYPES += forcecopy 144endif 145IMAGE_TYPES := image 146ifeq ($(ART_TEST_RUN_TEST_NO_IMAGE),true) 147 IMAGE_TYPES += no-image 148endif 149ifeq ($(ART_TEST_PIC_IMAGE),true) 150 IMAGE_TYPES += picimage 151endif 152PICTEST_TYPES := npictest 153ifeq ($(ART_TEST_PIC_TEST),true) 154 PICTEST_TYPES += pictest 155endif 156RUN_TYPES := 157ifeq ($(ART_TEST_RUN_TEST_DEBUG),true) 158 RUN_TYPES += debug 159endif 160ifeq ($(ART_TEST_RUN_TEST_NDEBUG),true) 161 RUN_TYPES += ndebug 162endif 163DEBUGGABLE_TYPES := ndebuggable 164ifeq ($(ART_TEST_RUN_TEST_DEBUGGABLE),true) 165DEBUGGABLE_TYPES += debuggable 166endif 167ADDRESS_SIZES_TARGET := $(ART_PHONY_TEST_TARGET_SUFFIX) 168ADDRESS_SIZES_HOST := $(ART_PHONY_TEST_HOST_SUFFIX) 169ifeq ($(ART_TEST_RUN_TEST_2ND_ARCH),true) 170 ADDRESS_SIZES_TARGET += $(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 171 ADDRESS_SIZES_HOST += $(2ND_ART_PHONY_TEST_HOST_SUFFIX) 172endif 173ALL_ADDRESS_SIZES := 64 32 174 175# List all run test names with number arguments agreeing with the comment above. 176define all-run-test-names 177 $(foreach target, $(1), \ 178 $(foreach run-type, $(2), \ 179 $(foreach prebuild, $(3), \ 180 $(foreach compiler, $(4), \ 181 $(foreach relocate, $(5), \ 182 $(foreach trace, $(6), \ 183 $(foreach gc, $(7), \ 184 $(foreach jni, $(8), \ 185 $(foreach image, $(9), \ 186 $(foreach pictest, $(10), \ 187 $(foreach debuggable, $(11), \ 188 $(foreach test, $(12), \ 189 $(foreach address_size, $(13), \ 190 test-art-$(target)-run-test-$(run-type)-$(prebuild)-$(compiler)-$(relocate)-$(trace)-$(gc)-$(jni)-$(image)-$(pictest)-$(debuggable)-$(test)$(address_size) \ 191 ))))))))))))) 192endef # all-run-test-names 193 194# To generate a full list or tests: 195# $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES),$(COMPILER_TYPES), \ 196# $(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 197# $(DEBUGGABLE_TYPES) $(TEST_ART_RUN_TESTS), $(ALL_ADDRESS_SIZES) 198 199# Convert's a rule name to the form used in variables, e.g. no-relocate to NO_RELOCATE 200define name-to-var 201$(shell echo $(1) | tr '[:lower:]' '[:upper:]' | tr '-' '_') 202endef # name-to-var 203 204# Tests that are timing sensitive and flaky on heavily loaded systems. 205TEST_ART_TIMING_SENSITIVE_RUN_TESTS := \ 206 053-wait-some \ 207 055-enum-performance \ 208 133-static-invoke-super 209 210 # disable timing sensitive tests on "dist" builds. 211ifdef dist_goal 212 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 213 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 214 $(IMAGE_TYPES), $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(ALL_ADDRESS_SIZES)) 215endif 216 217TEST_ART_TIMING_SENSITIVE_RUN_TESTS := 218 219# Note 116-nodex2oat is not broken per-se it just doesn't (and isn't meant to) work with --prebuild. 220TEST_ART_BROKEN_PREBUILD_RUN_TESTS := \ 221 116-nodex2oat \ 222 118-noimage-dex2oat \ 223 134-nodex2oat-nofallback 224 225ifneq (,$(filter prebuild,$(PREBUILD_TYPES))) 226 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),prebuild, \ 227 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 228 $(IMAGE_TYPES), $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_PREBUILD_RUN_TESTS), $(ALL_ADDRESS_SIZES)) 229endif 230 231TEST_ART_BROKEN_PREBUILD_RUN_TESTS := 232 233TEST_ART_BROKEN_NO_PREBUILD_TESTS := \ 234 117-nopatchoat 235 236ifneq (,$(filter no-prebuild,$(PREBUILD_TYPES))) 237 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),no-prebuild, \ 238 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 239 $(IMAGE_TYPES), $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_NO_PREBUILD_TESTS), $(ALL_ADDRESS_SIZES)) 240endif 241 242TEST_ART_BROKEN_NO_PREBUILD_TESTS := 243 244# Note 117-nopatchoat is not broken per-se it just doesn't work (and isn't meant to) without 245# --prebuild --relocate 246TEST_ART_BROKEN_NO_RELOCATE_TESTS := \ 247 117-nopatchoat \ 248 118-noimage-dex2oat \ 249 119-noimage-patchoat 250 251ifneq (,$(filter no-relocate,$(RELOCATE_TYPES))) 252 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 253 $(COMPILER_TYPES), no-relocate,$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 254 $(IMAGE_TYPES), $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_NO_RELOCATE_TESTS), $(ALL_ADDRESS_SIZES)) 255endif 256 257TEST_ART_BROKEN_NO_RELOCATE_TESTS := 258 259# Tests that are broken with GC stress. 260TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := 261 262ifneq (,$(filter gcstress,$(GC_TYPES))) 263 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 264 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),gcstress,$(JNI_TYPES), \ 265 $(IMAGE_TYPES), $(PICTEST_TYPES), $(DBEUGGABLE_TYPES), $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(ALL_ADDRESS_SIZES)) 266endif 267 268TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := 269 270# 115-native-bridge setup is complicated. Need to implement it correctly for the target. 271ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES),$(COMPILER_TYPES), \ 272 $(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), 115-native-bridge, \ 273 $(ALL_ADDRESS_SIZES)) 274 275# 130-hprof dumps the heap and runs hprof-conv to check whether the file is somewhat readable. This 276# is only possible on the host. 277# TODO: Turn off all the other combinations, this is more about testing actual ART code. A gtest is 278# very hard to write here, as (for a complete test) JDWP must be set up. 279ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES), \ 280 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 281 $(PICTEST_TYPES),$(DEBUGGABLE_TYPES),130-hprof,$(ALL_ADDRESS_SIZES)) 282 283# 131 is an old test. The functionality has been implemented at an earlier stage and is checked 284# in tests 138. 285ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 286 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 287 $(PICTEST_TYPES),$(DEBUGGABLE_TYPES),131-structural-change,$(ALL_ADDRESS_SIZES)) 288 289# 138-duplicate-classes-check. Turned off temporarily, b/21333911. 290ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 291 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 292 $(PICTEST_TYPES),$(DEBUGGABLE_TYPES),138-duplicate-classes-check,$(ALL_ADDRESS_SIZES)) 293 294# All these tests check that we have sane behavior if we don't have a patchoat or dex2oat. 295# Therefore we shouldn't run them in situations where we actually don't have these since they 296# explicitly test for them. These all also assume we have an image. 297TEST_ART_BROKEN_FALLBACK_RUN_TESTS := \ 298 116-nodex2oat \ 299 117-nopatchoat \ 300 118-noimage-dex2oat \ 301 119-noimage-patchoat \ 302 137-cfi \ 303 138-duplicate-classes-check2 304 305# This test fails without an image. 306TEST_ART_BROKEN_NO_IMAGE_RUN_TESTS := \ 307 137-cfi \ 308 138-duplicate-classes-check 309 310ifneq (,$(filter no-dex2oat,$(PREBUILD_TYPES))) 311 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),no-dex2oat, \ 312 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 313 $(PICTEST_TYPES),$(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_FALLBACK_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 314endif 315 316 317ifneq (,$(filter no-image,$(IMAGE_TYPES))) 318 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 319 $(COMPILER_TYPES), $(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),no-image, \ 320 $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_FALLBACK_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 321 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 322 $(COMPILER_TYPES), $(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),no-image, \ 323 $(PICTEST_TYPES), $(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_NO_IMAGE_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 324endif 325 326ifneq (,$(filter relocate-npatchoat,$(RELOCATE_TYPES))) 327 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 328 $(COMPILER_TYPES), relocate-npatchoat,$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 329 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_FALLBACK_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 330endif 331 332TEST_ART_BROKEN_FALLBACK_RUN_TESTS := 333 334# 137: 335# This test unrolls and expects managed frames, but tracing means we run the interpreter. 336# 802: 337# This test dynamically enables tracing to force a deoptimization. This makes the test meaningless 338# when already tracing, and writes an error message that we do not want to check for. 339TEST_ART_BROKEN_TRACING_RUN_TESTS := \ 340 137-cfi \ 341 802-deoptimization 342 343ifneq (,$(filter trace stream,$(TRACE_TYPES))) 344 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 345 $(COMPILER_TYPES),$(RELOCATE_TYPES),trace stream,$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 346 $(PICTEST_TYPES),$(DEBUGGABLE_TYPES), $(TEST_ART_BROKEN_TRACING_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 347endif 348 349TEST_ART_BROKEN_TRACING_RUN_TESTS := 350 351# The following tests use libarttest.so, which is linked against libartd.so, so will 352# not work when libart.so is the one loaded. 353# TODO: Find a way to run these tests in ndebug mode. 354TEST_ART_BROKEN_NDEBUG_TESTS := \ 355 004-JniTest \ 356 004-ReferenceMap \ 357 004-SignalTest \ 358 004-StackWalk \ 359 004-UnsafeTest \ 360 051-thread \ 361 115-native-bridge \ 362 116-nodex2oat \ 363 117-nopatchoat \ 364 118-noimage-dex2oat \ 365 119-noimage-patchoat \ 366 131-structural-change \ 367 137-cfi \ 368 139-register-natives \ 369 454-get-vreg \ 370 455-set-vreg \ 371 457-regs \ 372 461-get-reference-vreg \ 373 466-get-live-vreg \ 374 375ifneq (,$(filter ndebug,$(RUN_TYPES))) 376 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),ndebug,$(PREBUILD_TYPES), \ 377 $(COMPILER_TYPES), $(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ 378 $(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_NDEBUG_TESTS),$(ALL_ADDRESS_SIZES)) 379endif 380 381TEST_ART_BROKEN_NDEBUG_TESTS := 382 383# Known broken tests for the interpreter. 384# CFI unwinding expects managed frames. 385TEST_ART_BROKEN_INTERPRETER_RUN_TESTS := \ 386 137-cfi 387 388ifneq (,$(filter interpreter,$(COMPILER_TYPES))) 389 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 390 interpreter,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 391 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_INTERPRETER_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 392endif 393 394TEST_ART_BROKEN_INTERPRETER_RUN_TESTS := 395 396# Known broken tests for the JIT. 397# CFI unwinding expects managed frames, and the test does not iterate enough to even compile. JIT 398# also uses Generic JNI instead of the JNI compiler. 399TEST_ART_BROKEN_JIT_RUN_TESTS := \ 400 137-cfi 401 402ifneq (,$(filter jit,$(COMPILER_TYPES))) 403 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 404 jit,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 405 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_JIT_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 406endif 407 408TEST_ART_BROKEN_JIT_RUN_TESTS := 409 410# Known broken tests for the default compiler (Quick). 411TEST_ART_BROKEN_DEFAULT_RUN_TESTS := \ 412 457-regs 413 414ifneq (,$(filter default,$(COMPILER_TYPES))) 415 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 416 default,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 417 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_DEFAULT_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 418endif 419 420TEST_ART_BROKEN_DEFAULT_RUN_TESTS := 421 422# Known broken tests for Quick's and Optimizing's ARM back ends. 423TEST_ART_BROKEN_ARM_RUN_TESTS := 477-long-to-float-conversion-precision # b/20413424 424 425ifeq ($(TARGET_ARCH),arm) 426 ifneq (,$(filter 32,$(ALL_ADDRESS_SIZES))) 427 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES), \ 428 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 429 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_ARM_RUN_TESTS),32) 430 endif 431endif 432 433ifdef TARGET_2ND_ARCH 434 ifeq ($(TARGET_2ND_ARCH),arm) 435 ifneq (,$(filter 32,$(ALL_ADDRESS_SIZES))) 436 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES), \ 437 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 438 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_ARM_RUN_TESTS),32) 439 endif 440 endif 441endif 442 443TEST_ART_BROKEN_ARM_RUN_TESTS := 444 445# Known broken tests for the arm64 optimizing compiler backend. 446TEST_ART_BROKEN_OPTIMIZING_ARM64_RUN_TESTS := 447 448ifneq (,$(filter optimizing,$(COMPILER_TYPES))) 449 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,target,$(RUN_TYPES),$(PREBUILD_TYPES), \ 450 optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 451 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_OPTIMIZING_ARM64_RUN_TESTS),64) 452endif 453 454TEST_ART_BROKEN_OPTIMIZING_ARM64_RUN_TESTS := 455 456# Known broken tests for the optimizing compiler. 457TEST_ART_BROKEN_OPTIMIZING_RUN_TESTS := 458 459ifneq (,$(filter optimizing,$(COMPILER_TYPES))) 460 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 461 optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 462 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_OPTIMIZING_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 463endif 464 465# If ART_USE_OPTIMIZING_COMPILER is set to true, then the default core.art has been 466# compiled with the optimizing compiler. 467ifeq ($(ART_USE_OPTIMIZING_COMPILER),true) 468 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 469 default,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 470 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_OPTIMIZING_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 471endif 472 473TEST_ART_BROKEN_OPTIMIZING_RUN_TESTS := 474 475# Tests that should fail when the optimizing compiler compiles them non-debuggable. 476TEST_ART_BROKEN_OPTIMIZING_NONDEBUGGABLE_RUN_TESTS := \ 477 454-get-vreg \ 478 455-set-vreg \ 479 457-regs \ 480 481ifneq (,$(filter optimizing,$(COMPILER_TYPES))) 482 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 483 optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 484 $(IMAGE_TYPES),$(PICTEST_TYPES),ndebuggable,$(TEST_ART_BROKEN_OPTIMIZING_NONDEBUGGABLE_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 485endif 486 487TEST_ART_BROKEN_OPTIMIZING_NONDEBUGGABLE_RUN_TESTS := 488 489# Tests that should fail when the optimizing compiler compiles them debuggable. 490TEST_ART_BROKEN_OPTIMIZING_DEBUGGABLE_RUN_TESTS := \ 491 492ifneq (,$(filter optimizing,$(COMPILER_TYPES))) 493 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 494 optimizing,$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 495 $(IMAGE_TYPES),$(PICTEST_TYPES),debuggable,$(TEST_ART_BROKEN_OPTIMIZING_DEBUGGABLE_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 496endif 497 498TEST_ART_BROKEN_OPTIMIZING_DEBUGGABLE_RUN_TESTS := 499 500# Tests that should fail in the read barrier configuration. 501# 098: b/20720510 502# 137: Read barrier forces interpreter. Cannot run this with the interpreter. 503TEST_ART_BROKEN_READ_BARRIER_RUN_TESTS := \ 504 098-ddmc \ 505 137-cfi \ 506 507ifeq ($(ART_USE_READ_BARRIER),true) 508 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 509 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 510 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_READ_BARRIER_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 511endif 512 513TEST_ART_BROKEN_READ_BARRIER_RUN_TESTS := 514 515# Tests that should fail in the heap poisoning configuration. 516# 137: Heap poisoning forces interpreter. Cannot run this with the interpreter. 517TEST_ART_BROKEN_HEAP_POISONING_RUN_TESTS := \ 518 137-cfi 519 520ifeq ($(ART_HEAP_POISONING),true) 521 ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ 522 $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES), \ 523 $(IMAGE_TYPES),$(PICTEST_TYPES),$(DEBUGGABLE_TYPES),$(TEST_ART_BROKEN_HEAP_POISONING_RUN_TESTS),$(ALL_ADDRESS_SIZES)) 524endif 525 526TEST_ART_BROKEN_HEAP_POISONING_RUN_TESTS := 527 528# Clear variables ahead of appending to them when defining tests. 529$(foreach target, $(TARGET_TYPES), $(eval ART_RUN_TEST_$(call name-to-var,$(target))_RULES :=)) 530$(foreach target, $(TARGET_TYPES), \ 531 $(foreach prebuild, $(PREBUILD_TYPES), \ 532 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(prebuild))_RULES :=))) 533$(foreach target, $(TARGET_TYPES), \ 534 $(foreach compiler, $(COMPILER_TYPES), \ 535 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(compiler))_RULES :=))) 536$(foreach target, $(TARGET_TYPES), \ 537 $(foreach relocate, $(RELOCATE_TYPES), \ 538 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(relocate))_RULES :=))) 539$(foreach target, $(TARGET_TYPES), \ 540 $(foreach trace, $(TRACE_TYPES), \ 541 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(trace))_RULES :=))) 542$(foreach target, $(TARGET_TYPES), \ 543 $(foreach gc, $(GC_TYPES), \ 544 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(gc))_RULES :=))) 545$(foreach target, $(TARGET_TYPES), \ 546 $(foreach jni, $(JNI_TYPES), \ 547 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(jni))_RULES :=))) 548$(foreach target, $(TARGET_TYPES), \ 549 $(foreach image, $(IMAGE_TYPES), \ 550 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(image))_RULES :=))) 551$(foreach target, $(TARGET_TYPES), \ 552 $(foreach test, $(TEST_ART_RUN_TESTS), \ 553 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(test))_RULES :=))) 554$(foreach target, $(TARGET_TYPES), \ 555 $(foreach address_size, $(ALL_ADDRESS_SIZES), \ 556 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(address_size))_RULES :=))) 557$(foreach target, $(TARGET_TYPES), \ 558 $(foreach run_type, $(RUN_TYPES), \ 559 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(run_type))_RULES :=))) 560$(foreach target, $(TARGET_TYPES), \ 561 $(foreach debuggable_type, $(DEBUGGABLE_TYPES), \ 562 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(debuggable_type))_RULES :=))) 563 564# We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync 565# only once). 566TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS) 567 568# Also need libarttest. 569TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_TEST_OUT)/$(TARGET_ARCH)/libarttest.so 570ifdef TARGET_2ND_ARCH 571TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_TEST_OUT)/$(TARGET_2ND_ARCH)/libarttest.so 572endif 573 574# Also need libnativebridgetest. 575TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_TEST_OUT)/$(TARGET_ARCH)/libnativebridgetest.so 576ifdef TARGET_2ND_ARCH 577TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_TEST_OUT)/$(TARGET_2ND_ARCH)/libnativebridgetest.so 578endif 579 580# All tests require the host executables. The tests also depend on the core images, but on 581# specific version depending on the compiler. 582ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \ 583 $(ART_HOST_EXECUTABLES) \ 584 $(ART_HOST_OUT_SHARED_LIBRARIES)/libarttest$(ART_HOST_SHLIB_EXTENSION) \ 585 $(ART_HOST_OUT_SHARED_LIBRARIES)/libnativebridgetest$(ART_HOST_SHLIB_EXTENSION) \ 586 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) 587 588ifneq ($(HOST_PREFER_32_BIT),true) 589ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \ 590 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libarttest$(ART_HOST_SHLIB_EXTENSION) \ 591 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libnativebridgetest$(ART_HOST_SHLIB_EXTENSION) \ 592 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) 593endif 594 595# Create a rule to build and run a tests following the form: 596# test-art-{1: host or target}-run-test-{2: debug ndebug}-{3: prebuild no-prebuild no-dex2oat}- 597# {4: interpreter default optimizing jit}-{5: relocate nrelocate relocate-npatchoat}- 598# {6: trace or ntrace}-{7: gcstress gcverify cms}-{8: forcecopy checkjni jni}- 599# {9: no-image image picimage}-{10: pictest npictest}- 600# {11: ndebuggable debuggable}-{12: test name}{13: 32 or 64} 601define define-test-art-run-test 602 run_test_options := 603 prereq_rule := 604 test_groups := 605 uc_host_or_target := 606 jack_classpath := 607 ifeq ($(ANDROID_COMPILE_WITH_JACK),true) 608 run_test_options += --build-with-jack 609 else 610 run_test_options += --build-with-javac-dx 611 endif 612 ifeq ($(ART_TEST_RUN_TEST_ALWAYS_CLEAN),true) 613 run_test_options += --always-clean 614 endif 615 ifeq ($(1),host) 616 uc_host_or_target := HOST 617 test_groups := ART_RUN_TEST_HOST_RULES 618 run_test_options += --host 619 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES) 620 jack_classpath := $(HOST_JACK_CLASSPATH) 621 else 622 ifeq ($(1),target) 623 uc_host_or_target := TARGET 624 test_groups := ART_RUN_TEST_TARGET_RULES 625 prereq_rule := test-art-target-sync 626 jack_classpath := $(TARGET_JACK_CLASSPATH) 627 else 628 $$(error found $(1) expected $(TARGET_TYPES)) 629 endif 630 endif 631 ifeq ($(2),debug) 632 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_DEBUG_RULES 633 else 634 ifeq ($(2),ndebug) 635 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_RELEASE_RULES 636 run_test_options += -O 637 else 638 $$(error found $(2) expected $(RUN_TYPES)) 639 endif 640 endif 641 ifeq ($(3),prebuild) 642 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_PREBUILD_RULES 643 run_test_options += --prebuild 644 else 645 ifeq ($(3),no-prebuild) 646 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_PREBUILD_RULES 647 run_test_options += --no-prebuild 648 else 649 ifeq ($(3),no-dex2oat) 650 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_DEX2OAT_RULES 651 run_test_options += --no-prebuild --no-dex2oat 652 else 653 $$(error found $(3) expected $(PREBUILD_TYPES)) 654 endif 655 endif 656 endif 657 ifeq ($(4),optimizing) 658 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_OPTIMIZING_RULES 659 run_test_options += --optimizing 660 else 661 ifeq ($(4),interpreter) 662 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_INTERPRETER_RULES 663 run_test_options += --interpreter 664 else 665 ifeq ($(4),default) 666 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_DEFAULT_RULES 667 run_test_options += --quick 668 else 669 ifeq ($(4),jit) 670 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_JIT_RULES 671 run_test_options += --jit 672 else 673 $$(error found $(4) expected $(COMPILER_TYPES)) 674 endif 675 endif 676 endif 677 endif 678 679 ifeq ($(5),relocate) 680 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_RELOCATE_RULES 681 run_test_options += --relocate 682 else 683 ifeq ($(5),no-relocate) 684 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_RELOCATE_RULES 685 run_test_options += --no-relocate 686 else 687 ifeq ($(5),relocate-npatchoat) 688 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_RELOCATE_NO_PATCHOAT_RULES 689 run_test_options += --relocate --no-patchoat 690 else 691 $$(error found $(5) expected $(RELOCATE_TYPES)) 692 endif 693 endif 694 endif 695 ifeq ($(6),trace) 696 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_TRACE_RULES 697 run_test_options += --trace 698 else 699 ifeq ($(6),ntrace) 700 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_TRACE_RULES 701 else 702 ifeq ($(6),stream) 703 # Group streaming under normal tracing rules. 704 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_TRACE_RULES 705 run_test_options += --trace --stream 706 else 707 $$(error found $(6) expected $(TRACE_TYPES)) 708 endif 709 endif 710 endif 711 ifeq ($(7),gcverify) 712 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_GCVERIFY_RULES 713 run_test_options += --gcverify 714 else 715 ifeq ($(7),gcstress) 716 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_GCSTRESS_RULES 717 run_test_options += --gcstress 718 else 719 ifeq ($(7),cms) 720 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_CMS_RULES 721 else 722 $$(error found $(7) expected $(GC_TYPES)) 723 endif 724 endif 725 endif 726 ifeq ($(8),forcecopy) 727 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_FORCECOPY_RULES 728 run_test_options += --runtime-option -Xjniopts:forcecopy 729 ifneq ($$(ART_TEST_JNI_FORCECOPY),true) 730 skip_test := true 731 endif 732 else 733 ifeq ($(8),checkjni) 734 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_CHECKJNI_RULES 735 run_test_options += --runtime-option -Xcheck:jni 736 else 737 ifeq ($(8),jni) 738 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_JNI_RULES 739 else 740 $$(error found $(8) expected $(JNI_TYPES)) 741 endif 742 endif 743 endif 744 ifeq ($(4),jit) 745 # Use interpreter image for JIT. 746 image_suffix := interpreter 747 else 748 image_suffix := $(4) 749 endif 750 ifeq ($(9),no-image) 751 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NO_IMAGE_RULES 752 run_test_options += --no-image 753 # Add the core dependency. This is required for pre-building. 754 ifeq ($(1),host) 755 prereq_rule += $$(HOST_CORE_IMAGE_$$(image_suffix)_no-pic_$(13)) 756 else 757 prereq_rule += $$(TARGET_CORE_IMAGE_$$(image_suffix)_no-pic_$(13)) 758 endif 759 else 760 ifeq ($(9),image) 761 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_IMAGE_RULES 762 # Add the core dependency. 763 ifeq ($(1),host) 764 prereq_rule += $$(HOST_CORE_IMAGE_$$(image_suffix)_no-pic_$(13)) 765 else 766 prereq_rule += $$(TARGET_CORE_IMAGE_$$(image_suffix)_no-pic_$(13)) 767 endif 768 else 769 ifeq ($(9),picimage) 770 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_PICIMAGE_RULES 771 run_test_options += --pic-image 772 ifeq ($(1),host) 773 prereq_rule += $$(HOST_CORE_IMAGE_$$(image_suffix)_pic_$(13)) 774 else 775 prereq_rule += $$(TARGET_CORE_IMAGE_$$(image_suffix)_pic_$(13)) 776 endif 777 else 778 $$(error found $(9) expected $(IMAGE_TYPES)) 779 endif 780 endif 781 endif 782 ifeq ($(10),pictest) 783 run_test_options += --pic-test 784 else 785 ifeq ($(10),npictest) 786 # Nothing to be done. 787 else 788 $$(error found $(10) expected $(PICTEST_TYPES)) 789 endif 790 endif 791 ifeq ($(11),debuggable) 792 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_DEBUGGABLE_RULES 793 run_test_options += --debuggable 794 else 795 ifeq ($(11),ndebuggable) 796 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_NONDEBUGGABLE_RULES 797 # Nothing to be done. 798 else 799 $$(error found $(11) expected $(DEBUGGABLE_TYPES)) 800 endif 801 endif 802 # $(12) is the test name. 803 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_$(call name-to-var,$(12))_RULES 804 ifeq ($(13),64) 805 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_64_RULES 806 run_test_options += --64 807 else 808 ifeq ($(13),32) 809 test_groups += ART_RUN_TEST_$$(uc_host_or_target)_32_RULES 810 else 811 $$(error found $(13) expected $(ALL_ADDRESS_SIZES)) 812 endif 813 endif 814 run_test_rule_name := test-art-$(1)-run-test-$(2)-$(3)-$(4)-$(5)-$(6)-$(7)-$(8)-$(9)-$(10)-$(11)-$(12)$(13) 815 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \ 816 $$(run_test_options) 817 ifneq ($(ART_TEST_ANDROID_ROOT),) 818 run_test_options := --android-root $(ART_TEST_ANDROID_ROOT) $$(run_test_options) 819 endif 820$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options) 821$$(run_test_rule_name): PRIVATE_JACK_CLASSPATH := $$(jack_classpath) 822.PHONY: $$(run_test_rule_name) 823$$(run_test_rule_name): $(TEST_ART_RUN_TEST_DEPENDENCIES) $(HOST_OUT_EXECUTABLES)/hprof-conv $$(prereq_rule) 824 $(hide) $$(call ART_TEST_SKIP,$$@) && \ 825 DX=$(abspath $(DX)) \ 826 JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \ 827 SMALI=$(abspath $(HOST_OUT_EXECUTABLES)/smali) \ 828 DXMERGER=$(abspath $(HOST_OUT_EXECUTABLES)/dexmerger) \ 829 JACK=$(abspath $(JACK)) \ 830 JACK_VM_COMMAND="$(JACK_VM) $(DEFAULT_JACK_VM_ARGS) $(JAVA_TMPDIR_ARG) -jar $(abspath $(JACK_LAUNCHER_JAR)) " \ 831 JACK_CLASSPATH=$$(PRIVATE_JACK_CLASSPATH) \ 832 JACK_JAR=$(abspath $(JACK_JAR)) \ 833 JILL_JAR=$(abspath $(JILL_JAR)) \ 834 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(12) \ 835 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@) 836 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \ 837 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \ 838 rm -r $(ART_HOST_TEST_DIR)) || true 839 840 $$(foreach test_group,$$(test_groups), $$(eval $$(value test_group) += $$(run_test_rule_name))) 841 842 # Clear locally defined variables. 843 uc_host_or_target := 844 test_groups := 845 run_test_options := 846 run_test_rule_name := 847 prereq_rule := 848 jack_classpath := 849endef # define-test-art-run-test 850 851$(foreach target, $(TARGET_TYPES), \ 852 $(foreach test, $(TEST_ART_RUN_TESTS), \ 853 $(foreach run_type, $(RUN_TYPES), \ 854 $(foreach address_size, $(ADDRESS_SIZES_$(call name-to-var,$(target))), \ 855 $(foreach prebuild, $(PREBUILD_TYPES), \ 856 $(foreach compiler, $(COMPILER_TYPES), \ 857 $(foreach relocate, $(RELOCATE_TYPES), \ 858 $(foreach trace, $(TRACE_TYPES), \ 859 $(foreach gc, $(GC_TYPES), \ 860 $(foreach jni, $(JNI_TYPES), \ 861 $(foreach image, $(IMAGE_TYPES), \ 862 $(foreach pictest, $(PICTEST_TYPES), \ 863 $(foreach debuggable, $(DEBUGGABLE_TYPES), \ 864 $(eval $(call define-test-art-run-test,$(target),$(run_type),$(prebuild),$(compiler),$(relocate),$(trace),$(gc),$(jni),$(image),$(pictest),$(debuggable),$(test),$(address_size))) \ 865 ))))))))))))) 866define-test-art-run-test := 867 868# Define a phony rule whose purpose is to test its prerequisites. 869# $(1): host or target 870# $(2): list of prerequisites 871define define-test-art-run-test-group 872.PHONY: $(1) 873$(1): $(2) 874 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@) 875 876endef # define-test-art-run-test-group 877 878 879$(foreach target, $(TARGET_TYPES), $(eval \ 880 $(call define-test-art-run-test-group,test-art-$(target)-run-test,$(ART_RUN_TEST_$(call name-to-var,$(target))_RULES)))) 881$(foreach target, $(TARGET_TYPES), \ 882 $(foreach prebuild, $(PREBUILD_TYPES), $(eval \ 883 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(prebuild),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(prebuild))_RULES))))) 884$(foreach target, $(TARGET_TYPES), \ 885 $(foreach run-type, $(RUN_TYPES), $(eval \ 886 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(run-type),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(run-type))_RULES))))) 887$(foreach target, $(TARGET_TYPES), \ 888 $(foreach compiler, $(COMPILER_TYPES), $(eval \ 889 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(compiler),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(compiler))_RULES))))) 890$(foreach target, $(TARGET_TYPES), \ 891 $(foreach relocate, $(RELOCATE_TYPES), $(eval \ 892 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(relocate),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(relocate))_RULES))))) 893$(foreach target, $(TARGET_TYPES), \ 894 $(foreach trace, $(TRACE_TYPES), $(eval \ 895 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(trace),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(trace))_RULES))))) 896$(foreach target, $(TARGET_TYPES), \ 897 $(foreach gc, $(GC_TYPES), $(eval \ 898 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(gc),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(gc))_RULES))))) 899$(foreach target, $(TARGET_TYPES), \ 900 $(foreach jni, $(JNI_TYPES), $(eval \ 901 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(jni),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(jni))_RULES))))) 902$(foreach target, $(TARGET_TYPES), \ 903 $(foreach debuggable, $(DEBUGGABLE_TYPES), $(eval \ 904 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(debuggable),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(debuggable))_RULES))))) 905$(foreach target, $(TARGET_TYPES), \ 906 $(foreach image, $(IMAGE_TYPES), $(eval \ 907 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(image),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(image))_RULES))))) 908$(foreach target, $(TARGET_TYPES), \ 909 $(foreach test, $(TEST_ART_RUN_TESTS), $(eval \ 910 $(call define-test-art-run-test-group,test-art-$(target)-run-test-$(test),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(test))_RULES))))) 911$(foreach target, $(TARGET_TYPES), \ 912 $(foreach address_size, $(ADDRESS_SIZES_$(call name-to-var,$(target))), $(eval \ 913 $(call define-test-art-run-test-group,test-art-$(target)-run-test$(address_size),$(ART_RUN_TEST_$(call name-to-var,$(target))_$(address_size)_RULES))))) 914 915# Clear variables now we're finished with them. 916$(foreach target, $(TARGET_TYPES), $(eval ART_RUN_TEST_$(call name-to-var,$(target))_RULES :=)) 917$(foreach target, $(TARGET_TYPES), \ 918 $(foreach prebuild, $(PREBUILD_TYPES), \ 919 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(prebuild))_RULES :=))) 920$(foreach target, $(TARGET_TYPES), \ 921 $(foreach compiler, $(COMPILER_TYPES), \ 922 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(compiler))_RULES :=))) 923$(foreach target, $(TARGET_TYPES), \ 924 $(foreach relocate, $(RELOCATE_TYPES), \ 925 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(relocate))_RULES :=))) 926$(foreach target, $(TARGET_TYPES), \ 927 $(foreach trace, $(TRACE_TYPES), \ 928 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(trace))_RULES :=))) 929$(foreach target, $(TARGET_TYPES), \ 930 $(foreach gc, $(GC_TYPES), \ 931 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(gc))_RULES :=))) 932$(foreach target, $(TARGET_TYPES), \ 933 $(foreach jni, $(JNI_TYPES), \ 934 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(jni))_RULES :=))) 935$(foreach target, $(TARGET_TYPES), \ 936 $(foreach debuggable, $(DEBUGGABLE_TYPES), \ 937 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(debuggable))_RULES :=))) 938$(foreach target, $(TARGET_TYPES), \ 939 $(foreach image, $(IMAGE_TYPES), \ 940 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(image))_RULES :=))) 941$(foreach target, $(TARGET_TYPES), \ 942 $(foreach test, $(TEST_ART_RUN_TESTS), \ 943 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(test))_RULES :=))) 944$(foreach target, $(TARGET_TYPES), \ 945 $(foreach address_size, $(ALL_ADDRESS_SIZES), \ 946 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(address_size))_RULES :=))) 947$(foreach target, $(TARGET_TYPES), \ 948 $(foreach run_type, $(RUN_TYPES), \ 949 $(eval ART_RUN_TEST_$(call name-to-var,$(target))_$(call name-to-var,$(run_type))_RULES :=))) 950define-test-art-run-test-group := 951TARGET_TYPES := 952PREBUILD_TYPES := 953COMPILER_TYPES := 954RELOCATE_TYPES := 955TRACE_TYPES := 956GC_TYPES := 957JNI_TYPES := 958IMAGE_TYPES := 959ADDRESS_SIZES_TARGET := 960ADDRESS_SIZES_HOST := 961ALL_ADDRESS_SIZES := 962RUN_TYPES := 963DEBUGGABLE_TYPES := 964 965include $(LOCAL_PATH)/Android.libarttest.mk 966include art/test/Android.libnativebridgetest.mk 967