1 # 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 16 LOCAL_PATH := $(call my-dir) 17 18 include art/build/Android.common.mk 19 20 ######################################################################## 21 22 # subdirectories which are used as inputs for gtests 23 TEST_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 43 TEST_OAT_DIRECTORIES := \ 44 Main \ 45 HelloWorld \ 46 \ 47 JniTest \ 48 NativeAllocations \ 49 ParallelGC \ 50 ReferenceMap \ 51 StackWalk \ 52 ThreadStress 53 54 # TODO: Enable when the StackWalk2 tests are passing 55 # StackWalk2 \ 56 57 ART_TEST_TARGET_DEX_FILES := 58 ART_TEST_HOST_DEX_FILES := 59 60 # $(1): module prefix 61 # $(2): input test directory 62 # $(3): target output module path (default module path is used on host) 63 define build-art-test-dex 64 ifeq ($(ART_BUILD_TARGET),true) 65 include $(CLEAR_VARS) 66 LOCAL_MODULE := $(1)-$(2) 67 LOCAL_MODULE_TAGS := tests 68 LOCAL_SRC_FILES := $(call all-java-files-under, $(2)) 69 LOCAL_JAVA_LIBRARIES := $(TARGET_CORE_JARS) 70 LOCAL_NO_STANDARD_LIBRARIES := true 71 LOCAL_MODULE_PATH := $(3) 72 LOCAL_DEX_PREOPT_IMAGE := $(TARGET_CORE_IMG_OUT) 73 LOCAL_DEX_PREOPT := false 74 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk 75 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk 76 include $(BUILD_JAVA_LIBRARY) 77 ART_TEST_TARGET_DEX_FILES += $(3)/$$(LOCAL_MODULE).jar 78 endif 79 80 ifeq ($(ART_BUILD_HOST),true) 81 include $(CLEAR_VARS) 82 LOCAL_MODULE := $(1)-$(2) 83 LOCAL_SRC_FILES := $(call all-java-files-under, $(2)) 84 LOCAL_JAVA_LIBRARIES := $(HOST_CORE_JARS) 85 LOCAL_NO_STANDARD_LIBRARIES := true 86 LOCAL_DEX_PREOPT_IMAGE := $(HOST_CORE_IMG_OUT) 87 LOCAL_BUILD_HOST_DEX := true 88 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk 89 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk 90 include $(BUILD_HOST_JAVA_LIBRARY) 91 ART_TEST_HOST_DEX_FILES += $$(LOCAL_MODULE_PATH)/$$(LOCAL_MODULE).jar 92 endif 93 endef 94 $(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-test-dex,$(dir),$(ART_NATIVETEST_OUT)))) 95 $(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-dex,oat-test-dex,$(dir),$(ART_TEST_OUT)))) 96 97 ######################################################################## 98 99 ART_TEST_TARGET_OAT_TARGETS := 100 ART_TEST_HOST_OAT_DEFAULT_TARGETS := 101 ART_TEST_HOST_OAT_INTERPRETER_TARGETS := 102 103 # $(1): directory 104 # $(2): arguments 105 define declare-test-art-oat-targets 106 .PHONY: test-art-target-oat-$(1) 107 test-art-target-oat-$(1): $(ART_TEST_OUT)/oat-test-dex-$(1).jar test-art-target-sync 108 adb shell touch $(ART_TEST_DIR)/test-art-target-oat-$(1) 109 adb shell rm $(ART_TEST_DIR)/test-art-target-oat-$(1) 110 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)" 111 $(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) 112 $(hide) rm /tmp/test-art-target-oat-$(1) 113 114 $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex: $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar $(HOST_CORE_IMG_OUT) | $(DEX2OAT) 115 $(DEX2OAT) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(HOST_CORE_IMG_OUT) --dex-file=$(PWD)/$$< --oat-file=$(PWD)/$$@ --instruction-set=$(HOST_ARCH) --host --host-prefix="" --android-root=$(HOST_OUT) 116 117 .PHONY: test-art-host-oat-default-$(1) 118 test-art-host-oat-default-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies 119 mkdir -p /tmp/android-data/test-art-host-oat-default-$(1) 120 ANDROID_DATA=/tmp/android-data/test-art-host-oat-default-$(1) \ 121 ANDROID_ROOT=$(HOST_OUT) \ 122 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \ 123 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) \ 124 && echo test-art-host-oat-default-$(1) PASSED || (echo test-art-host-oat-default-$(1) FAILED && exit 1) 125 $(hide) rm -r /tmp/android-data/test-art-host-oat-default-$(1) 126 127 .PHONY: test-art-host-oat-interpreter-$(1) 128 test-art-host-oat-interpreter-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies 129 mkdir -p /tmp/android-data/test-art-host-oat-interpreter-$(1) 130 ANDROID_DATA=/tmp/android-data/test-art-host-oat-interpreter-$(1) \ 131 ANDROID_ROOT=$(HOST_OUT) \ 132 LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \ 133 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) \ 134 && echo test-art-host-oat-interpreter-$(1) PASSED || (echo test-art-host-oat-interpreter-$(1) FAILED && exit 1) 135 $(hide) rm -r /tmp/android-data/test-art-host-oat-interpreter-$(1) 136 137 .PHONY: test-art-host-oat-$(1) 138 test-art-host-oat-$(1): test-art-host-oat-default-$(1) test-art-host-oat-interpreter-$(1) 139 140 .PHONY: test-art-oat-$(1) 141 test-art-oat-$(1): test-art-host-oat-$(1) test-art-target-oat-$(1) 142 143 ART_TEST_TARGET_OAT_TARGETS += test-art-target-oat-$(1) 144 ART_TEST_HOST_OAT_DEFAULT_TARGETS += test-art-host-oat-default-$(1) 145 ART_TEST_HOST_OAT_INTERPRETER_TARGETS += test-art-host-oat-interpreter-$(1) 146 endef 147 $(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-art-oat-targets,$(dir)))) 148 149 ######################################################################## 150 151 TEST_ART_RUN_TEST_MAKE_TARGETS := 152 153 # Helper to create individual build targets for tests. 154 # Must be called with $(eval) 155 # $(1): the test number 156 define declare-make-art-run-test 157 dmart_target := $(TARGET_OUT_DATA)/art-run-tests/$(1)/touch 158 $$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin 159 $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@) 160 $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1) 161 $(hide) touch $$@ 162 163 164 TEST_ART_RUN_TEST_MAKE_TARGETS += $$(dmart_target) 165 dmart_target := 166 endef 167 168 # Expand all tests. 169 $(foreach test, $(wildcard $(LOCAL_PATH)/[0-9]*), $(eval $(call declare-make-art-run-test,$(notdir $(test))))) 170 171 include $(CLEAR_VARS) 172 LOCAL_MODULE_TAGS := tests 173 LOCAL_MODULE := art-run-tests 174 LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_MAKE_TARGETS) 175 include $(BUILD_PHONY_PACKAGE) 176 177 # clear temp vars 178 TEST_ART_RUN_TEST_MAKE_TARGETS := 179 declare-make-art-run-test := 180 181 ######################################################################## 182