blob: ecb4ecc883b1f5733f673207ac0fa845d20c0c8c [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 :=
129TEST_ART_RUN_TESTS :=
130TEST_ART_TIMING_SENSITIVE_RUN_TESTS :=
131TEST_ART_BROKEN_TRACE_RUN_TESTS :=
132TEST_ART_BROKEN_GCSTRESS_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700133
134########################################################################
135
136ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
137ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
138ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
139ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
140ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
141ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
142ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
143ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
144ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
145ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
146ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
147ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
148ART_TEST_HOST_RUN_TEST_ALL_RULES :=
149ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
150ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
151ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700152ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700153ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
154ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
155ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700156ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700157ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
158ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
159ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
160
161# We need dex2oat and dalvikvm on the target as well as the core image.
162TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
163
164# All tests require the host executables and the core images.
165ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
166 $(ART_HOST_EXECUTABLES) \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100167 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Brian Carlstrom519e3d02014-06-25 00:57:36 -0700168 $(HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700169
170ifneq ($(HOST_PREFER_32_BIT),true)
171ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100172 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Ian Rogersafd9acc2014-06-17 08:21:54 -0700173 $(2ND_HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700174endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700175
176# For a given test create all the combinations of host/target, compiler and suffix such as:
177# test-art-host-run-test-optimizing-003-omnibus-opcodes32
178# $(1): test name, e.g. 003-omnibus-opcodes
179# $(2): host or target
180# $(3): default, optimizing or interpreter
181# $(4): 32 or 64
Ian Rogers701aa642014-07-18 11:38:13 -0700182# $(5): run tests with tracing or GC verification enabled or not: trace, gcverify or undefined
Ian Rogersafd9acc2014-06-17 08:21:54 -0700183define define-test-art-run-test
184 run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
Ian Rogers716e4f82014-07-16 11:18:03 -0700185 run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700186 uc_host_or_target :=
187 prereq_rule :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700188 skip_test := true
Ian Rogersafd9acc2014-06-17 08:21:54 -0700189 ifeq ($(2),host)
190 uc_host_or_target := HOST
191 run_test_options += --host
192 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
193 else
194 ifeq ($(2),target)
195 uc_host_or_target := TARGET
196 prereq_rule := test-art-target-sync
197 else
198 $$(error found $(2) expected host or target)
199 endif
200 endif
201 uc_compiler :=
202 ifeq ($(3),optimizing)
203 uc_compiler := OPTIMIZING
204 run_test_options += -Xcompiler-option --compiler-backend=Optimizing
Ian Rogers5242c0a2014-07-18 11:02:19 -0700205 ifneq ($$(ART_TEST_OPTIMIZING),true)
206 skip_test := true
207 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700208 else
209 ifeq ($(3),interpreter)
210 uc_compiler := INTERPRETER
211 run_test_options += --interpreter
212 else
213 ifeq ($(3),default)
214 uc_compiler := DEFAULT
215 else
216 $$(error found $(3) expected optimizing, interpreter or default)
217 endif
218 endif
219 endif
220 ifeq ($(4),64)
221 run_test_options += --64
222 else
223 ifneq ($(4),32)
224 $$(error found $(4) expected 32 or 64)
225 endif
226 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700227 ifeq ($(5),trace)
228 run_test_options += --trace
229 run_test_rule_name := test-art-$(2)-run-test-trace-$(3)-$(1)$(4)
Ian Rogers5242c0a2014-07-18 11:02:19 -0700230 ifneq ($$(ART_TEST_TRACE),true)
231 skip_test := true
232 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700233 else
Ian Rogers701aa642014-07-18 11:38:13 -0700234 ifeq ($(5),gcverify)
235 run_test_options += --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify \
236 --runtime-option -Xgc:preverify_rosalloc --runtime-option -Xgc:postverify_rosalloc
237 run_test_rule_name := test-art-$(2)-run-test-gcverify-$(3)-$(1)$(4)
238 ifneq ($$(ART_TEST_GC_VERIFY),true)
239 skip_test := true
240 endif
241 else
Ian Rogers8a14b752014-07-18 15:06:53 -0700242 ifeq ($(5),gcstress)
243 run_test_options += --runtime-option -Xgc:SS --runtime-option -Xms2m \
244 --runtime-option -Xmx2m --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify
245 run_test_rule_name := test-art-$(2)-run-test-gcstress-$(3)-$(1)$(4)
246 ifneq ($$(ART_TEST_GC_STRESS),true)
247 skip_test := true
248 endif
249 else
250 ifneq (,$(5))
251 $$(error found $(5) expected undefined or gcverify, gcstress or trace)
252 endif
Ian Rogers701aa642014-07-18 11:38:13 -0700253 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700254 endif
255 endif
Ian Rogers5242c0a2014-07-18 11:02:19 -0700256 ifeq ($$(skip_test),false)
257 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
258 $$(run_test_options)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700259$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
260.PHONY: $$(run_test_rule_name)
261$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
262 $(hide) $$(call ART_TEST_SKIP,$$@) && \
263 DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
264 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
265 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
266 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
267 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
268 rm -r $(ART_HOST_TEST_DIR)) || true
Ian Rogers5242c0a2014-07-18 11:02:19 -0700269 else
270 .PHONY: $$(run_test_rule_name)
271$$(run_test_rule_name):
272 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700273
Ian Rogersafd9acc2014-06-17 08:21:54 -0700274 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_RULES += $$(run_test_rule_name)
275 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
276 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
277 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
278 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
279 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
280 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
281
282 # Clear locally defined variables.
Ian Rogers5242c0a2014-07-18 11:02:19 -0700283 skip_test :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700284 run_test_options :=
285 run_test_rule_name :=
286 uc_host_or_target :=
287 prereq_rule :=
288 uc_compiler :=
289endef # define-test-art-run-test
290
291# Define a phony rule whose purpose is to test its prerequisites.
292# $(1): rule name, e.g. test-art-host-run-test32
293# $(2): list of prerequisites
294define define-test-art-run-test-group-rule
295.PHONY: $(1)
296$(1): $(2)
297 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
298
299endef # define-test-art-run-test-group-rule
300
301# Create rules for a group of run tests.
302# $(1): test name, e.g. 003-omnibus-opcodes
303# $(2): host or target
304define define-test-art-run-test-group
305 group_uc_host_or_target :=
306 ifeq ($(2),host)
307 group_uc_host_or_target := HOST
308 else
309 ifeq ($(2),target)
310 group_uc_host_or_target := TARGET
311 else
312 $$(error found $(2) expected host or target)
313 endif
314 endif
315
316 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
317 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
318 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
319 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700320 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
321 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
322 $$(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 -0700323 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
324 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
325 $$(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 -0700326 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
327 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
328 $$(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 -0700329 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
330 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
331 $$(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 -0700332 do_second := false
333 ifeq ($(2),host)
334 ifneq ($$(HOST_PREFER_32_BIT),true)
335 do_second := true
336 endif
337 else
338 ifdef TARGET_2ND_ARCH
339 do_second := true
340 endif
341 endif
342 ifeq (true,$$(do_second))
Ian Rogers716e4f82014-07-16 11:18:03 -0700343 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
344 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
345 $$(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 -0700346 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
347 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
348 $$(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 -0700349 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
350 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
351 $$(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 -0700352 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
353 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
354 $$(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 -0700355 endif
356
357 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
358 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
359 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
360 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
361 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
362 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
363 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
364 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
365
366 # Clear locally defined variables.
367 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
368 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
369 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
370 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
371 group_uc_host_or_target :=
372 do_second :=
373endef # define-test-art-run-test-group
374
375$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
376$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
377
378$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
379 $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
380$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
381 $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
382$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
383 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
384$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
385 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
386$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
387 $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
388$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
389 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
390$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
391 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
392$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
393 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
394ifdef TARGET_2ND_ARCH
395 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
396 $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
397 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
398 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
399 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
400 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
401 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
402 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
403endif
404
405$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
406 $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
407$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
408 $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
409$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
410 $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
411$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
412 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
413$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
414 $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
415$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
416 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
417$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
418 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
419$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
420 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
421ifneq ($(HOST_PREFER_32_BIT),true)
422 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
423 $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
424 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
425 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
426 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
427 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
428 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
429 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
430endif
431
432define-test-art-run-test :=
433define-test-art-run-test-group-rule :=
434define-test-art-run-test-group :=
435ART_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 :=