blob: fdb7273bcc8c3531f58fc7c54151f354653ee321 [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 \
26 CreateMethodSignature \
27 ExceptionHandle \
28 Interfaces \
29 Main \
30 MyClass \
31 MyClassNatives \
32 Nested \
33 NonStaticLeafMethods \
34 ProtoCompare \
35 ProtoCompare2 \
36 StaticLeafMethods \
37 Statics \
38 StaticsFromCode \
39 XandY
40
41# subdirectories of which are used with test-art-target-oat
42# Declare the simplest tests (Main, HelloWorld) first, the rest are alphabetical
43TEST_OAT_DIRECTORIES := \
44 Main \
45 HelloWorld \
46 \
47 ParallelGC \
48 ReferenceMap \
49 StackWalk \
50 ThreadStress
51
52# TODO: Enable when the StackWalk2 tests are passing
53# StackWalk2 \
54
55ART_TEST_TARGET_DEX_FILES :=
56ART_TEST_HOST_DEX_FILES :=
57
58# $(1): module prefix
59# $(2): input test directory
60# $(3): target output module path (default module path is used on host)
61define build-art-test-dex
62 ifeq ($(ART_BUILD_TARGET),true)
63 include $(CLEAR_VARS)
64 LOCAL_MODULE := $(1)-$(2)
65 LOCAL_MODULE_TAGS := tests
66 LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
67 LOCAL_JAVA_LIBRARIES := $(TARGET_CORE_JARS)
68 LOCAL_NO_STANDARD_LIBRARIES := true
69 LOCAL_MODULE_PATH := $(3)
70 LOCAL_DEX_PREOPT_IMAGE := $(TARGET_CORE_IMG_OUT)
71 LOCAL_DEX_PREOPT := false
72 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
73 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
74 include $(BUILD_JAVA_LIBRARY)
75 ART_TEST_TARGET_DEX_FILES += $(3)/$$(LOCAL_MODULE).jar
76 endif
77
78 ifeq ($(ART_BUILD_HOST),true)
79 include $(CLEAR_VARS)
80 LOCAL_MODULE := $(1)-$(2)
81 LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
82 LOCAL_JAVA_LIBRARIES := $(HOST_CORE_JARS)
83 LOCAL_NO_STANDARD_LIBRARIES := true
84 LOCAL_DEX_PREOPT_IMAGE := $(HOST_CORE_IMG_OUT)
85 LOCAL_BUILD_HOST_DEX := true
86 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
87 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
88 include $(BUILD_HOST_JAVA_LIBRARY)
89 ART_TEST_HOST_DEX_FILES += $$(LOCAL_MODULE_PATH)/$$(LOCAL_MODULE).jar
90 endif
91endef
92$(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-test-dex,$(dir),$(ART_NATIVETEST_OUT))))
93$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-dex,oat-test-dex,$(dir),$(ART_TEST_OUT))))
94
95########################################################################
96
97ART_TEST_TARGET_OAT_TARGETS :=
98ART_TEST_HOST_OAT_TARGETS :=
99ART_TEST_HOST_INTERPRETER_OAT_TARGETS :=
100
101# $(1): directory
102# $(2): arguments
103define declare-test-art-oat-targets
104.PHONY: test-art-target-oat-$(1)
105test-art-target-oat-$(1): $(ART_TEST_OUT)/oat-test-dex-$(1).jar test-art-target-sync
106 adb shell touch $(ART_TEST_DIR)/test-art-target-oat-$(1)
107 adb shell rm $(ART_TEST_DIR)/test-art-target-oat-$(1)
108 adb shell sh -c "dalvikvm -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)"
109 $(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)
110 $(hide) rm /tmp/test-art-target-oat-$(1)
111
112$(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex: $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar $(HOST_CORE_IMG_OUT) | $(DEX2OAT)
113 $(DEX2OAT) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(HOST_CORE_IMG_OUT) --dex-file=$$< --oat-file=$$@ --instruction-set=$(HOST_ARCH) --host --host-prefix="" --android-root=$(HOST_OUT)
114
115.PHONY: test-art-host-oat-$(1)
116test-art-host-oat-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies
117 mkdir -p /tmp/android-data/test-art-host-oat-$(1)
118 ANDROID_DATA=/tmp/android-data/test-art-host-oat-$(1) \
119 ANDROID_ROOT=$(HOST_OUT) \
120 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
121 dalvikvm -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) \
122 && echo test-art-host-oat-$(1) PASSED || (echo test-art-host-oat-$(1) FAILED && exit 1)
123 $(hide) rm -r /tmp/android-data/test-art-host-oat-$(1)
124
125.PHONY: test-art-host-interpreter-oat-$(1)
126test-art-host-interpreter-oat-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies
127 mkdir -p /tmp/android-data/test-art-host-interpreter-oat-$(1)
128 ANDROID_DATA=/tmp/android-data/test-art-host-interpreter-oat-$(1) \
129 ANDROID_ROOT=$(HOST_OUT) \
130 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
131 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) \
132 && echo test-art-host-interpreter-oat-$(1) PASSED || (echo test-art-host-interpreter-oat-$(1) FAILED && exit 1)
133 $(hide) rm -r /tmp/android-data/test-art-host-interpreter-oat-$(1)
134
135ART_TEST_TARGET_OAT_TARGETS += test-art-target-oat-$(1)
136ART_TEST_HOST_OAT_TARGETS += test-art-host-oat-$(1)
137ART_TEST_HOST_INTERPRETER_OAT_TARGETS += test-art-host-interpreter-oat-$(1)
138endef
139$(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-art-oat-targets,$(dir))))
140
141########################################################################
142
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700143TEST_ART_RUN_TEST_MAKE_TARGETS :=
144
145# Helper to create individual build targets for tests.
146# Must be called with $(eval)
147# $(1): the test number
148define declare-make-art-run-test
149dmart_target := $(TARGET_OUT_DATA)/art-run-tests/$(1)/touch
Tsu Chiang Chuang6674f8a2013-01-16 15:41:21 -0800150$$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700151 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
Tsu Chiang Chuang6674f8a2013-01-16 15:41:21 -0800152 $(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 -0700153 $(hide) touch $$@
154
Brian Carlstrom7940e442013-07-12 13:46:57 -0700155
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700156TEST_ART_RUN_TEST_MAKE_TARGETS += $$(dmart_target)
157dmart_target :=
158endef
159
160# Expand all tests.
Brian Carlstrom7940e442013-07-12 13:46:57 -0700161$(foreach test, $(wildcard $(LOCAL_PATH)/[0-9]*), $(eval $(call declare-make-art-run-test,$(notdir $(test)))))
Tsu Chiang Chuang011fade2012-07-09 18:34:47 -0700162
163include $(CLEAR_VARS)
164LOCAL_MODULE_TAGS := tests
165LOCAL_MODULE := art-run-tests
166LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_MAKE_TARGETS)
167include $(BUILD_PHONY_PACKAGE)
168
169# clear temp vars
170TEST_ART_RUN_TEST_MAKE_TARGETS :=
171declare-make-art-run-test :=
Brian Carlstrom7940e442013-07-12 13:46:57 -0700172
173########################################################################