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