Android.run-test.mk revision a59dd80f9f48cb750d329d4d4af2d99d72b484d1
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# List all the test names for host and target and compiler variants.
25# $(1): test name, e.g. 003-omnibus-opcodes
26# $(2): undefined, -trace, -gcverify or -gcstress
27# $(3): -relocate, -norelocate, -prebuild, or undefined.
28define all-run-test-names
29  test-art-host-run-test$(2)-default$(3)-$(1)32 \
30  test-art-host-run-test$(2)-optimizing$(3)-$(1)32 \
31  test-art-host-run-test$(2)-interpreter$(3)-$(1)32 \
32  test-art-host-run-test$(2)-default$(3)-$(1)64 \
33  test-art-host-run-test$(2)-optimizing$(3)-$(1)64 \
34  test-art-host-run-test$(2)-interpreter$(3)-$(1)64 \
35  test-art-target-run-test$(2)-default$(3)-$(1)32 \
36  test-art-target-run-test$(2)-optimizing$(3)-$(1)32 \
37  test-art-target-run-test$(2)-interpreter$(3)-$(1)32 \
38  test-art-target-run-test$(2)-default$(3)-$(1)64 \
39  test-art-target-run-test$(2)-optimizing$(3)-$(1)64 \
40  test-art-target-run-test$(2)-interpreter$(3)-$(1)64
41endef  # all-run-test-names
42
43# Tests that are timing sensitive and flaky on heavily loaded systems.
44TEST_ART_TIMING_SENSITIVE_RUN_TESTS := \
45  053-wait-some \
46  055-enum-performance
47
48 # disable timing sensitive tests on "dist" builds.
49ifdef dist_goal
50  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),,))
51  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,))
52  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcverify,))
53  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,))
54  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),,-relocate))
55  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,-relocate))
56  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcverify,-relocate))
57  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,-relocate))
58  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),,-norelocate))
59  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,-norelocate))
60  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcverify,-norelocate))
61  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,-norelocate))
62  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),,-prebuild))
63  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,-prebuild))
64  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcverify,-prebuild))
65  ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,-prebuild))
66endif
67
68# Tests that are broken in --trace mode.
69TEST_ART_BROKEN_TRACE_RUN_TESTS := \
70  003-omnibus-opcodes \
71  004-annotations \
72  012-math \
73  018-stack-overflow \
74  023-many-interfaces \
75  027-arithmetic \
76  031-class-attributes \
77  037-inherit \
78  044-proxy \
79  046-reflect \
80  051-thread \
81  055-enum-performance \
82  062-character-encodings \
83  064-field-access \
84  074-gc-thrash \
85  078-polymorphic-virtual \
86  080-oom-throw \
87  082-inline-execute \
88  083-compiler-regressions \
89  093-serialization \
90  097-duplicate-method \
91  100-reflect2 \
92  102-concurrent-gc \
93  103-string-append \
94  107-int-math2 \
95  112-double-math \
96  700-LoadArgRegs \
97  701-easy-div-rem
98
99ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,-relocate))
100ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,-prebuild))
101ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,-norelocate))
102ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace,))
103
104# Tests that need more than 2MB of RAM or are running into other corner cases in GC stress related
105# to OOMEs.
106TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := \
107  074-gc-thrash \
108  080-oom-throw \
109  096-array-copy-concurrent-gc
110
111ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,-relocate))
112ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,-prebuild))
113ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,-norelocate))
114ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress,))
115
116
117# The path where build only targets will be output, e.g.
118# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
119art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
120
121# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is
122# an empty file touched in the intermediate directory.
123TEST_ART_RUN_TEST_BUILD_RULES :=
124
125# Helper to create individual build targets for tests. Must be called with $(eval).
126# $(1): the test number
127define define-build-art-run-test
128  dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch
129$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
130	$(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
131	$(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
132	  $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
133	$(hide) touch $$@
134
135  TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target)
136  dmart_target :=
137endef
138$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test))))
139
140include $(CLEAR_VARS)
141LOCAL_MODULE_TAGS := tests
142LOCAL_MODULE := art-run-tests
143LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
144# The build system use this flag to pick up files generated by declare-make-art-run-test.
145LOCAL_PICKUP_FILES := $(art_run_tests_dir)
146
147include $(BUILD_PHONY_PACKAGE)
148
149# Clear temp vars.
150all-run-test-names :=
151art_run_tests_dir :=
152define-build-art-run-test :=
153TEST_ART_RUN_TEST_BUILD_RULES :=
154TEST_ART_TIMING_SENSITIVE_RUN_TESTS :=
155TEST_ART_BROKEN_TRACE_RUN_TESTS :=
156TEST_ART_BROKEN_GCSTRESS_RUN_TESTS :=
157
158########################################################################
159
160ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
161ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
162ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
163ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
164ART_TEST_TARGET_RUN_TEST_RELOCATE_RULES :=
165ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE_RULES :=
166ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE_RULES :=
167ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE_RULES :=
168ART_TEST_TARGET_RUN_TEST_NORELOCATE_RULES :=
169ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE_RULES :=
170ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE_RULES :=
171ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE_RULES :=
172ART_TEST_TARGET_RUN_TEST_PREBUILD_RULES :=
173ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD_RULES :=
174ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD_RULES :=
175ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD_RULES :=
176ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
177ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
178ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
179ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
180ART_TEST_TARGET_RUN_TEST_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
181ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
182ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
183ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
184ART_TEST_TARGET_RUN_TEST_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
185ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
186ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
187ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
188ART_TEST_TARGET_RUN_TEST_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
189ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
190ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
191ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
192ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
193ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
194ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
195ART_TEST_TARGET_RUN_TEST_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
196ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
197ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
198ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
199ART_TEST_TARGET_RUN_TEST_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
200ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
201ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
202ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
203ART_TEST_TARGET_RUN_TEST_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
204ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
205ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
206ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
207ART_TEST_HOST_RUN_TEST_ALL_RULES :=
208ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
209ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
210ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
211ART_TEST_HOST_RUN_TEST_RELOCATE_RULES :=
212ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE_RULES :=
213ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE_RULES :=
214ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE_RULES :=
215ART_TEST_HOST_RUN_TEST_NORELOCATE_RULES :=
216ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE_RULES :=
217ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE_RULES :=
218ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE_RULES :=
219ART_TEST_HOST_RUN_TEST_PREBUILD_RULES :=
220ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD_RULES :=
221ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD_RULES :=
222ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD_RULES :=
223ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
224ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
225ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
226ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
227ART_TEST_HOST_RUN_TEST_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
228ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
229ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
230ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
231ART_TEST_HOST_RUN_TEST_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
232ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
233ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
234ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
235ART_TEST_HOST_RUN_TEST_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
236ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
237ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
238ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
239ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
240ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
241ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
242ART_TEST_HOST_RUN_TEST_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
243ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
244ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
245ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
246ART_TEST_HOST_RUN_TEST_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
247ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
248ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
249ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
250ART_TEST_HOST_RUN_TEST_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
251ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
252ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
253ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
254
255# We need dex2oat and dalvikvm on the target as well as the core image.
256TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
257
258# All tests require the host executables and the core images.
259ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
260  $(ART_HOST_EXECUTABLES) \
261  $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
262  $(HOST_CORE_IMG_OUT)
263
264ifneq ($(HOST_PREFER_32_BIT),true)
265ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
266  $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
267  $(2ND_HOST_CORE_IMG_OUT)
268endif
269
270# For a given test create all the combinations of host/target, compiler and suffix such as:
271# test-art-host-run-test-optimizing-003-omnibus-opcodes32
272# $(1): test name, e.g. 003-omnibus-opcodes
273# $(2): host or target
274# $(3): default, optimizing or interpreter
275# $(4): 32 or 64
276# $(5): run tests with tracing or GC verification enabled or not: trace, gcverify or undefined
277# $(6): relocate, norelocate, prebuild
278define define-test-art-run-test
279  run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
280  run_test_rule_name :=
281  uc_host_or_target :=
282  prereq_rule :=
283  skip_test := false
284  uc_reloc_type :=
285  ifeq ($(2),host)
286    uc_host_or_target := HOST
287    run_test_options += --host
288    prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
289  else
290    ifeq ($(2),target)
291      uc_host_or_target := TARGET
292      prereq_rule := test-art-target-sync
293    else
294      $$(error found $(2) expected host or target)
295    endif
296  endif
297  ifeq ($(6),relocate)
298    uc_reloc_type := RELOCATE
299    run_test_options += --relocate
300    ifneq ($(ART_TEST_RUN_TEST_RELOCATE),true)
301      skip_test := true
302    endif
303  else
304    ifeq ($(6),prebuild)
305      uc_reloc_type := PREBUILD
306      run_test_options += --relocate --prebuild
307      ifneq ($(ART_TEST_RUN_TEST_PREBUILD),true)
308        skip_test := true
309      endif
310    else
311      ifeq ($(6),norelocate)
312        uc_reloc_type := NORELOCATE
313        run_test_options += --no-relocate
314        ifneq ($(ART_TEST_RUN_TEST_NO_RELOCATE),true)
315          skip_test := true
316        endif
317      else
318        $$(error found $(6) expected relocate, norelocate or prebuild)
319      endif
320    endif
321  endif
322  uc_compiler :=
323  ifeq ($(3),optimizing)
324    uc_compiler := OPTIMIZING
325    run_test_options += -Xcompiler-option --compiler-backend=Optimizing
326    ifneq ($$(ART_TEST_OPTIMIZING),true)
327      skip_test := true
328    endif
329  else
330    ifeq ($(3),interpreter)
331      uc_compiler := INTERPRETER
332      run_test_options += --interpreter
333    else
334      ifeq ($(3),default)
335        uc_compiler := DEFAULT
336      else
337        $$(error found $(3) expected optimizing, interpreter or default)
338      endif
339    endif
340  endif
341  ifeq ($(4),64)
342    run_test_options += --64
343  else
344    ifneq ($(4),32)
345      $$(error found $(4) expected 32 or 64)
346    endif
347  endif
348  ifeq ($(5),trace)
349    run_test_options += --trace
350    run_test_rule_name := test-art-$(2)-run-test-trace-$(3)-$(6)-$(1)$(4)
351    ifneq ($$(ART_TEST_TRACE),true)
352      skip_test := true
353    endif
354  else
355    ifeq ($(5),gcverify)
356      run_test_options += --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify \
357        --runtime-option -Xgc:preverify_rosalloc --runtime-option -Xgc:postverify_rosalloc
358      run_test_rule_name := test-art-$(2)-run-test-gcverify-$(3)-$(6)-$(1)$(4)
359      ifneq ($$(ART_TEST_GC_VERIFY),true)
360        skip_test := true
361      endif
362    else
363      ifeq ($(5),gcstress)
364        run_test_options += --runtime-option -Xgc:SS --runtime-option -Xms2m \
365          --runtime-option -Xmx2m --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify
366        run_test_rule_name := test-art-$(2)-run-test-gcstress-$(3)-$(6)-$(1)$(4)
367        ifneq ($$(ART_TEST_GC_STRESS),true)
368          skip_test := true
369        endif
370      else
371        ifneq (,$(5))
372          $$(error found $(5) expected undefined or gcverify, gcstress or trace)
373        endif
374        run_test_rule_name := test-art-$(2)-run-test-$(3)-$(6)-$(1)$(4)
375      endif
376    endif
377  endif
378  ifeq ($$(skip_test),false)
379    run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
380      $$(run_test_options)
381$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
382.PHONY: $$(run_test_rule_name)
383$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
384	$(hide) $$(call ART_TEST_SKIP,$$@) && \
385	  DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
386	    art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
387	      && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
388	$$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
389	  echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
390	  rm -r $(ART_HOST_TEST_DIR)) || true
391  else
392    .PHONY: $$(run_test_rule_name)
393$$(run_test_rule_name):
394  endif
395
396  ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_RULES += $$(run_test_rule_name)
397  ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
398  ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
399  ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$$(uc_reloc_type)_RULES += $$(run_test_rule_name)
400  ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
401  ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
402  ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_reloc_type)_RULES += $$(run_test_rule_name)
403  ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
404
405  # Clear locally defined variables.
406  skip_test :=
407  run_test_options :=
408  run_test_rule_name :=
409  uc_host_or_target :=
410  prereq_rule :=
411  uc_reloc_type :=
412  uc_compiler :=
413endef  # define-test-art-run-test
414
415# Define a phony rule whose purpose is to test its prerequisites.
416# $(1): rule name, e.g. test-art-host-run-test32
417# $(2): list of prerequisites
418define define-test-art-run-test-group-rule
419.PHONY: $(1)
420$(1): $(2)
421	$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
422
423endef  # define-test-art-run-test-group-rule
424
425# Create rules for a group of run tests.
426# $(1): test name, e.g. 003-omnibus-opcodes
427# $(2): host or target
428# $(3): relocate, norelocate or prebuild
429define define-test-art-run-test-group-type
430  group_uc_host_or_target :=
431  ifeq ($(2),host)
432    group_uc_host_or_target := HOST
433  else
434    ifeq ($(2),target)
435      group_uc_host_or_target := TARGET
436    else
437      $$(error found $(2) expected host or target)
438    endif
439  endif
440
441  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
442  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
443  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
444  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
445  $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),,$(3)))
446  $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),,$(3)))
447  $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),,$(3)))
448  $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace,$(3)))
449  $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace,$(3)))
450  $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace,$(3)))
451  $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify,$(3)))
452  $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify,$(3)))
453  $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify,$(3)))
454  $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress,$(3)))
455  $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress,$(3)))
456  $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress,$(3)))
457  do_second := false
458  ifeq ($(2),host)
459    ifneq ($$(HOST_PREFER_32_BIT),true)
460      do_second := true
461    endif
462  else
463    ifdef TARGET_2ND_ARCH
464      do_second := true
465    endif
466  endif
467  ifeq (true,$$(do_second))
468    $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),,$(3)))
469    $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),,$(3)))
470    $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),,$(3)))
471    $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace,$(3)))
472    $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace,$(3)))
473    $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace,$(3)))
474    $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify,$(3)))
475    $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify,$(3)))
476    $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify,$(3)))
477    $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress,$(3)))
478    $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress,$(3)))
479    $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress,$(3)))
480  endif
481endef  # define-test-art-run-test-group-type
482
483# Create rules for a group of run tests.
484# $(1): test name, e.g. 003-omnibus-opcodes
485# $(2): host or target
486define define-test-art-run-test-group
487  group_uc_host_or_target :=
488  ifeq ($(2),host)
489    group_uc_host_or_target := HOST
490  else
491    ifeq ($(2),target)
492      group_uc_host_or_target := TARGET
493    else
494      $$(error found $(2) expected host or target)
495    endif
496  endif
497  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
498  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
499  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
500  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
501  $$(eval $$(call define-test-art-run-test-group-type,$(1),$(2),norelocate))
502  $$(eval $$(call define-test-art-run-test-group-type,$(1),$(2),relocate))
503  $$(eval $$(call define-test-art-run-test-group-type,$(1),$(2),prebuild))
504  $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
505    $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
506  $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
507    $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
508  $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
509    $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
510  $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
511    $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
512
513  # Clear locally defined variables.
514  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
515  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
516  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
517  ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
518  group_uc_host_or_target :=
519  do_second :=
520endef  # define-test-art-run-test-group
521
522$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
523$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
524
525$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-prebuild, \
526  $(ART_TEST_TARGET_RUN_TEST_PREBUILD_RULES)))
527$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-norelocate, \
528  $(ART_TEST_TARGET_RUN_TEST_NORELOCATE_RULES)))
529$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-relocate, \
530  $(ART_TEST_TARGET_RUN_TEST_RELOCATE_RULES)))
531$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
532  $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
533$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
534  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
535$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
536  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
537$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
538  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
539$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-prebuild, \
540  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD_RULES)))
541$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-prebuild, \
542  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD_RULES)))
543$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-prebuild, \
544  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD_RULES)))
545$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-norelocate, \
546  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE_RULES)))
547$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-norelocate, \
548  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE_RULES)))
549$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-norelocate, \
550  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE_RULES)))
551$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-relocate, \
552  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE_RULES)))
553$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-relocate, \
554  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE_RULES)))
555$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-relocate, \
556  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE_RULES)))
557$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
558  $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
559$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
560  $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
561$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
562  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
563$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
564  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
565$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-prebuild$(ART_PHONY_TEST_TARGET_SUFFIX), \
566  $(ART_TEST_TARGET_RUN_TEST_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
567$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-norelocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
568  $(ART_TEST_TARGET_RUN_TEST_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
569$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-relocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
570  $(ART_TEST_TARGET_RUN_TEST_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
571$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-prebuild$(ART_PHONY_TEST_TARGET_SUFFIX), \
572  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
573$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-prebuild$(ART_PHONY_TEST_TARGET_SUFFIX), \
574  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
575$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-prebuild$(ART_PHONY_TEST_TARGET_SUFFIX), \
576  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
577$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-norelocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
578  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
579$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-norelocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
580  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
581$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-norelocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
582  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
583$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-relocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
584  $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
585$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-relocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
586  $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
587$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-relocate$(ART_PHONY_TEST_TARGET_SUFFIX), \
588  $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
589ifdef TARGET_2ND_ARCH
590  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
591    $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
592  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
593    $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
594  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
595    $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
596  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
597    $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
598  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-prebuild$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
599    $(ART_TEST_TARGET_RUN_TEST_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
600  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-norelocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
601    $(ART_TEST_TARGET_RUN_TEST_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
602  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-relocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
603    $(ART_TEST_TARGET_RUN_TEST_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
604  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-prebuild$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
605    $(ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
606  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-prebuild$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
607    $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
608  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-prebuild$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
609    $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
610  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-norelocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
611    $(ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
612  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-norelocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
613    $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
614  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-norelocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
615    $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
616  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default-relocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
617    $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
618  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter-relocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
619    $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
620  $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing-relocate$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
621    $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
622endif
623
624$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-prebuild, \
625  $(ART_TEST_HOST_RUN_TEST_PREBUILD_RULES)))
626$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-norelocate, \
627  $(ART_TEST_HOST_RUN_TEST_NORELOCATE_RULES)))
628$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-relocate, \
629  $(ART_TEST_HOST_RUN_TEST_RELOCATE_RULES)))
630$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
631  $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
632$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
633  $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
634$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
635  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
636$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
637  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
638$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-prebuild, \
639  $(ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD_RULES)))
640$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-prebuild, \
641  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD_RULES)))
642$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-prebuild, \
643  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD_RULES)))
644$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-norelocate, \
645  $(ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE_RULES)))
646$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-norelocate, \
647  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE_RULES)))
648$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-norelocate, \
649  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE_RULES)))
650$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-relocate, \
651  $(ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE_RULES)))
652$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-relocate, \
653  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE_RULES)))
654$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-relocate, \
655  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE_RULES)))
656$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
657  $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
658$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
659  $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
660$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
661  $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
662$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
663  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
664$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-prebuild$(ART_PHONY_TEST_HOST_SUFFIX), \
665  $(ART_TEST_HOST_RUN_TEST_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
666$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-norelocate$(ART_PHONY_TEST_HOST_SUFFIX), \
667  $(ART_TEST_HOST_RUN_TEST_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
668$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-relocate$(ART_PHONY_TEST_HOST_SUFFIX), \
669  $(ART_TEST_HOST_RUN_TEST_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
670$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-prebuild$(ART_PHONY_TEST_HOST_SUFFIX), \
671  $(ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
672$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-prebuild$(ART_PHONY_TEST_HOST_SUFFIX), \
673  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
674$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-prebuild$(ART_PHONY_TEST_HOST_SUFFIX), \
675  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
676$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-norelocate$(ART_PHONY_TEST_HOST_SUFFIX), \
677  $(ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
678$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-norelocate$(ART_PHONY_TEST_HOST_SUFFIX), \
679  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
680$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-norelocate$(ART_PHONY_TEST_HOST_SUFFIX), \
681  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
682$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-relocate$(ART_PHONY_TEST_HOST_SUFFIX), \
683  $(ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
684$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-relocate$(ART_PHONY_TEST_HOST_SUFFIX), \
685  $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
686$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-relocate$(ART_PHONY_TEST_HOST_SUFFIX), \
687  $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
688ifneq ($(HOST_PREFER_32_BIT),true)
689  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
690    $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
691  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
692    $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
693  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
694    $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
695  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
696    $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
697  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-prebuild$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
698    $(ART_TEST_HOST_RUN_TEST_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
699  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-norelocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
700    $(ART_TEST_HOST_RUN_TEST_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
701  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-relocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
702    $(ART_TEST_HOST_RUN_TEST_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
703  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-prebuild$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
704    $(ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
705  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-prebuild$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
706    $(ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
707  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-prebuild$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
708    $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
709  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-norelocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
710    $(ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
711  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-norelocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
712    $(ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
713  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-norelocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
714    $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
715  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default-relocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
716    $(ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
717  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter-relocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
718    $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
719  $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing-relocate$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
720    $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
721endif
722
723define-test-art-run-test :=
724define-test-art-run-test-group-rule :=
725define-test-art-run-test-group :=
726TEST_ART_RUN_TESTS :=
727ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
728ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
729ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
730ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
731ART_TEST_TARGET_RUN_TEST_RELOCATE_RULES :=
732ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE_RULES :=
733ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE_RULES :=
734ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE_RULES :=
735ART_TEST_TARGET_RUN_TEST_NORELOCATE_RULES :=
736ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE_RULES :=
737ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE_RULES :=
738ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE_RULES :=
739ART_TEST_TARGET_RUN_TEST_PREBUILD_RULES :=
740ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD_RULES :=
741ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD_RULES :=
742ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD_RULES :=
743ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
744ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
745ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
746ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
747ART_TEST_TARGET_RUN_TEST_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
748ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
749ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
750ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
751ART_TEST_TARGET_RUN_TEST_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
752ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
753ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
754ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
755ART_TEST_TARGET_RUN_TEST_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
756ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
757ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
758ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
759ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
760ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
761ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
762ART_TEST_TARGET_RUN_TEST_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
763ART_TEST_TARGET_RUN_TEST_DEFAULT_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
764ART_TEST_TARGET_RUN_TEST_INTERPRETER_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
765ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
766ART_TEST_TARGET_RUN_TEST_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
767ART_TEST_TARGET_RUN_TEST_DEFAULT_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
768ART_TEST_TARGET_RUN_TEST_INTERPRETER_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
769ART_TEST_TARGET_RUN_TEST_OPTIMIZING_NORELOCATE$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
770ART_TEST_TARGET_RUN_TEST_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
771ART_TEST_TARGET_RUN_TEST_DEFAULT_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
772ART_TEST_TARGET_RUN_TEST_INTERPRETER_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
773ART_TEST_TARGET_RUN_TEST_OPTIMIZING_PREBUILD$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
774ART_TEST_HOST_RUN_TEST_ALL_RULES :=
775ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
776ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
777ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
778ART_TEST_HOST_RUN_TEST_RELOCATE_RULES :=
779ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE_RULES :=
780ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE_RULES :=
781ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE_RULES :=
782ART_TEST_HOST_RUN_TEST_NORELOCATE_RULES :=
783ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE_RULES :=
784ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE_RULES :=
785ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE_RULES :=
786ART_TEST_HOST_RUN_TEST_PREBUILD_RULES :=
787ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD_RULES :=
788ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD_RULES :=
789ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD_RULES :=
790ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
791ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
792ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
793ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
794ART_TEST_HOST_RUN_TEST_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
795ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
796ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
797ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
798ART_TEST_HOST_RUN_TEST_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
799ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
800ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
801ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
802ART_TEST_HOST_RUN_TEST_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
803ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
804ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
805ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
806ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
807ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
808ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
809ART_TEST_HOST_RUN_TEST_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
810ART_TEST_HOST_RUN_TEST_DEFAULT_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
811ART_TEST_HOST_RUN_TEST_INTERPRETER_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
812ART_TEST_HOST_RUN_TEST_OPTIMIZING_RELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
813ART_TEST_HOST_RUN_TEST_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
814ART_TEST_HOST_RUN_TEST_DEFAULT_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
815ART_TEST_HOST_RUN_TEST_INTERPRETER_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
816ART_TEST_HOST_RUN_TEST_OPTIMIZING_NORELOCATE$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
817ART_TEST_HOST_RUN_TEST_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
818ART_TEST_HOST_RUN_TEST_DEFAULT_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
819ART_TEST_HOST_RUN_TEST_INTERPRETER_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
820ART_TEST_HOST_RUN_TEST_OPTIMIZING_PREBUILD$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
821