blob: 770fc21102cc8e69ad032ecfeccff21f7a893419 [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)
Ian Rogersafd9acc2014-06-17 08:21:54 -070017include art/build/Android.common_test.mk
18
19# List of all tests of the form 003-omnibus-opcodes.
20TEST_ART_RUN_TESTS := $(wildcard $(LOCAL_PATH)/[0-9]*)
21TEST_ART_RUN_TESTS := $(subst $(LOCAL_PATH)/,, $(TEST_ART_RUN_TESTS))
22
Ian Rogersf5c44b32014-08-19 16:52:36 -070023########################################################################
24# The art-run-tests module, used to build all run-tests into an image.
Alex Light9dcc4572014-08-14 14:16:26 -070025
Ian Rogersafd9acc2014-06-17 08:21:54 -070026# The path where build only targets will be output, e.g.
27# out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA
Dan Willemsen7fb2c2c2016-08-01 22:58:31 -070028art_run_tests_build_dir := $(call intermediates-dir-for,JAVA_LIBRARIES,art-run-tests)/DATA
29art_run_tests_install_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
Ian Rogersafd9acc2014-06-17 08:21:54 -070030
31# A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is
32# an empty file touched in the intermediate directory.
33TEST_ART_RUN_TEST_BUILD_RULES :=
34
Nicolas Geoffray07f2bc12015-05-29 13:40:25 +010035# Dependencies for actually running a run-test.
Sebastien Hertz19ac0272015-02-24 17:39:50 +010036TEST_ART_RUN_TEST_DEPENDENCIES := \
37 $(DX) \
38 $(HOST_OUT_EXECUTABLES)/jasmin \
39 $(HOST_OUT_EXECUTABLES)/smali \
Sebastien Hertz2b763c32016-03-31 09:22:50 +020040 $(HOST_OUT_EXECUTABLES)/dexmerger \
41 $(JACK)
Sebastien Hertz19ac0272015-02-24 17:39:50 +010042
Sebastien Hertz2b763c32016-03-31 09:22:50 +020043TEST_ART_RUN_TEST_ORDERONLY_DEPENDENCIES := setup-jack-server
Nicolas Geoffray07f2bc12015-05-29 13:40:25 +010044
Hiroshi Yamauchi093f1b42015-07-14 12:20:30 -070045ifeq ($(ART_TEST_DEBUG_GC),true)
46 ART_TEST_WITH_STRACE := true
47endif
48
Wojciech Staszkiewiczd7a819a2016-09-01 14:43:39 -070049ifeq ($(ART_TEST_BISECTION),true)
50 # Need to keep rebuilding the test to bisection search it.
51 ART_TEST_RUN_TEST_NO_PREBUILD := true
52 ART_TEST_RUN_TEST_PREBUILD := false
53 # Bisection search writes to standard output.
54 ART_TEST_QUIET := false
55endif
56
Ian Rogersafd9acc2014-06-17 08:21:54 -070057# Helper to create individual build targets for tests. Must be called with $(eval).
58# $(1): the test number
59define define-build-art-run-test
Dan Willemsen7fb2c2c2016-08-01 22:58:31 -070060 dmart_target := $(art_run_tests_build_dir)/art-run-tests/$(1)/touch
61 dmart_install_target := $(art_run_tests_install_dir)/art-run-tests/$(1)/touch
Sebastien Hertz19ac0272015-02-24 17:39:50 +010062 run_test_options = --build-only
Alex Light91de25f2015-10-28 17:00:06 -070063 ifeq ($(ART_TEST_QUIET),true)
64 run_test_options += --quiet
65 endif
Sebastien Hertz19ac0272015-02-24 17:39:50 +010066$$(dmart_target): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options)
Yohann Roussel05b91252015-12-09 12:02:46 +010067$$(dmart_target): $(TEST_ART_RUN_TEST_DEPENDENCIES) $(TARGET_JACK_CLASSPATH_DEPENDENCIES) | $(TEST_ART_RUN_TEST_ORDERONLY_DEPENDENCIES)
Ian Rogersafd9acc2014-06-17 08:21:54 -070068 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
69 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \
Andreas Gampe8fda9f22014-10-03 16:15:37 -070070 SMALI=$(abspath $(HOST_OUT_EXECUTABLES)/smali) \
71 DXMERGER=$(abspath $(HOST_OUT_EXECUTABLES)/dexmerger) \
Yohann Rousselcc6bb932016-01-19 23:29:29 +010072 JACK_VERSION=$(JACK_DEFAULT_VERSION) \
Sebastien Hertz19ac0272015-02-24 17:39:50 +010073 JACK=$(abspath $(JACK)) \
Yohann Rousselaaa779a2016-01-19 17:07:18 +010074 JACK_VERSION=$(JACK_DEFAULT_VERSION) \
Sebastien Hertz19ac0272015-02-24 17:39:50 +010075 JACK_CLASSPATH=$(TARGET_JACK_CLASSPATH) \
Sebastien Hertz19ac0272015-02-24 17:39:50 +010076 $(LOCAL_PATH)/run-test $$(PRIVATE_RUN_TEST_OPTIONS) --output-path $$(abspath $$(dir $$@)) $(1)
Ian Rogersafd9acc2014-06-17 08:21:54 -070077 $(hide) touch $$@
78
Dan Willemsen7fb2c2c2016-08-01 22:58:31 -070079$$(dmart_install_target): $$(dmart_target)
80 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
81 $(hide) cp $$(dir $$<)/* $$(dir $$@)/
82
83 TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_install_target)
Ian Rogersafd9acc2014-06-17 08:21:54 -070084 dmart_target :=
Dan Willemsen7fb2c2c2016-08-01 22:58:31 -070085 dmart_install_target :=
Sebastien Hertz19ac0272015-02-24 17:39:50 +010086 run_test_options :=
Ian Rogersafd9acc2014-06-17 08:21:54 -070087endef
Ian Rogersbf66bce2014-06-24 23:15:34 -070088$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test))))
Ian Rogersafd9acc2014-06-17 08:21:54 -070089
90include $(CLEAR_VARS)
91LOCAL_MODULE_TAGS := tests
92LOCAL_MODULE := art-run-tests
Ian Rogersabbf2422014-10-15 11:57:01 -070093LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES)
Ian Rogersafd9acc2014-06-17 08:21:54 -070094# The build system use this flag to pick up files generated by declare-make-art-run-test.
Dan Willemsen7fb2c2c2016-08-01 22:58:31 -070095LOCAL_PICKUP_FILES := $(art_run_tests_install_dir)
Ian Rogersafd9acc2014-06-17 08:21:54 -070096
97include $(BUILD_PHONY_PACKAGE)
98
99# Clear temp vars.
Dan Willemsen7fb2c2c2016-08-01 22:58:31 -0700100art_run_tests_build_dir :=
101art_run_tests_install_dir :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700102define-build-art-run-test :=
Ian Rogers8a14b752014-07-18 15:06:53 -0700103TEST_ART_RUN_TEST_BUILD_RULES :=
Ian Rogersafd9acc2014-06-17 08:21:54 -0700104
105########################################################################
Ian Rogersf5c44b32014-08-19 16:52:36 -0700106# General rules to build and run a run-test.
Ian Rogersafd9acc2014-06-17 08:21:54 -0700107
Ian Rogersf5c44b32014-08-19 16:52:36 -0700108TARGET_TYPES := host target
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000109
110PREBUILD_TYPES := prebuild
111PREBUILD_TYPES += no-prebuild
112PREBUILD_TYPES += no-dex2oat
113
114COMPILER_TYPES := interp-ac
115COMPILER_TYPES += interpreter
116COMPILER_TYPES += jit
117COMPILER_TYPES += optimizing
118COMPILER_TYPES += regalloc_gc
119
120RELOCATE_TYPES := relocate
121RELOCATE_TYPES += no-relocate
122RELOCATE_TYPES += relocate-npatchoat
123
Mathieu Chartier1445dd32015-03-20 14:29:51 -0700124TRACE_TYPES := ntrace
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000125TRACE_TYPES += trace
126TRACE_TYPES += stream
127
Ian Rogers86df3ac2014-08-27 10:54:11 -0700128GC_TYPES := cms
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000129GC_TYPES += gcstress
130GC_TYPES += gcverify
131
Ian Rogers86df3ac2014-08-27 10:54:11 -0700132JNI_TYPES := checkjni
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000133JNI_TYPES += forcecopy
134
Nicolas Geoffrayb76bc782016-09-14 12:33:34 +0000135IMAGE_TYPES := picimage
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000136IMAGE_TYPES += no-image
137IMAGE_TYPES += multipicimage
138IMAGE_TYPES += npicimage
139IMAGE_TYPES += multinpicimage
140
Mathieu Chartier1445dd32015-03-20 14:29:51 -0700141PICTEST_TYPES := npictest
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000142PICTEST_TYPES += pictest
143
144RUN_TYPES := debug
145RUN_TYPES += ndebug
146
Mathieu Chartier1445dd32015-03-20 14:29:51 -0700147DEBUGGABLE_TYPES := ndebuggable
Nicolas Geoffray43c162f2015-03-09 12:21:26 +0000148DEBUGGABLE_TYPES += debuggable
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000149
Ian Rogersf5c44b32014-08-19 16:52:36 -0700150ALL_ADDRESS_SIZES := 64 32
Ian Rogers86df3ac2014-08-27 10:54:11 -0700151
Ian Rogersf5c44b32014-08-19 16:52:36 -0700152define name-to-var
153$(shell echo $(1) | tr '[:lower:]' '[:upper:]' | tr '-' '_')
154endef # name-to-var
155
Andreas Gampe63fc30e2014-10-24 21:58:16 -0700156# We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync
157# only once).
158TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS)
Ian Rogersafd9acc2014-06-17 08:21:54 -0700159
Alex Light7233c7e2016-07-28 10:07:45 -0700160# Also need libartagent.
Colin Crossafd3c9e2016-09-16 13:47:21 -0700161TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagent)
162TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagentd)
Alex Light7233c7e2016-07-28 10:07:45 -0700163ifdef TARGET_2ND_ARCH
Colin Crossafd3c9e2016-09-16 13:47:21 -0700164TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagent)
165TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagentd)
Alex Light7233c7e2016-07-28 10:07:45 -0700166endif
167
Alex Light49948e92016-08-11 15:35:28 -0700168# Also need libtiagent.
Colin Crossafd3c9e2016-09-16 13:47:21 -0700169TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagent)
170TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagentd)
Alex Light49948e92016-08-11 15:35:28 -0700171ifdef TARGET_2ND_ARCH
Colin Crossafd3c9e2016-09-16 13:47:21 -0700172TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagent)
173TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagentd)
Alex Light49948e92016-08-11 15:35:28 -0700174endif
175
Andreas Gampe1c83cbc2014-07-22 18:52:29 -0700176# Also need libarttest.
Colin Crossafd3c9e2016-09-16 13:47:21 -0700177TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttest)
178TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttestd)
Andreas Gampe1c83cbc2014-07-22 18:52:29 -0700179ifdef TARGET_2ND_ARCH
Colin Crossafd3c9e2016-09-16 13:47:21 -0700180TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttest)
181TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttestd)
Andreas Gampe1c83cbc2014-07-22 18:52:29 -0700182endif
183
Andreas Gampe855564b2014-07-25 02:32:19 -0700184# Also need libnativebridgetest.
Colin Crossafd3c9e2016-09-16 13:47:21 -0700185TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libnativebridgetest)
Andreas Gampe855564b2014-07-25 02:32:19 -0700186ifdef TARGET_2ND_ARCH
Colin Crossafd3c9e2016-09-16 13:47:21 -0700187TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libnativebridgetest)
Andreas Gampe855564b2014-07-25 02:32:19 -0700188endif
189
Nicolas Geoffrayd026ee52016-11-23 10:47:02 +0000190# Also need libopenjdkjvmti.
Nicolas Geoffrayae02d2e2016-11-23 16:25:15 +0000191TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmti
192TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmtid
Nicolas Geoffrayd026ee52016-11-23 10:47:02 +0000193
Andreas Gampe63fc30e2014-10-24 21:58:16 -0700194# All tests require the host executables. The tests also depend on the core images, but on
195# specific version depending on the compiler.
Ian Rogersafd9acc2014-06-17 08:21:54 -0700196ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
197 $(ART_HOST_EXECUTABLES) \
Colin Crossafd3c9e2016-09-16 13:47:21 -0700198 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \
199 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \
200 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \
201 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \
202 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \
203 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \
204 $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \
Narayan Kamath67ef2c92015-11-16 10:17:35 +0000205 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Andreas Gampe10edbb12016-01-06 17:59:49 -0800206 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
Andreas Gampef2c5dbd2016-11-17 22:50:33 -0800207 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
208 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
209 $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
Ian Rogers665de8a2014-06-24 21:34:09 -0700210
211ifneq ($(HOST_PREFER_32_BIT),true)
212ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
Colin Crossafd3c9e2016-09-16 13:47:21 -0700213 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \
214 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \
215 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \
216 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \
217 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \
218 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \
219 $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \
Narayan Kamath67ef2c92015-11-16 10:17:35 +0000220 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
Andreas Gampe10edbb12016-01-06 17:59:49 -0800221 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
Andreas Gampef2c5dbd2016-11-17 22:50:33 -0800222 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
223 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
224 $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
225
Ian Rogers665de8a2014-06-24 21:34:09 -0700226endif
Ian Rogersafd9acc2014-06-17 08:21:54 -0700227
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000228host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
229host_prereq_rules += $(HOST_JACK_CLASSPATH_DEPENDENCIES)
230host_prereq_rules += $(HOST_CORE_IMAGE_OUT)
231host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES)
232host_prereq_rules += $(HOST_OUT_EXECUTABLES)/hprof-conv
Andreas Gampe63fc30e2014-10-24 21:58:16 -0700233
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000234target_prereq_rules := $(TARGET_JACK_CLASSPATH_DEPENDENCIES)
235target_prereq_rules += test-art-target-sync
236
237define core-image-dependencies
238 ifeq ($(2),no-image)
239 $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_pic_$(4))
Ian Rogersafd9acc2014-06-17 08:21:54 -0700240 else
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000241 ifeq ($(2),npicimage)
242 $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_no-pic_$(4))
Ian Rogersf5c44b32014-08-19 16:52:36 -0700243 else
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000244 ifeq ($(2),picimage)
245 $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_pic_$(4))
Alex Light03a112d2014-08-25 13:25:56 -0700246 else
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000247 ifeq ($(2),multinpicimage)
248 $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_no-pic_multi_$(4))
Andreas Gampec23c9c92014-10-28 14:47:25 -0700249 else
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000250 ifeq ($(2),multipicimage)
251 $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_pic_multi_$(4))
Jeff Haodcdc85b2015-12-04 14:06:18 -0800252 endif
253 endif
Andreas Gampec23c9c92014-10-28 14:47:25 -0700254 endif
Alex Light03a112d2014-08-25 13:25:56 -0700255 endif
256 endif
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000257endef
Ian Rogersafd9acc2014-06-17 08:21:54 -0700258
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000259# Generate list of dependencies required for given target - HOST or TARGET, IMAGE_TYPE,
260# COMPILER_TYPE and ADDRESS_SIZE.
Nicolas Geoffray43c162f2015-03-09 12:21:26 +0000261$(foreach target, $(TARGET_TYPES), \
Alex Light03a112d2014-08-25 13:25:56 -0700262 $(foreach image, $(IMAGE_TYPES), \
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000263 $(foreach compiler, $(COMPILER_TYPES), \
264 $(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \
265 $(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size)))))))
266
267test-art-host-run-test-dependencies : $(host_prereq_rules)
268test-art-target-run-test-dependencies : $(target_prereq_rules)
269test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies
270
271# Create a rule to build and run a test group of the following form:
272# test-art-{1: host target}-run-test-{2: prebuild no-prebuild no-dex2oat \
273# interp-ac interpreter jit optimizing regalloc_gc relocate no-relocate \
274# relocate-npatchoat ntrace trace stream cms gcstress gcverify checkjni \
275# forcecopy picimage no-image multinpicimage npictest pictest debug ndebug \
276# ndebuggable debuggable}
277#
278# test-art-{1: host target}-run-test{2: 32 64}
279define define-test-art-run-test-group
280 ifneq (,$(filter $(2),$(ALL_ADDRESS_SIZES)))
281 build_target := test-art-$(1)-run-test$(2)
282 else
283 build_target := test-art-$(1)-run-test-$(2)
284 endif
285 # Python testrunner support multi-threaded test run, however, to invoke the script, one
286 # has to provide the concurrency level for the run. To provide that value, the concurrency
287 # level of the make invocation is used. The make invocation information is extracted through
288 # `ps` and subsequently the number of threads is determined.
289 kati_pid = $(shell echo $$PPID)
290 make_pid = $$(shell ps -o ppid= -p $$(kati_pid))
291 grep_build_targets_from_ps_keyword := -e
292 grep_build_targets_from_ps_keyword += $$(shell echo $(MAKECMDGOALS) | sed -e "s/\s\+/ -e /g")
293 ps_data := $$(shell ps aux | grep $$(make_pid) | grep $$(grep_build_targets_from_ps_keyword) )
294 concurrency := $$(shell [[ "$$(ps_data)" =~ -[a-zA-Z]*j[[:space:]]*[0-9]+ ]] && [[ $$$$BASH_REMATCH =~ [0-9]+ ]] && echo $$$$BASH_REMATCH || echo 1)
295
296 .PHONY: $$(build_target)
297 $$(build_target) : args := --$(1) --$(2) --verbose -j$$(concurrency)
298 $$(build_target) : test-art-$(1)-run-test-dependencies
299 ./art/test/testrunner/testrunner.py $$(args)
300 build_target :=
301 concurrency :=
302 ps_data :=
303 kati_pid :=
304 make_pid :=
305 grep_build_targets_from_ps_keyword :=
306endef # define-test-art-run-test-group
307
Alex Light03a112d2014-08-25 13:25:56 -0700308$(foreach target, $(TARGET_TYPES), \
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000309 $(foreach prebuild, $(PREBUILD_TYPES), $(eval \
310 $(call define-test-art-run-test-group,$(target),$(prebuild)))))
Ian Rogersf5c44b32014-08-19 16:52:36 -0700311$(foreach target, $(TARGET_TYPES), \
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000312 $(foreach run-type, $(RUN_TYPES), $(eval \
313 $(call define-test-art-run-test-group,$(target),$(run-type)))))
Nicolas Geoffraybd2c63c2014-10-16 18:04:12 +0100314$(foreach target, $(TARGET_TYPES), \
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000315 $(foreach compiler, $(COMPILER_TYPES), $(eval \
316 $(call define-test-art-run-test-group,$(target),$(compiler)))))
317$(foreach target, $(TARGET_TYPES), \
318 $(foreach relocate, $(RELOCATE_TYPES), $(eval \
319 $(call define-test-art-run-test-group,$(target),$(relocate)))))
320$(foreach target, $(TARGET_TYPES), \
321 $(foreach trace, $(TRACE_TYPES), $(eval \
322 $(call define-test-art-run-test-group,$(target),$(trace)))))
323$(foreach target, $(TARGET_TYPES), \
324 $(foreach gc, $(GC_TYPES), $(eval \
325 $(call define-test-art-run-test-group,$(target),$(gc)))))
326$(foreach target, $(TARGET_TYPES), \
327 $(foreach jni, $(JNI_TYPES), $(eval \
328 $(call define-test-art-run-test-group,$(target),$(jni)))))
329$(foreach target, $(TARGET_TYPES), \
330 $(foreach debuggable, $(DEBUGGABLE_TYPES), $(eval \
331 $(call define-test-art-run-test-group,$(target),$(debuggable)))))
332$(foreach target, $(TARGET_TYPES), \
333 $(foreach image, $(IMAGE_TYPES), $(eval \
334 $(call define-test-art-run-test-group,$(target),$(image)))))
335$(foreach target, $(TARGET_TYPES), \
336 $(foreach address_size, $(ADDRESS_SIZES_$(call name-to-var,$(target))), $(eval \
337 $(call define-test-art-run-test-group,$(target),$(address_size)))))
338
339# Create a rule to build and run a test group of the following form:
340# test-art-{1: host target}-run-test
341define define-test-art-host-or-target-run-test-group
342 build_target := test-art-$(1)-run-test
343 .PHONY: $$(build_target)
344 # Python testrunner support multi-threaded test run, however, to invoke the script, one
345 # has to provide the concurrency level for the run. To provide that value, the concurrency
346 # level of the make invocation is used. The make invocation information is extracted through
347 # `ps` and subsequently the number of threads is determined.
348 kati_pid = $(shell echo $$PPID)
349 make_pid = $$(shell ps -o ppid= -p $$(kati_pid))
350 grep_build_targets_from_ps_keyword := -e
351 grep_build_targets_from_ps_keyword += $$(shell echo $(MAKECMDGOALS) | sed -e "s/\s\+/ -e /g")
352 ps_data := $$(shell ps aux | grep $$(make_pid) | grep $$(grep_build_targets_from_ps_keyword))
353 concurrency := $$(shell [[ "$$(ps_data)" =~ -[a-zA-Z]*j[[:space:]]*[0-9]+ ]] && [[ $$$$BASH_REMATCH =~ [0-9]+ ]] && echo $$$$BASH_REMATCH || echo 1)
354
355 $$(build_target) : args := --$(1) --verbose -j$$(concurrency)
356 $$(build_target) : test-art-$(1)-run-test-dependencies
357 ./art/test/testrunner/testrunner.py $$(args)
358 build_target :=
359 args :=
360 grep_build_targets_from_ps_keyword :=
361 ps_data :=
362 concurrency :=
363 kati_pid :=
364 make_pid :=
365endef # define-test-art-host-or-target-run-test-group
366
367$(foreach target, $(TARGET_TYPES), $(eval \
368 $(call define-test-art-host-or-target-run-test-group,$(target))))
369
Ian Rogersf5c44b32014-08-19 16:52:36 -0700370TARGET_TYPES :=
371PREBUILD_TYPES :=
372COMPILER_TYPES :=
373RELOCATE_TYPES :=
374TRACE_TYPES :=
375GC_TYPES :=
376JNI_TYPES :=
Alex Light03a112d2014-08-25 13:25:56 -0700377IMAGE_TYPES :=
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000378PICTEST_TYPES :=
Nicolas Geoffraybd2c63c2014-10-16 18:04:12 +0100379RUN_TYPES :=
Nicolas Geoffray43c162f2015-03-09 12:21:26 +0000380DEBUGGABLE_TYPES :=
Shubham Ajmerab5a77b92016-12-07 19:39:29 +0000381ALL_ADDRESS_SIZES :=
Alex Light7233c7e2016-07-28 10:07:45 -0700382LOCAL_PATH :=