blob: da5b35f64bc93bb7dc05ed6322c479273391d7da [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 \
Brian Carlstrom1db91132013-07-12 18:05:20 -070049 NativeAllocations \
Brian Carlstrom7940e442013-07-12 13:46:57 -070050 ParallelGC \
51 ReferenceMap \
52 StackWalk \
Hiroshi Yamauchi4d2efce2014-02-10 16:19:09 -080053 ThreadStress \
54 UnsafeTest
Brian Carlstrom7940e442013-07-12 13:46:57 -070055
56# TODO: Enable when the StackWalk2 tests are passing
57# StackWalk2 \
58
59ART_TEST_TARGET_DEX_FILES :=
60ART_TEST_HOST_DEX_FILES :=
61
62# $(1): module prefix
63# $(2): input test directory
64# $(3): target output module path (default module path is used on host)
65define build-art-test-dex
66 ifeq ($(ART_BUILD_TARGET),true)
67 include $(CLEAR_VARS)
68 LOCAL_MODULE := $(1)-$(2)
69 LOCAL_MODULE_TAGS := tests
70 LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
71 LOCAL_JAVA_LIBRARIES := $(TARGET_CORE_JARS)
72 LOCAL_NO_STANDARD_LIBRARIES := true
73 LOCAL_MODULE_PATH := $(3)
74 LOCAL_DEX_PREOPT_IMAGE := $(TARGET_CORE_IMG_OUT)
Brian Carlstrom76c8e592014-01-27 22:56:32 -080075 LOCAL_DEX_PREOPT := false
Brian Carlstrom7940e442013-07-12 13:46:57 -070076 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
77 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
78 include $(BUILD_JAVA_LIBRARY)
Brian Carlstromafb2c322014-01-24 17:43:55 -080079 ART_TEST_TARGET_DEX_FILES += $$(LOCAL_INSTALLED_MODULE)
Brian Carlstrom7940e442013-07-12 13:46:57 -070080 endif
81
82 ifeq ($(ART_BUILD_HOST),true)
83 include $(CLEAR_VARS)
84 LOCAL_MODULE := $(1)-$(2)
85 LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
86 LOCAL_JAVA_LIBRARIES := $(HOST_CORE_JARS)
87 LOCAL_NO_STANDARD_LIBRARIES := true
88 LOCAL_DEX_PREOPT_IMAGE := $(HOST_CORE_IMG_OUT)
Brian Carlstrom76c8e592014-01-27 22:56:32 -080089 LOCAL_DEX_PREOPT := false
Brian Carlstrom7940e442013-07-12 13:46:57 -070090 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
91 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
Brian Carlstromd7997eb2013-11-08 16:42:41 -080092 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
Brian Carlstromafb2c322014-01-24 17:43:55 -080093 ART_TEST_HOST_DEX_FILES += $$(LOCAL_INSTALLED_MODULE)
Brian Carlstrom7940e442013-07-12 13:46:57 -070094 endif
95endef
96$(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-test-dex,$(dir),$(ART_NATIVETEST_OUT))))
97$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-dex,oat-test-dex,$(dir),$(ART_TEST_OUT))))
98
99########################################################################
100
101ART_TEST_TARGET_OAT_TARGETS :=
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700102ART_TEST_HOST_OAT_DEFAULT_TARGETS :=
103ART_TEST_HOST_OAT_INTERPRETER_TARGETS :=
Brian Carlstrom7940e442013-07-12 13:46:57 -0700104
105# $(1): directory
106# $(2): arguments
107define declare-test-art-oat-targets
108.PHONY: test-art-target-oat-$(1)
109test-art-target-oat-$(1): $(ART_TEST_OUT)/oat-test-dex-$(1).jar test-art-target-sync
110 adb shell touch $(ART_TEST_DIR)/test-art-target-oat-$(1)
111 adb shell rm $(ART_TEST_DIR)/test-art-target-oat-$(1)
Nicolas Geoffrayb34f69a2014-03-07 15:28:39 +0000112 adb shell sh -c "/system/bin/dalvikvm $(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) $(1) $(2) && touch $(ART_TEST_DIR)/test-art-target-oat-$(1)"
Brian Carlstrom7940e442013-07-12 13:46:57 -0700113 $(hide) (adb pull $(ART_TEST_DIR)/test-art-target-oat-$(1) /tmp/ && echo test-art-target-oat-$(1) PASSED) || (echo test-art-target-oat-$(1) FAILED && exit 1)
114 $(hide) rm /tmp/test-art-target-oat-$(1)
115
116$(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex: $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar $(HOST_CORE_IMG_OUT) | $(DEX2OAT)
Nicolas Geoffrayb34f69a2014-03-07 15:28:39 +0000117 $(DEX2OAT) $(DEX2OAT_FLAGS) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(HOST_CORE_IMG_OUT) --dex-file=$(PWD)/$$< --oat-file=$(PWD)/$$@ --instruction-set=$(ART_HOST_ARCH) --host --android-root=$(HOST_OUT)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700118
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700119.PHONY: test-art-host-oat-default-$(1)
120test-art-host-oat-default-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies
121 mkdir -p /tmp/android-data/test-art-host-oat-default-$(1)
122 ANDROID_DATA=/tmp/android-data/test-art-host-oat-default-$(1) \
Brian Carlstrom7940e442013-07-12 13:46:57 -0700123 ANDROID_ROOT=$(HOST_OUT) \
124 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
Nicolas Geoffrayb34f69a2014-03-07 15:28:39 +0000125 $(HOST_OUT_EXECUTABLES)/dalvikvm $(DALVIKVM_FLAGS) -XXlib:libartd.so -Ximage:$(shell pwd)/$(HOST_CORE_IMG_OUT) -classpath $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar -Djava.library.path=$(HOST_OUT_SHARED_LIBRARIES) $(1) $(2) \
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700126 && echo test-art-host-oat-default-$(1) PASSED || (echo test-art-host-oat-default-$(1) FAILED && exit 1)
127 $(hide) rm -r /tmp/android-data/test-art-host-oat-default-$(1)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700128
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700129.PHONY: test-art-host-oat-interpreter-$(1)
130test-art-host-oat-interpreter-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies
131 mkdir -p /tmp/android-data/test-art-host-oat-interpreter-$(1)
132 ANDROID_DATA=/tmp/android-data/test-art-host-oat-interpreter-$(1) \
Brian Carlstrom7940e442013-07-12 13:46:57 -0700133 ANDROID_ROOT=$(HOST_OUT) \
134 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
Brian Carlstrom43534862014-02-19 01:13:52 -0800135 $(HOST_OUT_EXECUTABLES)/dalvikvm -XXlib:libartd.so -Ximage:$(shell pwd)/$(HOST_CORE_IMG_OUT) -Xint -classpath $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar -Djava.library.path=$(HOST_OUT_SHARED_LIBRARIES) $(1) $(2) \
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700136 && echo test-art-host-oat-interpreter-$(1) PASSED || (echo test-art-host-oat-interpreter-$(1) FAILED && exit 1)
137 $(hide) rm -r /tmp/android-data/test-art-host-oat-interpreter-$(1)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700138
Brian Carlstroma404db02013-08-28 09:37:40 -0700139.PHONY: test-art-host-oat-$(1)
140test-art-host-oat-$(1): test-art-host-oat-default-$(1) test-art-host-oat-interpreter-$(1)
141
142.PHONY: test-art-oat-$(1)
143test-art-oat-$(1): test-art-host-oat-$(1) test-art-target-oat-$(1)
144
Brian Carlstrom7940e442013-07-12 13:46:57 -0700145ART_TEST_TARGET_OAT_TARGETS += test-art-target-oat-$(1)
Brian Carlstromdbaa93a2013-07-31 15:13:10 -0700146ART_TEST_HOST_OAT_DEFAULT_TARGETS += test-art-host-oat-default-$(1)
147ART_TEST_HOST_OAT_INTERPRETER_TARGETS += test-art-host-oat-interpreter-$(1)
Brian Carlstrom7940e442013-07-12 13:46:57 -0700148endef
149$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-art-oat-targets,$(dir))))
150
151########################################################################
152
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700153TEST_ART_RUN_TEST_MAKE_TARGETS :=
154
155# Helper to create individual build targets for tests.
156# Must be called with $(eval)
157# $(1): the test number
158define declare-make-art-run-test
159dmart_target := $(TARGET_OUT_DATA)/art-run-tests/$(1)/touch
Tsu Chiang Chuang6674f8a2013-01-16 15:41:21 -0800160$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700161 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
Tsu Chiang Chuang6674f8a2013-01-16 15:41:21 -0800162 $(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 -0700163 $(hide) touch $$@
164
Brian Carlstrom7940e442013-07-12 13:46:57 -0700165
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700166TEST_ART_RUN_TEST_MAKE_TARGETS += $$(dmart_target)
167dmart_target :=
168endef
169
170# Expand all tests.
Brian Carlstrom7940e442013-07-12 13:46:57 -0700171$(foreach test, $(wildcard $(LOCAL_PATH)/[0-9]*), $(eval $(call declare-make-art-run-test,$(notdir $(test)))))
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700172
173include $(CLEAR_VARS)
174LOCAL_MODULE_TAGS := tests
175LOCAL_MODULE := art-run-tests
176LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_MAKE_TARGETS)
177include $(BUILD_PHONY_PACKAGE)
178
179# clear temp vars
180TEST_ART_RUN_TEST_MAKE_TARGETS :=
181declare-make-art-run-test :=
Brian Carlstrom7940e442013-07-12 13:46:57 -0700182
183########################################################################