blob: 9ad8c6bbcc144e839a8d11a4a8f3feee5c111535 [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 Rogers88138202014-07-18 20:56:27 -070024# List all the test names for host and target and compiler variants.
Ian Rogers716e4f82014-07-16 11:18:03 -070025# $(1): test name, e.g. 003-omnibus-opcodes
Ian Rogers88138202014-07-18 20:56:27 -070026# $(2): undefined, -trace, -gcverify or -gcstress
Ian Rogers716e4f82014-07-16 11:18:03 -070027define 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 Rogers88138202014-07-18 20:56:27 -070051 ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcverify))
52 ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress))
Ian Rogersafd9acc2014-06-17 08:21:54 -070053endif
54
Ian Rogers716e4f82014-07-16 11:18:03 -070055# Tests that are broken in --trace mode.
56TEST_ART_BROKEN_TRACE_RUN_TESTS := \
57 003-omnibus-opcodes \
58 004-annotations \
Ian Rogers8a14b752014-07-18 15:06:53 -070059 012-math \
Ian Rogers716e4f82014-07-16 11:18:03 -070060 018-stack-overflow \
61 023-many-interfaces \
Ian Rogers4cd99b02014-07-18 19:52:07 -070062 027-arithmetic \
Ian Rogers716e4f82014-07-16 11:18:03 -070063 031-class-attributes \
64 037-inherit \
65 044-proxy \
66 046-reflect \
67 051-thread \
68 055-enum-performance \
Ian Rogers4cd99b02014-07-18 19:52:07 -070069 062-character-encodings \
Ian Rogers716e4f82014-07-16 11:18:03 -070070 064-field-access \
Ian Rogers4cd99b02014-07-18 19:52:07 -070071 074-gc-thrash \
Ian Rogers716e4f82014-07-16 11:18:03 -070072 078-polymorphic-virtual \
73 080-oom-throw \
74 082-inline-execute \
75 083-compiler-regressions \
Ian Rogers55bce0c2014-07-16 14:49:34 -070076 093-serialization \
Ian Rogers716e4f82014-07-16 11:18:03 -070077 097-duplicate-method \
78 100-reflect2 \
79 102-concurrent-gc \
80 103-string-append \
81 107-int-math2 \
82 112-double-math \
Ian Rogers4cd99b02014-07-18 19:52:07 -070083 700-LoadArgRegs \
Ian Rogers716e4f82014-07-16 11:18:03 -070084 701-easy-div-rem
85
86ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_TRACE_RUN_TESTS), $(call all-run-test-names,$(test),-trace))
87
Ian Rogers8a14b752014-07-18 15:06:53 -070088# Tests that need more than 2MB of RAM or are running into other corner cases in GC stress related
89# to OOMEs.
90TEST_ART_BROKEN_GCSTRESS_RUN_TESTS := \
91 074-gc-thrash \
92 080-oom-throw \
93 096-array-copy-concurrent
94
95ART_TEST_KNOWN_BROKEN += $(foreach test, $(TEST_ART_BROKEN_GCSTRESS_RUN_TESTS), $(call all-run-test-names,$(test),-gcstress))
96
97
Ian Rogersafd9acc2014-06-17 08:21:54 -070098# The path where build only targets will be output, e.g.
99# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
100art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
101
102# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is
103# an empty file touched in the intermediate directory.
104TEST_ART_RUN_TEST_BUILD_RULES :=
105
106# Helper to create individual build targets for tests. Must be called with $(eval).
107# $(1): the test number
108define define-build-art-run-test
109 dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch
110$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
111 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
112 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
113 $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
114 $(hide) touch $$@
115
116 TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_target)
117 dmart_target :=
118endef
Ian Rogersbf66bce2014-06-24 23:15:34 -0700119$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test))))
Ian Rogersafd9acc2014-06-17 08:21:54 -0700120
121include $(CLEAR_VARS)
122LOCAL_MODULE_TAGS := tests
123LOCAL_MODULE := art-run-tests
124LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
125# The build system use this flag to pick up files generated by declare-make-art-run-test.
126LOCAL_PICKUP_FILES := $(art_run_tests_dir)
127
128include $(BUILD_PHONY_PACKAGE)
129
130# Clear temp vars.
Ian Rogers8a14b752014-07-18 15:06:53 -0700131all-run-test-names :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700132art_run_tests_dir :=
133define-build-art-run-test :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700134TEST_ART_RUN_TEST_BUILD_RULES :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700135TEST_ART_TIMING_SENSITIVE_RUN_TESTS :=
136TEST_ART_BROKEN_TRACE_RUN_TESTS :=
137TEST_ART_BROKEN_GCSTRESS_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700138
139########################################################################
140
141ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
142ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
143ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
144ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
145ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
146ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
147ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
148ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
149ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
150ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
151ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
152ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
153ART_TEST_HOST_RUN_TEST_ALL_RULES :=
154ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
155ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
156ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700157ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700158ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
159ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
160ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700161ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700162ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
163ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
164ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
165
166# We need dex2oat and dalvikvm on the target as well as the core image.
167TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(2ND_TARGET_CORE_IMG_OUT)
168
169# All tests require the host executables and the core images.
170ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
171 $(ART_HOST_EXECUTABLES) \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100172 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Brian Carlstrom519e3d02014-06-25 00:57:36 -0700173 $(HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700174
175ifneq ($(HOST_PREFER_32_BIT),true)
176ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
Nicolas Geoffray4d1231d2014-07-01 10:46:31 +0100177 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Ian Rogersafd9acc2014-06-17 08:21:54 -0700178 $(2ND_HOST_CORE_IMG_OUT)
Ian Rogers665de8a2014-06-24 21:34:09 -0700179endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700180
181# For a given test create all the combinations of host/target, compiler and suffix such as:
182# test-art-host-run-test-optimizing-003-omnibus-opcodes32
183# $(1): test name, e.g. 003-omnibus-opcodes
184# $(2): host or target
185# $(3): default, optimizing or interpreter
186# $(4): 32 or 64
Ian Rogers701aa642014-07-18 11:38:13 -0700187# $(5): run tests with tracing or GC verification enabled or not: trace, gcverify or undefined
Ian Rogersafd9acc2014-06-17 08:21:54 -0700188define define-test-art-run-test
189 run_test_options := $(addprefix --runtime-option ,$(DALVIKVM_FLAGS))
Ian Rogers716e4f82014-07-16 11:18:03 -0700190 run_test_rule_name := test-art-$(2)-run-test-$(3)-$(1)$(4)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700191 uc_host_or_target :=
192 prereq_rule :=
Ian Rogers064a59d2014-07-18 15:55:59 -0700193 skip_test := false
Ian Rogersafd9acc2014-06-17 08:21:54 -0700194 ifeq ($(2),host)
195 uc_host_or_target := HOST
196 run_test_options += --host
197 prereq_rule := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
198 else
199 ifeq ($(2),target)
200 uc_host_or_target := TARGET
201 prereq_rule := test-art-target-sync
202 else
203 $$(error found $(2) expected host or target)
204 endif
205 endif
206 uc_compiler :=
207 ifeq ($(3),optimizing)
208 uc_compiler := OPTIMIZING
209 run_test_options += -Xcompiler-option --compiler-backend=Optimizing
Ian Rogers5242c0a2014-07-18 11:02:19 -0700210 ifneq ($$(ART_TEST_OPTIMIZING),true)
211 skip_test := true
212 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700213 else
214 ifeq ($(3),interpreter)
215 uc_compiler := INTERPRETER
216 run_test_options += --interpreter
217 else
218 ifeq ($(3),default)
219 uc_compiler := DEFAULT
220 else
221 $$(error found $(3) expected optimizing, interpreter or default)
222 endif
223 endif
224 endif
225 ifeq ($(4),64)
226 run_test_options += --64
227 else
228 ifneq ($(4),32)
229 $$(error found $(4) expected 32 or 64)
230 endif
231 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700232 ifeq ($(5),trace)
233 run_test_options += --trace
234 run_test_rule_name := test-art-$(2)-run-test-trace-$(3)-$(1)$(4)
Ian Rogers5242c0a2014-07-18 11:02:19 -0700235 ifneq ($$(ART_TEST_TRACE),true)
236 skip_test := true
237 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700238 else
Ian Rogers701aa642014-07-18 11:38:13 -0700239 ifeq ($(5),gcverify)
240 run_test_options += --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify \
241 --runtime-option -Xgc:preverify_rosalloc --runtime-option -Xgc:postverify_rosalloc
242 run_test_rule_name := test-art-$(2)-run-test-gcverify-$(3)-$(1)$(4)
243 ifneq ($$(ART_TEST_GC_VERIFY),true)
244 skip_test := true
245 endif
246 else
Ian Rogers8a14b752014-07-18 15:06:53 -0700247 ifeq ($(5),gcstress)
248 run_test_options += --runtime-option -Xgc:SS --runtime-option -Xms2m \
249 --runtime-option -Xmx2m --runtime-option -Xgc:preverify --runtime-option -Xgc:postverify
250 run_test_rule_name := test-art-$(2)-run-test-gcstress-$(3)-$(1)$(4)
251 ifneq ($$(ART_TEST_GC_STRESS),true)
252 skip_test := true
253 endif
254 else
255 ifneq (,$(5))
256 $$(error found $(5) expected undefined or gcverify, gcstress or trace)
257 endif
Ian Rogers701aa642014-07-18 11:38:13 -0700258 endif
Ian Rogers716e4f82014-07-16 11:18:03 -0700259 endif
260 endif
Ian Rogers5242c0a2014-07-18 11:02:19 -0700261 ifeq ($$(skip_test),false)
262 run_test_options := --output-path $(ART_HOST_TEST_DIR)/run-test-output/$$(run_test_rule_name) \
263 $$(run_test_options)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700264$$(run_test_rule_name): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
265.PHONY: $$(run_test_rule_name)
266$$(run_test_rule_name): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin $$(prereq_rule)
267 $(hide) $$(call ART_TEST_SKIP,$$@) && \
268 DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
269 art/test/run-test $$(PRIVATE_RUN_TEST_OPTIONS) $(1) \
270 && $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
271 $$(hide) (echo $(MAKECMDGOALS) | grep -q $$@ && \
272 echo "run-test run as top-level target, removing test directory $(ART_HOST_TEST_DIR)" && \
273 rm -r $(ART_HOST_TEST_DIR)) || true
Ian Rogers5242c0a2014-07-18 11:02:19 -0700274 else
275 .PHONY: $$(run_test_rule_name)
276$$(run_test_rule_name):
277 endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700278
Ian Rogersafd9acc2014-06-17 08:21:54 -0700279 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)$(4)_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_$$(uc_compiler)_$(1)_RULES += $$(run_test_rule_name)
282 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$$(uc_compiler)_RULES += $$(run_test_rule_name)
283 ART_TEST_$$(uc_host_or_target)_RUN_TEST_$(1)_RULES += $$(run_test_rule_name)
284 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL_RULES += $$(run_test_rule_name)
285 ART_TEST_$$(uc_host_or_target)_RUN_TEST_ALL$(4)_RULES += $$(run_test_rule_name)
286
287 # Clear locally defined variables.
Ian Rogers5242c0a2014-07-18 11:02:19 -0700288 skip_test :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700289 run_test_options :=
290 run_test_rule_name :=
291 uc_host_or_target :=
292 prereq_rule :=
293 uc_compiler :=
294endef # define-test-art-run-test
295
296# Define a phony rule whose purpose is to test its prerequisites.
297# $(1): rule name, e.g. test-art-host-run-test32
298# $(2): list of prerequisites
299define define-test-art-run-test-group-rule
300.PHONY: $(1)
301$(1): $(2)
302 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
303
304endef # define-test-art-run-test-group-rule
305
306# Create rules for a group of run tests.
307# $(1): test name, e.g. 003-omnibus-opcodes
308# $(2): host or target
309define define-test-art-run-test-group
310 group_uc_host_or_target :=
311 ifeq ($(2),host)
312 group_uc_host_or_target := HOST
313 else
314 ifeq ($(2),target)
315 group_uc_host_or_target := TARGET
316 else
317 $$(error found $(2) expected host or target)
318 endif
319 endif
320
321 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
322 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
323 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
324 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700325 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
326 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
327 $$(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 -0700328 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
329 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
330 $$(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 -0700331 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
332 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
333 $$(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 -0700334 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
335 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
336 $$(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 -0700337 do_second := false
338 ifeq ($(2),host)
339 ifneq ($$(HOST_PREFER_32_BIT),true)
340 do_second := true
341 endif
342 else
343 ifdef TARGET_2ND_ARCH
344 do_second := true
345 endif
346 endif
347 ifeq (true,$$(do_second))
Ian Rogers716e4f82014-07-16 11:18:03 -0700348 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
349 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),))
350 $$(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 -0700351 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
352 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),trace))
353 $$(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 -0700354 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
355 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcverify))
356 $$(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 -0700357 $$(eval $$(call define-test-art-run-test,$(1),$(2),default,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
358 $$(eval $$(call define-test-art-run-test,$(1),$(2),interpreter,$$(2ND_ART_PHONY_TEST_$$(group_uc_host_or_target)_SUFFIX),gcstress))
359 $$(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 -0700360 endif
361
362 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-default-$(1), \
363 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES)))
364 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-interpreter-$(1), \
365 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES)))
366 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-optimizing-$(1), \
367 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES)))
368 $$(eval $$(call define-test-art-run-test-group-rule,test-art-$(2)-run-test-$(1), \
369 $$(ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES)))
370
371 # Clear locally defined variables.
372 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_DEFAULT_$(1)_RULES :=
373 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_INTERPRETER_$(1)_RULES :=
374 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_OPTIMIZING_$(1)_RULES :=
375 ART_TEST_$$(group_uc_host_or_target)_RUN_TEST_$(1)_RULES :=
376 group_uc_host_or_target :=
377 do_second :=
378endef # define-test-art-run-test-group
379
380$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),target)))
381$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-test-art-run-test-group,$(test),host)))
382
383$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test, \
384 $(ART_TEST_TARGET_RUN_TEST_ALL_RULES)))
385$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default, \
386 $(ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES)))
387$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter, \
388 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES)))
389$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing, \
390 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES)))
391$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX), \
392 $(ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
393$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX), \
394 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
395$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX), \
396 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
397$(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX), \
398 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
399ifdef TARGET_2ND_ARCH
400 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
401 $(ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
402 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
403 $(ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
404 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
405 $(ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
406 $(eval $(call define-test-art-run-test-group-rule,test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX), \
407 $(ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES)))
408endif
409
410$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test, \
411 $(ART_TEST_HOST_RUN_TEST_ALL_RULES)))
412$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default, \
413 $(ART_TEST_HOST_RUN_TEST_DEFAULT_RULES)))
414$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter, \
415 $(ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES)))
416$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing, \
417 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES)))
418$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX), \
419 $(ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
420$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX), \
421 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
422$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX), \
423 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
424$(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX), \
425 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
426ifneq ($(HOST_PREFER_32_BIT),true)
427 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
428 $(ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
429 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
430 $(ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
431 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
432 $(ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
433 $(eval $(call define-test-art-run-test-group-rule,test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX), \
434 $(ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES)))
435endif
436
437define-test-art-run-test :=
438define-test-art-run-test-group-rule :=
439define-test-art-run-test-group :=
Ian Rogers064a59d2014-07-18 15:55:59 -0700440TEST_ART_RUN_TESTS :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700441ART_TEST_TARGET_RUN_TEST_ALL_RULES :=
442ART_TEST_TARGET_RUN_TEST_DEFAULT_RULES :=
443ART_TEST_TARGET_RUN_TEST_INTERPRETER_RULES :=
444ART_TEST_TARGET_RUN_TEST_OPTIMIZING_RULES :=
445ART_TEST_TARGET_RUN_TEST_ALL$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
446ART_TEST_TARGET_RUN_TEST_DEFAULT$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
447ART_TEST_TARGET_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
448ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
449ART_TEST_TARGET_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
450ART_TEST_TARGET_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
451ART_TEST_TARGET_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
452ART_TEST_TARGET_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
453ART_TEST_HOST_RUN_TEST_ALL_RULES :=
454ART_TEST_HOST_RUN_TEST_DEFAULT_RULES :=
455ART_TEST_HOST_RUN_TEST_INTERPRETER_RULES :=
456ART_TEST_HOST_RUN_TEST_OPTIMIZING_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700457ART_TEST_HOST_RUN_TEST_ALL$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700458ART_TEST_HOST_RUN_TEST_DEFAULT$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
459ART_TEST_HOST_RUN_TEST_INTERPRETER$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
460ART_TEST_HOST_RUN_TEST_OPTIMIZING$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogers716e4f82014-07-16 11:18:03 -0700461ART_TEST_HOST_RUN_TEST_ALL$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700462ART_TEST_HOST_RUN_TEST_DEFAULT$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
463ART_TEST_HOST_RUN_TEST_INTERPRETER$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
464ART_TEST_HOST_RUN_TEST_OPTIMIZING$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=