blob: 789744968a82109f1972c222e15e94f39301f95d [file] [log] [blame]
Brian Carlstrom7940e442013-07-12 13:46:57 -07001# Copyright (C) 2011 The Android Open Source Project
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -07002#
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
Brian Carlstrom7940e442013-07-12 13:46:57 -070018include art/build/Android.common.mk
19
20########################################################################
21
22# subdirectories which are used as inputs for gtests
23TEST_DEX_DIRECTORIES := \
24 AbstractMethod \
25 AllFields \
Brian Carlstrom7940e442013-07-12 13:46:57 -070026 ExceptionHandle \
Ian Rogersd91d6d62013-09-25 20:26:14 -070027 GetMethodSignature \
Brian Carlstrom7940e442013-07-12 13:46:57 -070028 Interfaces \
29 Main \
30 MyClass \
31 MyClassNatives \
32 Nested \
33 NonStaticLeafMethods \
34 ProtoCompare \
35 ProtoCompare2 \
36 StaticLeafMethods \
37 Statics \
38 StaticsFromCode \
Sebastien Hertzd2fe10a2014-01-15 10:20:56 +010039 Transaction \
Brian Carlstrom7940e442013-07-12 13:46:57 -070040 XandY
41
42# subdirectories of which are used with test-art-target-oat
43# Declare the simplest tests (Main, HelloWorld) first, the rest are alphabetical
44TEST_OAT_DIRECTORIES := \
45 Main \
46 HelloWorld \
Nicolas Geoffrayb34f69a2014-03-07 15:28:39 +000047 InterfaceTest \
Brian Carlstromce888532013-10-10 00:32:58 -070048 JniTest \
Dave Allisonf4b80bc2014-05-14 15:41:25 -070049 SignalTest \
Brian Carlstrom1db91132013-07-12 18:05:20 -070050 NativeAllocations \
Brian Carlstrom7940e442013-07-12 13:46:57 -070051 ParallelGC \
52 ReferenceMap \
53 StackWalk \
Hiroshi Yamauchi4d2efce2014-02-10 16:19:09 -080054 ThreadStress \
55 UnsafeTest
Brian Carlstrom7940e442013-07-12 13:46:57 -070056
57# TODO: Enable when the StackWalk2 tests are passing
58# StackWalk2 \
59
60ART_TEST_TARGET_DEX_FILES :=
Andreas Gampe2fe07922014-04-21 07:50:39 -070061ART_TEST_TARGET_DEX_FILES$(ART_PHONY_TEST_TARGET_SUFFIX) :=
62ART_TEST_TARGET_DEX_FILES$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) :=
Brian Carlstrom7940e442013-07-12 13:46:57 -070063ART_TEST_HOST_DEX_FILES :=
64
65# $(1): module prefix
66# $(2): input test directory
67# $(3): target output module path (default module path is used on host)
68define build-art-test-dex
69 ifeq ($(ART_BUILD_TARGET),true)
70 include $(CLEAR_VARS)
71 LOCAL_MODULE := $(1)-$(2)
72 LOCAL_MODULE_TAGS := tests
73 LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
74 LOCAL_JAVA_LIBRARIES := $(TARGET_CORE_JARS)
75 LOCAL_NO_STANDARD_LIBRARIES := true
76 LOCAL_MODULE_PATH := $(3)
Brian Carlstrom0e12bdc2014-05-14 17:44:28 -070077 LOCAL_DEX_PREOPT_IMAGE_LOCATION := $(TARGET_CORE_IMG_OUT)
Brian Carlstrom76c8e592014-01-27 22:56:32 -080078 LOCAL_DEX_PREOPT := false
Brian Carlstrom7940e442013-07-12 13:46:57 -070079 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
80 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
81 include $(BUILD_JAVA_LIBRARY)
Tsu Chiang Chuang430e3772014-05-13 15:27:13 -070082
Brian Carlstromafb2c322014-01-24 17:43:55 -080083 ART_TEST_TARGET_DEX_FILES += $$(LOCAL_INSTALLED_MODULE)
Andreas Gampe2fe07922014-04-21 07:50:39 -070084 ART_TEST_TARGET_DEX_FILES$(ART_PHONY_TEST_TARGET_SUFFIX) += $$(LOCAL_INSTALLED_MODULE)
Brian Carlstrom7940e442013-07-12 13:46:57 -070085 endif
86
87 ifeq ($(ART_BUILD_HOST),true)
88 include $(CLEAR_VARS)
89 LOCAL_MODULE := $(1)-$(2)
90 LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
91 LOCAL_JAVA_LIBRARIES := $(HOST_CORE_JARS)
92 LOCAL_NO_STANDARD_LIBRARIES := true
Brian Carlstrom0e12bdc2014-05-14 17:44:28 -070093 LOCAL_DEX_PREOPT_IMAGE := $(HOST_CORE_IMG_LOCATION)
Brian Carlstrom76c8e592014-01-27 22:56:32 -080094 LOCAL_DEX_PREOPT := false
Brian Carlstrom7940e442013-07-12 13:46:57 -070095 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
96 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
Brian Carlstromd7997eb2013-11-08 16:42:41 -080097 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
Brian Carlstromafb2c322014-01-24 17:43:55 -080098 ART_TEST_HOST_DEX_FILES += $$(LOCAL_INSTALLED_MODULE)
Brian Carlstrom7940e442013-07-12 13:46:57 -070099 endif
100endef
Brian Carlstrom0e12bdc2014-05-14 17:44:28 -0700101$(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-test-dex,$(dir),$(ART_NATIVETEST_OUT))))
102$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-dex,oat-test-dex,$(dir),$(ART_TEST_OUT))))
Brian Carlstrom7940e442013-07-12 13:46:57 -0700103
Tsu Chiang Chuang430e3772014-05-13 15:27:13 -0700104# Used outside the art project to get a list of the current tests
105ART_TEST_DEX_MAKE_TARGETS := $(addprefix art-test-dex-, $(TEST_DEX_DIRECTORIES))
Tsu Chiang Chuang1694e022014-05-15 09:59:33 -0700106ART_TEST_OAT_MAKE_TARGETS := $(addprefix oat-test-dex-, $(TEST_OAT_DIRECTORIES))
Tsu Chiang Chuang430e3772014-05-13 15:27:13 -0700107
Brian Carlstrom7940e442013-07-12 13:46:57 -0700108########################################################################
109
Andreas Gampe2fe07922014-04-21 07:50:39 -0700110ART_TEST_TARGET_OAT_TARGETS$(ART_PHONY_TEST_TARGET_SUFFIX) :=
111ART_TEST_TARGET_OAT_TARGETS$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) :=
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700112ART_TEST_HOST_OAT_DEFAULT_TARGETS :=
113ART_TEST_HOST_OAT_INTERPRETER_TARGETS :=
Brian Carlstrom7940e442013-07-12 13:46:57 -0700114
Andreas Gampeafbaa1a2014-03-25 18:09:32 -0700115define declare-test-art-oat-targets-impl
116.PHONY: test-art-target-oat-$(1)$($(2)ART_PHONY_TEST_TARGET_SUFFIX)
Brian Carlstrom0e12bdc2014-05-14 17:44:28 -0700117test-art-target-oat-$(1)$($(2)ART_PHONY_TEST_TARGET_SUFFIX): $(ART_TEST_OUT)/oat-test-dex-$(1).jar test-art-target-sync
118 adb shell touch $(ART_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@
119 adb shell rm $(ART_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@
Sebastien Hertzc32deb42014-05-21 16:06:49 +0200120 adb shell sh -c "/system/bin/dalvikvm$($(2)ART_PHONY_TEST_TARGET_SUFFIX) $(DALVIKVM_FLAGS) -XXlib:libartd.so -Ximage:$(ART_TEST_DIR)/core.art -classpath $(ART_TEST_DIR)/oat-test-dex-$(1).jar -Djava.library.path=$(ART_TEST_DIR)/$(TARGET_$(2)ARCH) $(1) && touch $(ART_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@"
Brian Carlstrom0e12bdc2014-05-14 17:44:28 -0700121 $(hide) (adb pull $(ART_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@ /tmp/ && echo $$@ PASSED) || (echo $$@ FAILED && exit 1)
122 $(hide) rm /tmp/$$@
Andreas Gampeafbaa1a2014-03-25 18:09:32 -0700123endef
124
Brian Carlstrom7940e442013-07-12 13:46:57 -0700125# $(1): directory
126# $(2): arguments
127define declare-test-art-oat-targets
Andreas Gampeafbaa1a2014-03-25 18:09:32 -0700128 ifdef TARGET_2ND_ARCH
129 $(call declare-test-art-oat-targets-impl,$(1),2ND_)
130
131 # Bind the primary to the non-suffix rule
132 ifneq ($(ART_PHONY_TEST_TARGET_SUFFIX),)
133test-art-target-oat-$(1): test-art-target-oat-$(1)$(ART_PHONY_TEST_TARGET_SUFFIX)
134 endif
135 endif
136 $(call declare-test-art-oat-targets-impl,$(1),)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700137
Brian Carlstromf662e062014-05-19 16:09:42 -0700138$(HOST_OUT_JAVA_LIBRARIES)/$(ART_HOST_ARCH)/oat-test-dex-$(1).odex: $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar $(HOST_CORE_IMG_OUT) | $(DEX2OATD)
139 $(DEX2OATD) $(DEX2OAT_FLAGS) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(HOST_CORE_IMG_LOCATION) --dex-file=$$(realpath $$<) --oat-file=$$@ --instruction-set=$(ART_HOST_ARCH) --host --android-root=$(HOST_OUT)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700140
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700141.PHONY: test-art-host-oat-default-$(1)
Brian Carlstromf662e062014-05-19 16:09:42 -0700142test-art-host-oat-default-$(1): $(HOST_OUT_JAVA_LIBRARIES)/$(ART_HOST_ARCH)/oat-test-dex-$(1).odex test-art-host-dependencies
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700143 mkdir -p /tmp/android-data/test-art-host-oat-default-$(1)
144 ANDROID_DATA=/tmp/android-data/test-art-host-oat-default-$(1) \
Brian Carlstrom7940e442013-07-12 13:46:57 -0700145 ANDROID_ROOT=$(HOST_OUT) \
Ying Wang07935e52014-06-10 12:06:16 -0700146 LD_LIBRARY_PATH=$(HOST_LIBRARY_PATH) \
Ian Rogersc5f17732014-06-05 20:48:42 -0700147 $(HOST_OUT_EXECUTABLES)/dalvikvm $(DALVIKVM_FLAGS) -XXlib:libartd$(HOST_SHLIB_SUFFIX) -Ximage:$(HOST_CORE_IMG_LOCATION) -classpath $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar -Djava.library.path=$(HOST_LIBRARY_PATH) $(1) $(2) \
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700148 && echo test-art-host-oat-default-$(1) PASSED || (echo test-art-host-oat-default-$(1) FAILED && exit 1)
149 $(hide) rm -r /tmp/android-data/test-art-host-oat-default-$(1)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700150
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700151.PHONY: test-art-host-oat-interpreter-$(1)
Brian Carlstromf662e062014-05-19 16:09:42 -0700152test-art-host-oat-interpreter-$(1): $(HOST_OUT_JAVA_LIBRARIES)/$(ART_HOST_ARCH)/oat-test-dex-$(1).odex test-art-host-dependencies
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700153 mkdir -p /tmp/android-data/test-art-host-oat-interpreter-$(1)
154 ANDROID_DATA=/tmp/android-data/test-art-host-oat-interpreter-$(1) \
Brian Carlstrom7940e442013-07-12 13:46:57 -0700155 ANDROID_ROOT=$(HOST_OUT) \
Ying Wang07935e52014-06-10 12:06:16 -0700156 LD_LIBRARY_PATH=$(HOST_LIBRARY_PATH) \
Ian Rogersc5f17732014-06-05 20:48:42 -0700157 $(HOST_OUT_EXECUTABLES)/dalvikvm -XXlib:libartd$(HOST_SHLIB_SUFFIX) -Ximage:$(HOST_CORE_IMG_LOCATION) $(DALVIKVM_FLAGS) -Xint -classpath $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar -Djava.library.path=$(HOST_LIBRARY_PATH) $(1) $(2) \
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700158 && echo test-art-host-oat-interpreter-$(1) PASSED || (echo test-art-host-oat-interpreter-$(1) FAILED && exit 1)
159 $(hide) rm -r /tmp/android-data/test-art-host-oat-interpreter-$(1)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700160
Brian Carlstroma404db02013-08-28 09:37:40 -0700161.PHONY: test-art-host-oat-$(1)
162test-art-host-oat-$(1): test-art-host-oat-default-$(1) test-art-host-oat-interpreter-$(1)
163
164.PHONY: test-art-oat-$(1)
165test-art-oat-$(1): test-art-host-oat-$(1) test-art-target-oat-$(1)
166
Andreas Gampe2fe07922014-04-21 07:50:39 -0700167ART_TEST_TARGET_OAT_TARGETS$(ART_PHONY_TEST_TARGET_SUFFIX) += test-art-target-oat-$(1)$(ART_PHONY_TEST_TARGET_SUFFIX)
168ifdef TARGET_2ND_ARCH
169 ART_TEST_TARGET_OAT_TARGETS$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) += test-art-target-oat-$(1)$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
170endif
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700171ART_TEST_HOST_OAT_DEFAULT_TARGETS += test-art-host-oat-default-$(1)
172ART_TEST_HOST_OAT_INTERPRETER_TARGETS += test-art-host-oat-interpreter-$(1)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700173endef
174$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-art-oat-targets,$(dir))))
175
176########################################################################
177
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700178TEST_ART_RUN_TEST_MAKE_TARGETS :=
Ying Wangfea356f2014-05-05 16:50:14 -0700179art_run_tests_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700180
181# Helper to create individual build targets for tests.
182# Must be called with $(eval)
183# $(1): the test number
184define declare-make-art-run-test
Ying Wangfea356f2014-05-05 16:50:14 -0700185dmart_target := $(art_run_tests_dir)/art-run-tests/$(1)/touch
Tsu Chiang Chuang6674f8a2013-01-16 15:41:21 -0800186$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700187 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
Tsu Chiang Chuang6674f8a2013-01-16 15:41:21 -0800188 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700189 $(hide) touch $$@
190
Brian Carlstrom7940e442013-07-12 13:46:57 -0700191
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700192TEST_ART_RUN_TEST_MAKE_TARGETS += $$(dmart_target)
193dmart_target :=
194endef
195
196# Expand all tests.
Brian Carlstrome4d159a2014-03-31 14:00:52 -0700197TEST_ART_RUN_TESTS := $(wildcard $(LOCAL_PATH)/[0-9]*)
198TEST_ART_RUN_TESTS := $(subst $(LOCAL_PATH)/,, $(TEST_ART_RUN_TESTS))
Brian Carlstrom6b5123f2014-04-16 15:12:45 -0700199TEST_ART_TIMING_SENSITIVE_RUN_TESTS := 053-wait-some 055-enum-performance
Brian Carlstrome4d159a2014-03-31 14:00:52 -0700200ifdef dist_goal # disable timing sensitive tests on "dist" builds.
Brian Carlstrom934ce802014-04-01 18:09:33 -0700201 $(foreach test, $(TEST_ART_TIMING_SENSITIVE_RUN_TESTS), \
202 $(info Skipping $(test)) \
203 $(eval TEST_ART_RUN_TESTS := $(filter-out $(test), $(TEST_ART_RUN_TESTS))))
Brian Carlstrome4d159a2014-03-31 14:00:52 -0700204endif
205$(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call declare-make-art-run-test,$(test))))
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700206
207include $(CLEAR_VARS)
208LOCAL_MODULE_TAGS := tests
209LOCAL_MODULE := art-run-tests
210LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_MAKE_TARGETS)
Ying Wangfea356f2014-05-05 16:50:14 -0700211# The build system use this flag to pick up files generated by declare-make-art-run-test.
212LOCAL_PICKUP_FILES := $(art_run_tests_dir)
213
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700214include $(BUILD_PHONY_PACKAGE)
215
216# clear temp vars
217TEST_ART_RUN_TEST_MAKE_TARGETS :=
218declare-make-art-run-test :=
Brian Carlstrom7940e442013-07-12 13:46:57 -0700219
220########################################################################