blob: d751f3957296077f58227924e98040ba050960fc [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 \
Ian Rogers4cd99b02014-07-18 19:52:07 -070060 027-arithmetic \
Ian Rogers716e4f82014-07-16 11:18:03 -070061 031-class-attributes \
62 037-inherit \
63 044-proxy \
64 046-reflect \
65 051-thread \
66 055-enum-performance \
Ian Rogers4cd99b02014-07-18 19:52:07 -070067 062-character-encodings \
Ian Rogers716e4f82014-07-16 11:18:03 -070068 064-field-access \
Ian Rogers4cd99b02014-07-18 19:52:07 -070069 074-gc-thrash \
Ian Rogers716e4f82014-07-16 11:18:03 -070070 078-polymorphic-virtual \
71 080-oom-throw \
72 082-inline-execute \
73 083-compiler-regressions \
Ian Rogers55bce0c2014-07-16 14:49:34 -070074 093-serialization \
Ian Rogers716e4f82014-07-16 11:18:03 -070075 097-duplicate-method \
76 100-reflect2 \
77 102-concurrent-gc \
78 103-string-append \
79 107-int-math2 \
80 112-double-math \
Ian Rogers4cd99b02014-07-18 19:52:07 -070081 700-LoadArgRegs \
Ian Rogers716e4f82014-07-16 11:18:03 -070082 701-easy-div-rem
83
84ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace))
85
Ian Rogers8a14b752014-07-18 15:06:53 -070086# Tests that need more than 2MB of RAM or are running into other corner cases in GC stress related
87# to OOMEs.
88TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := \
89 074-gc-thrash \
90 080-oom-throw \
91 096-array-copy-concurrent
92
93ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress))
94
95
Ian Rogersafd9acc2014-06-17 08:21:54 -070096# The path where build only targets will be output, e.g.
97# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
98art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
99
100# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is
101# an empty file touched in the intermediate directory.
102TEST_ART_RUN_TEST_BUILD_RULES :=
103
104# Helper to create individual build targets for tests. Must be called with $(eval).
105# $(1): the test number
106define define-build-art-run-test
107 dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch
108$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
109 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
110 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
111 $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
112 $(hide) touch $$@
113
114 TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target)
115 dmart_target :=
116endef
Ian Rogersbf66bce2014-06-24 23:15:34 -0700117$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test))))
Ian Rogersafd9acc2014-06-17 08:21:54 -0700118
119include $(CLEAR_VARS)
120LOCAL_MODULE_TAGS := tests
121LOCAL_MODULE := art-run-tests
122LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
123# The build system use this flag to pick up files generated by declare-make-art-run-test.
124LOCAL_PICKUP_FILES := $(art_run_tests_dir)
125
126include $(BUILD_PHONY_PACKAGE)
127
128# Clear temp vars.
Ian Rogers8a14b752014-07-18 15:06:53 -0700129all-run-test-names :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700130art_run_tests_dir :=
131define-build-art-run-test :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700132TEST_ART_RUN_TEST_BUILD_RULES :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700133TEST_ART_TIMING_SENSITIVE_RUN_TESTS :=
134TEST_ART_BROKEN_TRACE_RUN_TESTS :=
135TEST_ART_BROKEN_GCSTRESS_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700136
137########################################################################
138
139ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
140ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
141ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
142ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
143ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
144ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
145ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
146ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
147ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
148ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
149ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
150ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
151ART_TEST_HOST_RUN_TEST_ALL_RULES :=
152ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
153ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
154ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700155ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700156ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
157ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
158ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700159ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700160ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
161ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
162ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
163
164# We need dex2oat and dalvikvm on the target as well as the core image.
165TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
166
167# All tests require the host executables and the core images.
168ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
169 $(ART_HOST_EXECUTABLES) \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100170 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Brian Carlstrom519e3d02014-06-25 00:57:36 -0700171 $(HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700172
173ifneq ($(HOST_PREFER_32_BIT),true)
174ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100175 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Ian Rogersafd9acc2014-06-17 08:21:54 -0700176 $(2ND_HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700177endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700178
179# For a given test create all the combinations of host/target, compiler and suffix such as:
180# test-art-host-run-test-optimizing-003-omnibus-opcodes32
181# $(1): test name, e.g. 003-omnibus-opcodes
182# $(2): host or target
183# $(3): default, optimizing or interpreter
184# $(4): 32 or 64
Ian Rogers701aa642014-07-18 11:38:13 -0700185# $(5): run tests with tracing or GC verification enabled or not: trace, gcverify or undefined
Ian Rogersafd9acc2014-06-17 08:21:54 -0700186define define-test-art-run-test
187 run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
Ian Rogers716e4f82014-07-16 11:18:03 -0700188 run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700189 uc_host_or_target :=
190 prereq_rule :=
Ian Rogers064a59d2014-07-18 15:55:59 -0700191 skip_test := false
Ian Rogersafd9acc2014-06-17 08:21:54 -0700192 ifeq ($(2),host)
193 uc_host_or_target := HOST
194 run_test_options += --host
195 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
196 else
197 ifeq ($(2),target)
198 uc_host_or_target := TARGET
199 prereq_rule := test-art-target-sync
200 else
201 $$(error found $(2) expected host or target)
202 endif
203 endif
204 uc_compiler :=
205 ifeq ($(3),optimizing)
206 uc_compiler := OPTIMIZING
207 run_test_options += -Xcompiler-option --compiler-backend=Optimizing
Ian Rogers5242c0a2014-07-18 11:02:19 -0700208 ifneq ($$(ART_TEST_OPTIMIZING),true)
209 skip_test := true
210 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700211 else
212 ifeq ($(3),interpreter)
213 uc_compiler := INTERPRETER
214 run_test_options += --interpreter
215 else
216 ifeq ($(3),default)
217 uc_compiler := DEFAULT
218 else
219 $$(error found $(3) expected optimizing, interpreter or default)
220 endif
221 endif
222 endif
223 ifeq ($(4),64)
224 run_test_options += --64
225 else
226 ifneq ($(4),32)
227 $$(error found $(4) expected 32 or 64)
228 endif
229 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700230 ifeq ($(5),trace)
231 run_test_options += --trace
232 run_test_rule_name := test-art-$(2)-run-test-trace-$(3)-$(1)$(4)
Ian Rogers5242c0a2014-07-18 11:02:19 -0700233 ifneq ($$(ART_TEST_TRACE),true)
234 skip_test := true
235 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700236 else
Ian Rogers701aa642014-07-18 11:38:13 -0700237 ifeq ($(5),gcverify)
238 run_test_options += --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify \
239 --runtime-option -Xgc:preverify_rosalloc --runtime-option -Xgc:postverify_rosalloc
240 run_test_rule_name := test-art-$(2)-run-test-gcverify-$(3)-$(1)$(4)
241 ifneq ($$(ART_TEST_GC_VERIFY),true)
242 skip_test := true
243 endif
244 else
Ian Rogers8a14b752014-07-18 15:06:53 -0700245 ifeq ($(5),gcstress)
246 run_test_options += --runtime-option -Xgc:SS --runtime-option -Xms2m \
247 --runtime-option -Xmx2m --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify
248 run_test_rule_name := test-art-$(2)-run-test-gcstress-$(3)-$(1)$(4)
249 ifneq ($$(ART_TEST_GC_STRESS),true)
250 skip_test := true
251 endif
252 else
253 ifneq (,$(5))
254 $$(error found $(5) expected undefined or gcverify, gcstress or trace)
255 endif
Ian Rogers701aa642014-07-18 11:38:13 -0700256 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700257 endif
258 endif
Ian Rogers5242c0a2014-07-18 11:02:19 -0700259 ifeq ($$(skip_test),false)
260 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
261 $$(run_test_options)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700262$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
263.PHONY: $$(run_test_rule_name)
264$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
265 $(hide) $$(call ART_TEST_SKIP,$$@) && \
266 DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
267 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
268 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
269 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
270 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
271 rm -r $(ART_HOST_TEST_DIR)) || true
Ian Rogers5242c0a2014-07-18 11:02:19 -0700272 else
273 .PHONY: $$(run_test_rule_name)
274$$(run_test_rule_name):
275 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700276
Ian Rogersafd9acc2014-06-17 08:21:54 -0700277 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_RULES += $$(run_test_rule_name)
278 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
279 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
280 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
281 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
282 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
283 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
284
285 # Clear locally defined variables.
Ian Rogers5242c0a2014-07-18 11:02:19 -0700286 skip_test :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700287 run_test_options :=
288 run_test_rule_name :=
289 uc_host_or_target :=
290 prereq_rule :=
291 uc_compiler :=
292endef # define-test-art-run-test
293
294# Define a phony rule whose purpose is to test its prerequisites.
295# $(1): rule name, e.g. test-art-host-run-test32
296# $(2): list of prerequisites
297define define-test-art-run-test-group-rule
298.PHONY: $(1)
299$(1): $(2)
300 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
301
302endef # define-test-art-run-test-group-rule
303
304# Create rules for a group of run tests.
305# $(1): test name, e.g. 003-omnibus-opcodes
306# $(2): host or target
307define define-test-art-run-test-group
308 group_uc_host_or_target :=
309 ifeq ($(2),host)
310 group_uc_host_or_target := HOST
311 else
312 ifeq ($(2),target)
313 group_uc_host_or_target := TARGET
314 else
315 $$(error found $(2) expected host or target)
316 endif
317 endif
318
319 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
320 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
321 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
322 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700323 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
324 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
325 $$(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 -0700326 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
327 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
328 $$(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 -0700329 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
330 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
331 $$(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 -0700332 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
333 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
334 $$(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 -0700335 do_second := false
336 ifeq ($(2),host)
337 ifneq ($$(HOST_PREFER_32_BIT),true)
338 do_second := true
339 endif
340 else
341 ifdef TARGET_2ND_ARCH
342 do_second := true
343 endif
344 endif
345 ifeq (true,$$(do_second))
Ian Rogers716e4f82014-07-16 11:18:03 -0700346 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
347 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
348 $$(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 -0700349 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
350 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
351 $$(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 -0700352 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
353 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
354 $$(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 -0700355 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
356 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
357 $$(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 -0700358 endif
359
360 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
361 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
362 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
363 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
364 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
365 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
366 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
367 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
368
369 # Clear locally defined variables.
370 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
371 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
372 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
373 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
374 group_uc_host_or_target :=
375 do_second :=
376endef # define-test-art-run-test-group
377
378$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
379$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
380
381$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
382 $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
383$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
384 $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
385$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
386 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
387$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
388 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
389$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
390 $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
391$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
392 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
393$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
394 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
395$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
396 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
397ifdef TARGET_2ND_ARCH
398 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
399 $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
400 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
401 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
402 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
403 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
404 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
405 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
406endif
407
408$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
409 $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
410$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
411 $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
412$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
413 $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
414$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
415 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
416$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
417 $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
418$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
419 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
420$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
421 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
422$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
423 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
424ifneq ($(HOST_PREFER_32_BIT),true)
425 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
426 $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
427 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
428 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
429 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
430 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
431 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
432 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
433endif
434
435define-test-art-run-test :=
436define-test-art-run-test-group-rule :=
437define-test-art-run-test-group :=
Ian Rogers064a59d2014-07-18 15:55:59 -0700438TEST_ART_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700439ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
440ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
441ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
442ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
443ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
444ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
445ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
446ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
447ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
448ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
449ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
450ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
451ART_TEST_HOST_RUN_TEST_ALL_RULES :=
452ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
453ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
454ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700455ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700456ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
457ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
458ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700459ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700460ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
461ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
462ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=