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