blob: 6863d42c3eefe65e3dc0dba724f9b4e5d558fe25 [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
Ian Rogersbf66bce2014-06-24 23:15:34 -070065$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test))))
Ian Rogersafd9acc2014-06-17 08:21:54 -070066
67include $(CLEAR_VARS)
68LOCAL_MODULE_TAGS := tests
69LOCAL_MODULE := art-run-tests
70LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
71# The build system use this flag to pick up files generated by declare-make-art-run-test.
72LOCAL_PICKUP_FILES := $(art_run_tests_dir)
73
74include $(BUILD_PHONY_PACKAGE)
75
76# Clear temp vars.
77TEST_ART_RUN_TEST_BUILD_RULES :=
78art_run_tests_dir :=
79define-build-art-run-test :=
80
81########################################################################
82
83ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
84ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
85ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
86ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
87ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
88ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
89ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
90ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
91ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
92ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
93ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
94ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
95ART_TEST_HOST_RUN_TEST_ALL_RULES :=
96ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
97ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
98ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
99ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
100ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
101ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
102ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
103ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
104ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
105
106# We need dex2oat and dalvikvm on the target as well as the core image.
107TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
108
109# All tests require the host executables and the core images.
110ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
111 $(ART_HOST_EXECUTABLES) \
Brian Carlstrom519e3d02014-06-25 00:57:36 -0700112 $(ART_HOST_LIBRARY_PATH)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
113 $(HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700114
115ifneq ($(HOST_PREFER_32_BIT),true)
116ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
117 $(2ND_ART_HOST_LIBRARY_PATH)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Ian Rogersafd9acc2014-06-17 08:21:54 -0700118 $(2ND_HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700119endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700120
121# For a given test create all the combinations of host/target, compiler and suffix such as:
122# test-art-host-run-test-optimizing-003-omnibus-opcodes32
123# $(1): test name, e.g. 003-omnibus-opcodes
124# $(2): host or target
125# $(3): default, optimizing or interpreter
126# $(4): 32 or 64
127define define-test-art-run-test
128 run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
129 uc_host_or_target :=
130 prereq_rule :=
131 ifeq ($(2),host)
132 uc_host_or_target := HOST
133 run_test_options += --host
134 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
135 else
136 ifeq ($(2),target)
137 uc_host_or_target := TARGET
138 prereq_rule := test-art-target-sync
139 else
140 $$(error found $(2) expected host or target)
141 endif
142 endif
143 uc_compiler :=
144 ifeq ($(3),optimizing)
145 uc_compiler := OPTIMIZING
146 run_test_options += -Xcompiler-option --compiler-backend=Optimizing
147 else
148 ifeq ($(3),interpreter)
149 uc_compiler := INTERPRETER
150 run_test_options += --interpreter
151 else
152 ifeq ($(3),default)
153 uc_compiler := DEFAULT
154 else
155 $$(error found $(3) expected optimizing, interpreter or default)
156 endif
157 endif
158 endif
159 ifeq ($(4),64)
160 run_test_options += --64
161 else
162 ifneq ($(4),32)
163 $$(error found $(4) expected 32 or 64)
164 endif
165 endif
166 run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
167 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
168 $$(run_test_options)
169$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
170.PHONY: $$(run_test_rule_name)
171$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
172 $(hide) $$(call ART_TEST_SKIP,$$@) && \
173 DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
174 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
175 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
176 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
177 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
178 rm -r $(ART_HOST_TEST_DIR)) || true
179
180 # Mark all tests with the optimizing compiler broken. TODO: fix.
181 ifeq ($(3),optimizing)
182 ART_TEST_KNOWN_BROKEN += $$(run_test_rule_name)
183 endif
184
185 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_RULES += $$(run_test_rule_name)
186 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
187 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
188 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
189 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
190 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
191 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
192
193 # Clear locally defined variables.
194 run_test_options :=
195 run_test_rule_name :=
196 uc_host_or_target :=
197 prereq_rule :=
198 uc_compiler :=
199endef # define-test-art-run-test
200
201# Define a phony rule whose purpose is to test its prerequisites.
202# $(1): rule name, e.g. test-art-host-run-test32
203# $(2): list of prerequisites
204define define-test-art-run-test-group-rule
205.PHONY: $(1)
206$(1): $(2)
207 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
208
209endef # define-test-art-run-test-group-rule
210
211# Create rules for a group of run tests.
212# $(1): test name, e.g. 003-omnibus-opcodes
213# $(2): host or target
214define define-test-art-run-test-group
215 group_uc_host_or_target :=
216 ifeq ($(2),host)
217 group_uc_host_or_target := HOST
218 else
219 ifeq ($(2),target)
220 group_uc_host_or_target := TARGET
221 else
222 $$(error found $(2) expected host or target)
223 endif
224 endif
225
226 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
227 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
228 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
229 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
230 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
231 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
232 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
233 do_second := false
234 ifeq ($(2),host)
235 ifneq ($$(HOST_PREFER_32_BIT),true)
236 do_second := true
237 endif
238 else
239 ifdef TARGET_2ND_ARCH
240 do_second := true
241 endif
242 endif
243 ifeq (true,$$(do_second))
244 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
245 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
246 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX)))
247 endif
248
249 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
250 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
251 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
252 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
253 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
254 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
255 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
256 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
257
258 # Clear locally defined variables.
259 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
260 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
261 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
262 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
263 group_uc_host_or_target :=
264 do_second :=
265endef # define-test-art-run-test-group
266
267$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
268$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
269
270$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
271 $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
272$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
273 $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
274$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
275 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
276$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
277 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
278$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
279 $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
280$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
281 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
282$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
283 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
284$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
285 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
286ifdef TARGET_2ND_ARCH
287 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
288 $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
289 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
290 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
291 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
292 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
293 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
294 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
295endif
296
297$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
298 $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
299$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
300 $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
301$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
302 $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
303$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
304 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
305$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
306 $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
307$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
308 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
309$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
310 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
311$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
312 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
313ifneq ($(HOST_PREFER_32_BIT),true)
314 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
315 $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
316 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
317 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
318 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
319 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
320 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
321 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
322endif
323
324define-test-art-run-test :=
325define-test-art-run-test-group-rule :=
326define-test-art-run-test-group :=
327ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
328ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
329ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
330ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
331ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
332ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
333ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
334ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
335ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
336ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
337ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
338ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
339ART_TEST_HOST_RUN_TEST_ALL_RULES :=
340ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
341ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
342ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
343ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
344ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
345ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
346ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
347ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
348ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=