blob: add97bece7910ca12d7d4dd1c3dd330dd94cb8ca [file] [log] [blame]
Ian Rogersafd9acc2014-06-17 08:21:54 -07001# 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# Tests that are timing sensitive and flaky on heavily loaded systems.
25TEST_ART_TIMING_SENSITIVE_RUN_TESTS := \
26 test-art-host-default-053-wait-some32 \
27 test-art-host-default-053-wait-some64 \
28 test-art-host-interpreter-053-wait-some32 \
29 test-art-host-interpreter-053-wait-some64 \
30 test-art-host-optimizing-053-wait-some32 \
31 test-art-host-optimizing-053-wait-some64 \
32 test-art-host-default-055-enum-performance32 \
33 test-art-host-default-055-enum-performance64 \
34 test-art-host-interpreter-055-enum-performance32 \
35 test-art-host-interpreter-055-enum-performance64 \
36 test-art-host-optimizing-055-enum-performance32 \
37 test-art-host-optimizing-055-enum-performance64
38
39 # disable timing sensitive tests on "dist" builds.
40ifdef dist_goal
41 ART_TEST_KNOWN_BROKEN += $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS)
42endif
43
44# The path where build only targets will be output, e.g.
45# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
46art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
47
48# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is
49# an empty file touched in the intermediate directory.
50TEST_ART_RUN_TEST_BUILD_RULES :=
51
52# Helper to create individual build targets for tests. Must be called with $(eval).
53# $(1): the test number
54define define-build-art-run-test
55 dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch
56$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
57 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
58 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
59 $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
60 $(hide) touch $$@
61
62 TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target)
63 dmart_target :=
64endef
65
66include $(CLEAR_VARS)
67LOCAL_MODULE_TAGS := tests
68LOCAL_MODULE := art-run-tests
69LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
70# The build system use this flag to pick up files generated by declare-make-art-run-test.
71LOCAL_PICKUP_FILES := $(art_run_tests_dir)
72
73include $(BUILD_PHONY_PACKAGE)
74
75# Clear temp vars.
76TEST_ART_RUN_TEST_BUILD_RULES :=
77art_run_tests_dir :=
78define-build-art-run-test :=
79
80########################################################################
81
82ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
83ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
84ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
85ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
86ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
87ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
88ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
89ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
90ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
91ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
92ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
93ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
94ART_TEST_HOST_RUN_TEST_ALL_RULES :=
95ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
96ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
97ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
98ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
99ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
100ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
101ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
102ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
103ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
104
105# We need dex2oat and dalvikvm on the target as well as the core image.
106TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
107
108# All tests require the host executables and the core images.
109ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
110 $(ART_HOST_EXECUTABLES) \
111 $(HOST_CORE_IMG_OUT) \
112 $(2ND_HOST_CORE_IMG_OUT)
113
114# For a given test create all the combinations of host/target, compiler and suffix such as:
115# test-art-host-run-test-optimizing-003-omnibus-opcodes32
116# $(1): test name, e.g. 003-omnibus-opcodes
117# $(2): host or target
118# $(3): default, optimizing or interpreter
119# $(4): 32 or 64
120define define-test-art-run-test
121 run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
122 uc_host_or_target :=
123 prereq_rule :=
124 ifeq ($(2),host)
125 uc_host_or_target := HOST
126 run_test_options += --host
127 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
128 else
129 ifeq ($(2),target)
130 uc_host_or_target := TARGET
131 prereq_rule := test-art-target-sync
132 else
133 $$(error found $(2) expected host or target)
134 endif
135 endif
136 uc_compiler :=
137 ifeq ($(3),optimizing)
138 uc_compiler := OPTIMIZING
139 run_test_options += -Xcompiler-option --compiler-backend=Optimizing
140 else
141 ifeq ($(3),interpreter)
142 uc_compiler := INTERPRETER
143 run_test_options += --interpreter
144 else
145 ifeq ($(3),default)
146 uc_compiler := DEFAULT
147 else
148 $$(error found $(3) expected optimizing, interpreter or default)
149 endif
150 endif
151 endif
152 ifeq ($(4),64)
153 run_test_options += --64
154 else
155 ifneq ($(4),32)
156 $$(error found $(4) expected 32 or 64)
157 endif
158 endif
159 run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
160 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
161 $$(run_test_options)
162$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
163.PHONY: $$(run_test_rule_name)
164$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
165 $(hide) $$(call ART_TEST_SKIP,$$@) && \
166 DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
167 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
168 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
169 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
170 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
171 rm -r $(ART_HOST_TEST_DIR)) || true
172
173 # Mark all tests with the optimizing compiler broken. TODO: fix.
174 ifeq ($(3),optimizing)
175 ART_TEST_KNOWN_BROKEN += $$(run_test_rule_name)
176 endif
177
178 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_RULES += $$(run_test_rule_name)
179 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
180 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
181 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
182 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
183 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
184 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
185
186 # Clear locally defined variables.
187 run_test_options :=
188 run_test_rule_name :=
189 uc_host_or_target :=
190 prereq_rule :=
191 uc_compiler :=
192endef # define-test-art-run-test
193
194# Define a phony rule whose purpose is to test its prerequisites.
195# $(1): rule name, e.g. test-art-host-run-test32
196# $(2): list of prerequisites
197define define-test-art-run-test-group-rule
198.PHONY: $(1)
199$(1): $(2)
200 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
201
202endef # define-test-art-run-test-group-rule
203
204# Create rules for a group of run tests.
205# $(1): test name, e.g. 003-omnibus-opcodes
206# $(2): host or target
207define define-test-art-run-test-group
208 group_uc_host_or_target :=
209 ifeq ($(2),host)
210 group_uc_host_or_target := HOST
211 else
212 ifeq ($(2),target)
213 group_uc_host_or_target := TARGET
214 else
215 $$(error found $(2) expected host or target)
216 endif
217 endif
218
219 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
220 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
221 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
222 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
223 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
224 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
225 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
226 do_second := false
227 ifeq ($(2),host)
228 ifneq ($$(HOST_PREFER_32_BIT),true)
229 do_second := true
230 endif
231 else
232 ifdef TARGET_2ND_ARCH
233 do_second := true
234 endif
235 endif
236 ifeq (true,$$(do_second))
237 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
238 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
239 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
240 endif
241
242 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
243 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
244 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
245 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
246 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
247 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
248 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
249 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
250
251 # Clear locally defined variables.
252 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
253 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
254 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
255 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
256 group_uc_host_or_target :=
257 do_second :=
258endef # define-test-art-run-test-group
259
260$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
261$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
262
263$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
264 $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
265$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
266 $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
267$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
268 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
269$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
270 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
271$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
272 $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
273$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
274 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
275$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
276 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
277$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
278 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
279ifdef TARGET_2ND_ARCH
280 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
281 $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
282 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
283 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
284 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
285 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
286 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
287 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
288endif
289
290$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
291 $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
292$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
293 $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
294$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
295 $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
296$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
297 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
298$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
299 $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
300$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
301 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
302$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
303 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
304$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
305 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
306ifneq ($(HOST_PREFER_32_BIT),true)
307 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
308 $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
309 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
310 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
311 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
312 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
313 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
314 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
315endif
316
317define-test-art-run-test :=
318define-test-art-run-test-group-rule :=
319define-test-art-run-test-group :=
320ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
321ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
322ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
323ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
324ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
325ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
326ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
327ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
328ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
329ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
330ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
331ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
332ART_TEST_HOST_RUN_TEST_ALL_RULES :=
333ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
334ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
335ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
336ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
337ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
338ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
339ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
340ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
341ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=