blob: 8e049ee4447b88ebab7a97f87f3bdd0c79dcd365 [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
Ian Rogers716e4f82014-07-16 11:18:03 -070024# List all the test names for host and target excluding the -trace suffix
25# $(1): test name, e.g. 003-omnibus-opcodes
26# $(2): undefined or -trace
27define all-run-test-names
28 test-art-host-run-test$(2)-default-$(1)32 \
29 test-art-host-run-test$(2)-optimizing-$(1)32 \
30 test-art-host-run-test$(2)-interpreter-$(1)32 \
31 test-art-host-run-test$(2)-default-$(1)64 \
32 test-art-host-run-test$(2)-optimizing-$(1)64 \
33 test-art-host-run-test$(2)-interpreter-$(1)64 \
34 test-art-target-run-test$(2)-default-$(1)32 \
35 test-art-target-run-test$(2)-optimizing-$(1)32 \
36 test-art-target-run-test$(2)-interpreter-$(1)32 \
37 test-art-target-run-test$(2)-default-$(1)64 \
38 test-art-target-run-test$(2)-optimizing-$(1)64 \
39 test-art-target-run-test$(2)-interpreter-$(1)64
40endef # all-run-test-names
41
Ian Rogersafd9acc2014-06-17 08:21:54 -070042# Tests that are timing sensitive and flaky on heavily loaded systems.
43TEST_ART_TIMING_SENSITIVE_RUN_TESTS := \
Ian Rogers716e4f82014-07-16 11:18:03 -070044 053-wait-some \
45 055-enum-performance
Ian Rogersafd9acc2014-06-17 08:21:54 -070046
47 # disable timing sensitive tests on "dist" builds.
48ifdef dist_goal
Ian Rogers716e4f82014-07-16 11:18:03 -070049 ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),))
50 ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-trace))
Ian Rogersafd9acc2014-06-17 08:21:54 -070051endif
52
Ian Rogers716e4f82014-07-16 11:18:03 -070053# Tests that are broken in --trace mode.
54TEST_ART_BROKEN_TRACE_RUN_TESTS := \
55 003-omnibus-opcodes \
56 004-annotations \
Ian Rogers8a14b752014-07-18 15:06:53 -070057 012-math \
Ian Rogers716e4f82014-07-16 11:18:03 -070058 018-stack-overflow \
59 023-many-interfaces \
60 031-class-attributes \
61 037-inherit \
62 044-proxy \
63 046-reflect \
64 051-thread \
65 055-enum-performance \
66 064-field-access \
67 078-polymorphic-virtual \
68 080-oom-throw \
69 082-inline-execute \
70 083-compiler-regressions \
Ian Rogers55bce0c2014-07-16 14:49:34 -070071 093-serialization \
Ian Rogers716e4f82014-07-16 11:18:03 -070072 097-duplicate-method \
73 100-reflect2 \
74 102-concurrent-gc \
75 103-string-append \
76 107-int-math2 \
77 112-double-math \
78 701-easy-div-rem
79
80ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace))
81
Ian Rogers8a14b752014-07-18 15:06:53 -070082# Tests that need more than 2MB of RAM or are running into other corner cases in GC stress related
83# to OOMEs.
84TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := \
85 074-gc-thrash \
86 080-oom-throw \
87 096-array-copy-concurrent
88
89ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress))
90
91
Ian Rogersafd9acc2014-06-17 08:21:54 -070092# The path where build only targets will be output, e.g.
93# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
94art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
95
96# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is
97# an empty file touched in the intermediate directory.
98TEST_ART_RUN_TEST_BUILD_RULES :=
99
100# Helper to create individual build targets for tests. Must be called with $(eval).
101# $(1): the test number
102define define-build-art-run-test
103 dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch
104$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
105 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
106 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
107 $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
108 $(hide) touch $$@
109
110 TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target)
111 dmart_target :=
112endef
Ian Rogersbf66bce2014-06-24 23:15:34 -0700113$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test))))
Ian Rogersafd9acc2014-06-17 08:21:54 -0700114
115include $(CLEAR_VARS)
116LOCAL_MODULE_TAGS := tests
117LOCAL_MODULE := art-run-tests
118LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
119# The build system use this flag to pick up files generated by declare-make-art-run-test.
120LOCAL_PICKUP_FILES := $(art_run_tests_dir)
121
122include $(BUILD_PHONY_PACKAGE)
123
124# Clear temp vars.
Ian Rogers8a14b752014-07-18 15:06:53 -0700125all-run-test-names :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700126art_run_tests_dir :=
127define-build-art-run-test :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700128TEST_ART_RUN_TEST_BUILD_RULES :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700129TEST_ART_TIMING_SENSITIVE_RUN_TESTS :=
130TEST_ART_BROKEN_TRACE_RUN_TESTS :=
131TEST_ART_BROKEN_GCSTRESS_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700132
133########################################################################
134
135ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
136ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
137ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
138ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
139ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
140ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
141ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
142ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
143ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
144ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
145ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
146ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
147ART_TEST_HOST_RUN_TEST_ALL_RULES :=
148ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
149ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
150ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700151ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700152ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
153ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
154ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700155ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700156ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
157ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
158ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
159
160# We need dex2oat and dalvikvm on the target as well as the core image.
161TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
162
163# All tests require the host executables and the core images.
164ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
165 $(ART_HOST_EXECUTABLES) \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100166 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Brian Carlstrom519e3d02014-06-25 00:57:36 -0700167 $(HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700168
169ifneq ($(HOST_PREFER_32_BIT),true)
170ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100171 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Ian Rogersafd9acc2014-06-17 08:21:54 -0700172 $(2ND_HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700173endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700174
175# For a given test create all the combinations of host/target, compiler and suffix such as:
176# test-art-host-run-test-optimizing-003-omnibus-opcodes32
177# $(1): test name, e.g. 003-omnibus-opcodes
178# $(2): host or target
179# $(3): default, optimizing or interpreter
180# $(4): 32 or 64
Ian Rogers701aa642014-07-18 11:38:13 -0700181# $(5): run tests with tracing or GC verification enabled or not: trace, gcverify or undefined
Ian Rogersafd9acc2014-06-17 08:21:54 -0700182define define-test-art-run-test
183 run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
Ian Rogers716e4f82014-07-16 11:18:03 -0700184 run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700185 uc_host_or_target :=
186 prereq_rule :=
Ian Rogers064a59d2014-07-18 15:55:59 -0700187 skip_test := false
Ian Rogersafd9acc2014-06-17 08:21:54 -0700188 ifeq ($(2),host)
189 uc_host_or_target := HOST
190 run_test_options += --host
191 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
192 else
193 ifeq ($(2),target)
194 uc_host_or_target := TARGET
195 prereq_rule := test-art-target-sync
196 else
197 $$(error found $(2) expected host or target)
198 endif
199 endif
200 uc_compiler :=
201 ifeq ($(3),optimizing)
202 uc_compiler := OPTIMIZING
203 run_test_options += -Xcompiler-option --compiler-backend=Optimizing
Ian Rogers5242c0a2014-07-18 11:02:19 -0700204 ifneq ($$(ART_TEST_OPTIMIZING),true)
205 skip_test := true
206 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700207 else
208 ifeq ($(3),interpreter)
209 uc_compiler := INTERPRETER
210 run_test_options += --interpreter
211 else
212 ifeq ($(3),default)
213 uc_compiler := DEFAULT
214 else
215 $$(error found $(3) expected optimizing, interpreter or default)
216 endif
217 endif
218 endif
219 ifeq ($(4),64)
220 run_test_options += --64
221 else
222 ifneq ($(4),32)
223 $$(error found $(4) expected 32 or 64)
224 endif
225 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700226 ifeq ($(5),trace)
227 run_test_options += --trace
228 run_test_rule_name := test-art-$(2)-run-test-trace-$(3)-$(1)$(4)
Ian Rogers5242c0a2014-07-18 11:02:19 -0700229 ifneq ($$(ART_TEST_TRACE),true)
230 skip_test := true
231 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700232 else
Ian Rogers701aa642014-07-18 11:38:13 -0700233 ifeq ($(5),gcverify)
234 run_test_options += --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify \
235 --runtime-option -Xgc:preverify_rosalloc --runtime-option -Xgc:postverify_rosalloc
236 run_test_rule_name := test-art-$(2)-run-test-gcverify-$(3)-$(1)$(4)
237 ifneq ($$(ART_TEST_GC_VERIFY),true)
238 skip_test := true
239 endif
240 else
Ian Rogers8a14b752014-07-18 15:06:53 -0700241 ifeq ($(5),gcstress)
242 run_test_options += --runtime-option -Xgc:SS --runtime-option -Xms2m \
243 --runtime-option -Xmx2m --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify
244 run_test_rule_name := test-art-$(2)-run-test-gcstress-$(3)-$(1)$(4)
245 ifneq ($$(ART_TEST_GC_STRESS),true)
246 skip_test := true
247 endif
248 else
249 ifneq (,$(5))
250 $$(error found $(5) expected undefined or gcverify, gcstress or trace)
251 endif
Ian Rogers701aa642014-07-18 11:38:13 -0700252 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700253 endif
254 endif
Ian Rogers5242c0a2014-07-18 11:02:19 -0700255 ifeq ($$(skip_test),false)
256 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
257 $$(run_test_options)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700258$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
259.PHONY: $$(run_test_rule_name)
260$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
261 $(hide) $$(call ART_TEST_SKIP,$$@) && \
262 DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
263 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
264 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
265 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
266 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
267 rm -r $(ART_HOST_TEST_DIR)) || true
Ian Rogers5242c0a2014-07-18 11:02:19 -0700268 else
269 .PHONY: $$(run_test_rule_name)
270$$(run_test_rule_name):
271 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700272
Ian Rogersafd9acc2014-06-17 08:21:54 -0700273 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_RULES += $$(run_test_rule_name)
274 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
275 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
276 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
277 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
278 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
279 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
280
281 # Clear locally defined variables.
Ian Rogers5242c0a2014-07-18 11:02:19 -0700282 skip_test :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700283 run_test_options :=
284 run_test_rule_name :=
285 uc_host_or_target :=
286 prereq_rule :=
287 uc_compiler :=
288endef # define-test-art-run-test
289
290# Define a phony rule whose purpose is to test its prerequisites.
291# $(1): rule name, e.g. test-art-host-run-test32
292# $(2): list of prerequisites
293define define-test-art-run-test-group-rule
294.PHONY: $(1)
295$(1): $(2)
296 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
297
298endef # define-test-art-run-test-group-rule
299
300# Create rules for a group of run tests.
301# $(1): test name, e.g. 003-omnibus-opcodes
302# $(2): host or target
303define define-test-art-run-test-group
304 group_uc_host_or_target :=
305 ifeq ($(2),host)
306 group_uc_host_or_target := HOST
307 else
308 ifeq ($(2),target)
309 group_uc_host_or_target := TARGET
310 else
311 $$(error found $(2) expected host or target)
312 endif
313 endif
314
315 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
316 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
317 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
318 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700319 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
320 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
321 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
Ian Rogers5242c0a2014-07-18 11:02:19 -0700322 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
323 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
324 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
Ian Rogers701aa642014-07-18 11:38:13 -0700325 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
326 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
327 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
Ian Rogers8a14b752014-07-18 15:06:53 -0700328 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
329 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
330 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
Ian Rogersafd9acc2014-06-17 08:21:54 -0700331 do_second := false
332 ifeq ($(2),host)
333 ifneq ($$(HOST_PREFER_32_BIT),true)
334 do_second := true
335 endif
336 else
337 ifdef TARGET_2ND_ARCH
338 do_second := true
339 endif
340 endif
341 ifeq (true,$$(do_second))
Ian Rogers716e4f82014-07-16 11:18:03 -0700342 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
343 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
344 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
Ian Rogers5242c0a2014-07-18 11:02:19 -0700345 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
346 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
347 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
Ian Rogers701aa642014-07-18 11:38:13 -0700348 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
349 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
350 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
Ian Rogers8a14b752014-07-18 15:06:53 -0700351 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
352 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
353 $$(eval $$(call define-test-art-run-test,$(1),$(2),optimizing,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
Ian Rogersafd9acc2014-06-17 08:21:54 -0700354 endif
355
356 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
357 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
358 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
359 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
360 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
361 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
362 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
363 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
364
365 # Clear locally defined variables.
366 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
367 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
368 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
369 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
370 group_uc_host_or_target :=
371 do_second :=
372endef # define-test-art-run-test-group
373
374$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
375$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
376
377$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
378 $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
379$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
380 $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
381$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
382 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
383$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
384 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
385$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
386 $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
387$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
388 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
389$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
390 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
391$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
392 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
393ifdef TARGET_2ND_ARCH
394 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
395 $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
396 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
397 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
398 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
399 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
400 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
401 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
402endif
403
404$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
405 $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
406$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
407 $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
408$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
409 $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
410$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
411 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
412$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
413 $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
414$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
415 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
416$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
417 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
418$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
419 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
420ifneq ($(HOST_PREFER_32_BIT),true)
421 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
422 $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
423 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
424 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
425 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
426 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
427 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
428 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
429endif
430
431define-test-art-run-test :=
432define-test-art-run-test-group-rule :=
433define-test-art-run-test-group :=
Ian Rogers064a59d2014-07-18 15:55:59 -0700434TEST_ART_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700435ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
436ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
437ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
438ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
439ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
440ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
441ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
442ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
443ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
444ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
445ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
446ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
447ART_TEST_HOST_RUN_TEST_ALL_RULES :=
448ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
449ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
450ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700451ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700452ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
453ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
454ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700455ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700456ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
457ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
458ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=