diff options
-rw-r--r-- | Android.mk | 75 | ||||
-rw-r--r-- | build/Android.common.mk | 67 | ||||
-rw-r--r-- | build/Android.gtest.mk | 13 | ||||
-rw-r--r-- | build/Android.oat.mk | 3 | ||||
-rw-r--r-- | test/Android.mk | 30 | ||||
-rwxr-xr-x | test/run-test | 4 |
6 files changed, 164 insertions, 28 deletions
@@ -99,6 +99,8 @@ include $(art_path)/dalvikvm/Android.mk include $(art_path)/tools/Android.mk include $(art_build_path)/Android.oat.mk + + # ART_HOST_DEPENDENCIES depends on Android.executable.mk above for ART_HOST_EXECUTABLES ART_HOST_DEPENDENCIES := $(ART_HOST_EXECUTABLES) $(HOST_OUT_JAVA_LIBRARIES)/core-libart-hostdex.jar ART_HOST_DEPENDENCIES += $(HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) @@ -110,11 +112,18 @@ ART_TARGET_DEPENDENCIES := $(ART_TARGET_EXECUTABLES) $(TARGET_OUT_JAVA_LIBRARIES include $(art_path)/test/Android.mk include $(art_build_path)/Android.gtest.mk +$(eval $(call combine-art-multi-target-var,ART_TARGET_GTEST_TARGETS)) +$(eval $(call combine-art-multi-target-var,ART_TARGET_GTEST_EXECUTABLES)) + # The ART_*_TEST_DEPENDENCIES definitions: # - depend on Android.oattest.mk above for ART_TEST_*_DEX_FILES # - depend on Android.gtest.mk above for ART_*_GTEST_EXECUTABLES ART_HOST_TEST_DEPENDENCIES := $(ART_HOST_DEPENDENCIES) $(ART_HOST_GTEST_EXECUTABLES) $(ART_TEST_HOST_DEX_FILES) $(HOST_CORE_IMG_OUT) -ART_TARGET_TEST_DEPENDENCIES := $(ART_TARGET_DEPENDENCIES) $(ART_TARGET_GTEST_EXECUTABLES) $(ART_TEST_TARGET_DEX_FILES) $(TARGET_CORE_IMG_OUT) + +define declare-art-target-test-dependencies-var +ART_TARGET_TEST_DEPENDENCIES$(1) := $(ART_TARGET_DEPENDENCIES) $(ART_TARGET_GTEST_EXECUTABLES$(1)) $(ART_TEST_TARGET_DEX_FILES$(1)) $(TARGET_CORE_IMG_OUT$(1)) +endef +$(eval $(call call-art-multi-target-var,declare-art-target-test-dependencies-var,ART_TARGET_TEST_DEPENDENCIES)) include $(art_build_path)/Android.libarttest.mk @@ -209,46 +218,69 @@ test-art-host-run-test: test-art-host-run-test-default test-art-host-run-test-in # target test targets # "mm test-art-target" to build and run all target tests -.PHONY: test-art-target -test-art-target: test-art-target-gtest test-art-target-oat test-art-target-run-test - @echo test-art-target PASSED +define declare-test-art-target +.PHONY: test-art-target$(1) +test-art-target$(1): test-art-target-gtest$(1) test-art-target-oat$(1) test-art-target-run-test$(1) + @echo test-art-target$(1) PASSED +endef +$(eval $(call call-art-multi-target-rule,declare-test-art-target,test-art-target)) + + +define declare-test-art-target-dependencies +.PHONY: test-art-target-dependencies$(1) +test-art-target-dependencies$(1): $(ART_TARGET_TEST_DEPENDENCIES$(1)) $(ART_TEST_OUT)/libarttest.so +endef +$(eval $(call call-art-multi-target-rule,declare-test-art-target-dependencies,test-art-target-dependencies)) -.PHONY: test-art-target-dependencies -test-art-target-dependencies: $(ART_TARGET_TEST_DEPENDENCIES) $(ART_TEST_OUT)/libarttest.so .PHONY: test-art-target-sync -test-art-target-sync: test-art-target-dependencies +test-art-target-sync: test-art-target-dependencies$(ART_PHONY_TEST_TARGET_SUFFIX) test-art-target-dependencies$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) adb remount adb sync adb shell mkdir -p $(ART_TEST_DIR) -.PHONY: test-art-target-gtest -test-art-target-gtest: $(ART_TARGET_GTEST_TARGETS) -.PHONY: test-art-target-oat -test-art-target-oat: $(ART_TEST_TARGET_OAT_TARGETS) - @echo test-art-target-oat PASSED +define declare-test-art-target-gtest +.PHONY: test-art-target-gtest$(1) +test-art-target-gtest$(1): $(ART_TARGET_GTEST_TARGETS$(1)) +endef +$(eval $(call call-art-multi-target-rule,declare-test-art-target-gtest,test-art-target-gtest)) + + +define declare-test-art-target-oat +.PHONY: test-art-target-oat$(1) +test-art-target-oat$(1): $(ART_TEST_TARGET_OAT_TARGETS$(1)) + @echo test-art-target-oat$(1) PASSED +endef +$(eval $(call call-art-multi-target-rule,declare-test-art-target-oat,test-art-target-oat)) + define declare-test-art-target-run-test-impl +$(2)run_test_$(1) := +ifeq ($($(2)ART_PHONY_TEST_TARGET_SUFFIX),64) + $(2)run_test_$(1) := --64 +endif .PHONY: test-art-target-run-test-$(1)$($(2)ART_PHONY_TEST_TARGET_SUFFIX) test-art-target-run-test-$(1)$($(2)ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-sync $(DX) $(HOST_OUT_EXECUTABLES)/jasmin - DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) art/test/run-test $(DALVIKVM_FLAGS) $(1) $(3) + DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) art/test/run-test $(DALVIKVM_FLAGS) $$($(2)run_test_$(1)) $(1) @echo test-art-target-run-test-$(1)$($(2)ART_PHONY_TEST_TARGET_SUFFIX) PASSED endef define declare-test-art-target-run-test ifdef TARGET_2ND_ARCH - $(call declare-test-art-target-run-test-impl,$(1),2ND_,) + $(call declare-test-art-target-run-test-impl,$(1),2ND_) + + TEST_ART_TARGET_RUN_TEST_TARGETS$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) += test-art-target-run-test-$(1)$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) ifneq ($(ART_PHONY_TEST_TARGET_SUFFIX),) # Link primary to non-suffix test-art-target-run-test-$(1): test-art-target-run-test-$(1)$(ART_PHONY_TEST_TARGET_SUFFIX) endif endif - $(call declare-test-art-target-run-test-impl,$(1),,--$(ART_TARGET_BINARY_SUFFIX)) + $(call declare-test-art-target-run-test-impl,$(1),) - TEST_ART_TARGET_RUN_TEST_TARGETS += test-art-target-run-test-$(1) + TEST_ART_TARGET_RUN_TEST_TARGETS$(ART_PHONY_TEST_TARGET_SUFFIX) += test-art-target-run-test-$(1)$(ART_PHONY_TEST_TARGET_SUFFIX) test-art-run-test-$(1): test-art-host-run-test-$(1) test-art-target-run-test-$(1) @@ -256,9 +288,14 @@ endef $(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call declare-test-art-target-run-test,$(test)))) -.PHONY: test-art-target-run-test -test-art-target-run-test: $(TEST_ART_TARGET_RUN_TEST_TARGETS) - @echo test-art-target-run-test PASSED + +define declare-test-art-target-run-test +.PHONY: test-art-target-run-test$(1) +test-art-target-run-test$(1): $(TEST_ART_TARGET_RUN_TEST_TARGETS$(1)) + @echo test-art-target-run-test$(1) PASSED +endef +$(eval $(call call-art-multi-target-rule,declare-test-art-target-run-test,test-art-target-run-test)) + ######################################################################## # oat-target and oat-target-sync targets diff --git a/build/Android.common.mk b/build/Android.common.mk index b9a297b..c95b1c6 100644 --- a/build/Android.common.mk +++ b/build/Android.common.mk @@ -291,4 +291,71 @@ ifeq ($(ART_BUILD_HOST_DEBUG),true) ART_BUILD_DEBUG := true endif +# Helper function to call a function twice with a target suffix +# $(1): The generator function for the rules +# Has one argument, the suffix +define call-art-multi-target + $(call $(1),$(ART_PHONY_TEST_TARGET_SUFFIX)) + + ifdef TARGET_2ND_ARCH + $(call $(1),$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)) + endif +endef + +# Helper function to combine two variables with suffixes together. +# $(1): The base name. +define combine-art-multi-target-var + ifdef TARGET_2ND_ARCH + ifneq ($(ART_PHONY_TEST_TARGET_SUFFIX),) + ifneq ($(2ND_ART_PHONY_TEST_TARGET_SUFFIX),) +$(1) := $($(1)$(ART_PHONY_TEST_TARGET_SUFFIX)) $($(1)$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)) + endif + endif + endif +endef + + +# Helper function to define a variable twice with a target suffix. Assume the name generated is +# derived from $(2) so we can create a combined var. +# $(1): The generator function for the rules +# Has one argument, the suffix +define call-art-multi-target-var + $(call $(1),$(ART_PHONY_TEST_TARGET_SUFFIX)) + + ifdef TARGET_2ND_ARCH + $(call $(1),$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)) + + # Link both together, if it makes sense + ifneq ($(ART_PHONY_TEST_TARGET_SUFFIX),) + ifneq ($(2ND_ART_PHONY_TEST_TARGET_SUFFIX),) +$(2) := $(2)$(ART_PHONY_TEST_TARGET_SUFFIX) $(2)$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) + endif + endif + + endif +endef + +# Helper function to call a function twice with a target suffix. Assume it generates make rules +# with the given name, and link them. +# $(1): The generator function for the rules +# Has one argument, the suffix +# $(2): The base rule name, necessary for the link +# We assume we can link the names together easily... +define call-art-multi-target-rule + $(call $(1),$(ART_PHONY_TEST_TARGET_SUFFIX)) + + ifdef TARGET_2ND_ARCH + $(call $(1),$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)) + + # Link both together, if it makes sense + ifneq ($(ART_PHONY_TEST_TARGET_SUFFIX),) + ifneq ($(2ND_ART_PHONY_TEST_TARGET_SUFFIX),) +.PHONY: $(2) +$(2): $(2)$(ART_PHONY_TEST_TARGET_SUFFIX) $(2)$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) + endif + endif + endif +endef + + endif # ANDROID_COMMON_MK diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk index b6e6fac..4b655b5 100644 --- a/build/Android.gtest.mk +++ b/build/Android.gtest.mk @@ -105,10 +105,12 @@ COMPILER_GTEST_HOST_SRC_FILES := \ compiler/utils/x86/assembler_x86_test.cc ART_HOST_GTEST_EXECUTABLES := -ART_TARGET_GTEST_EXECUTABLES := +ART_TARGET_GTEST_EXECUTABLES$(ART_PHONY_TEST_TARGET_SUFFIX) := +ART_TARGET_GTEST_EXECUTABLES$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) := ART_HOST_GTEST_TARGETS := ART_HOST_VALGRIND_GTEST_TARGETS := -ART_TARGET_GTEST_TARGETS := +ART_TARGET_GTEST_TARGETS$(ART_PHONY_TEST_TARGET_SUFFIX) := +ART_TARGET_GTEST_TARGETS$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) := ART_TEST_CFLAGS := ifeq ($(ART_USE_PORTABLE_COMPILER),true) @@ -127,7 +129,7 @@ $$(art_gtest_target)$($(1)ART_PHONY_TEST_TARGET_SUFFIX): $($(1)ART_NATIVETEST_OU $(hide) (adb pull $($(1)ART_TEST_DIR)/$$@ /tmp/ && echo $$@ PASSED) || (echo $$@ FAILED && exit 1) $(hide) rm /tmp/$$@ - ART_TARGET_GTEST_TARGETS += $$(art_gtest_target)$($(1)ART_PHONY_TEST_TARGET_SUFFIX) + ART_TARGET_GTEST_TARGETS$($(1)ART_PHONY_TEST_TARGET_SUFFIX) += $$(art_gtest_target)$($(1)ART_PHONY_TEST_TARGET_SUFFIX) endef @@ -182,12 +184,15 @@ define build-art-test LOCAL_MULTILIB := both include art/build/Android.libcxx.mk include $(BUILD_EXECUTABLE) - ART_TARGET_GTEST_EXECUTABLES += $$(art_gtest_exe) + + ART_TARGET_GTEST_EXECUTABLES$(ART_PHONY_TEST_TARGET_SUFFIX) += $(ART_NATIVETEST_OUT)/$$(LOCAL_MODULE) art_gtest_target := test-art-$$(art_target_or_host)-gtest-$$(art_gtest_name) ifdef TARGET_2ND_ARCH $(call build-art-test-make-target,2ND_) + ART_TARGET_GTEST_EXECUTABLES$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) += $(2ND_ART_NATIVETEST_OUT)/$$(LOCAL_MODULE) + # Bind the primary to the non-suffix rule ifneq ($(ART_PHONY_TEST_TARGET_SUFFIX),) $$(art_gtest_target): $$(art_gtest_target)$(ART_PHONY_TEST_TARGET_SUFFIX) diff --git a/build/Android.oat.mk b/build/Android.oat.mk index cb45a85..9d7579d 100644 --- a/build/Android.oat.mk +++ b/build/Android.oat.mk @@ -63,6 +63,9 @@ $$($(1)TARGET_CORE_IMG_OUT): $$($(1)TARGET_CORE_DEX_FILES) $$(DEX2OATD_DEPENDENC --oat-location=$$($(1)TARGET_CORE_OAT) --image=$$($(1)TARGET_CORE_IMG_OUT) --base=$$(LIBART_IMG_TARGET_BASE_ADDRESS) \ --instruction-set=$$($(1)TARGET_ARCH) --instruction-set-features=$$(TARGET_INSTRUCTION_SET_FEATURES) --android-root=$$(PRODUCT_OUT)/system +# This "renaming" eases declaration in art/Android.mk +TARGET_CORE_IMG_OUT$($(1)ART_PHONY_TEST_TARGET_SUFFIX) := $($(1)TARGET_CORE_IMG_OUT) + $$($(1)TARGET_CORE_OAT_OUT): $$($(1)TARGET_CORE_IMG_OUT) endef diff --git a/test/Android.mk b/test/Android.mk index 334df1f..08a925c 100644 --- a/test/Android.mk +++ b/test/Android.mk @@ -57,6 +57,8 @@ TEST_OAT_DIRECTORIES := \ # StackWalk2 \ ART_TEST_TARGET_DEX_FILES := +ART_TEST_TARGET_DEX_FILES$(ART_PHONY_TEST_TARGET_SUFFIX) := +ART_TEST_TARGET_DEX_FILES$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) := ART_TEST_HOST_DEX_FILES := # $(1): module prefix @@ -76,13 +78,17 @@ define build-art-test-dex LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk include $(BUILD_JAVA_LIBRARY) + ART_TEST_TARGET_DEX_FILES += $$(LOCAL_INSTALLED_MODULE) + ART_TEST_TARGET_DEX_FILES$(ART_PHONY_TEST_TARGET_SUFFIX) += $$(LOCAL_INSTALLED_MODULE) ifdef TARGET_2ND_ARCH + ART_TEST_TARGET_DEX_FILES$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) += $(4)/$(1)-$(2).jar + # TODO: make this a simple copy -$(4)/$(1)-$(2).jar: $(3)/$(1)-$(2).jar +$(4)/$(1)-$(2).jar: $(3)/$(1)-$(2).jar $(4) cp $$< $(4)/ - endif + endif endif ifeq ($(ART_BUILD_HOST),true) @@ -102,9 +108,22 @@ endef $(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-test-dex,$(dir),$(ART_NATIVETEST_OUT),$(2ND_ART_NATIVETEST_OUT)))) $(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-dex,oat-test-dex,$(dir),$(ART_TEST_OUT),$(2ND_ART_TEST_OUT)))) +# Rules to explicitly create 2nd-arch test directories, as we use a "cp" for them +# instead of BUILD_JAVA_LIBRARY +ifneq ($(2ND_ART_NATIVETEST_OUT),) +$(2ND_ART_NATIVETEST_OUT): + $(hide) mkdir -p $@ +endif + +ifneq ($(2ND_ART_TEST_OUT),) +$(2ND_ART_TEST_OUT): + $(hide) mkdir -p $@ +endif + ######################################################################## -ART_TEST_TARGET_OAT_TARGETS := +ART_TEST_TARGET_OAT_TARGETS$(ART_PHONY_TEST_TARGET_SUFFIX) := +ART_TEST_TARGET_OAT_TARGETS$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) := ART_TEST_HOST_OAT_DEFAULT_TARGETS := ART_TEST_HOST_OAT_INTERPRETER_TARGETS := @@ -160,7 +179,10 @@ test-art-host-oat-$(1): test-art-host-oat-default-$(1) test-art-host-oat-interpr .PHONY: test-art-oat-$(1) test-art-oat-$(1): test-art-host-oat-$(1) test-art-target-oat-$(1) -ART_TEST_TARGET_OAT_TARGETS += test-art-target-oat-$(1) +ART_TEST_TARGET_OAT_TARGETS$(ART_PHONY_TEST_TARGET_SUFFIX) += test-art-target-oat-$(1)$(ART_PHONY_TEST_TARGET_SUFFIX) +ifdef TARGET_2ND_ARCH + ART_TEST_TARGET_OAT_TARGETS$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) += test-art-target-oat-$(1)$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) +endif ART_TEST_HOST_OAT_DEFAULT_TARGETS += test-art-host-oat-default-$(1) ART_TEST_HOST_OAT_INTERPRETER_TARGETS += test-art-host-oat-interpreter-$(1) endef diff --git a/test/run-test b/test/run-test index 58de980..6e59641 100755 --- a/test/run-test +++ b/test/run-test @@ -68,6 +68,7 @@ debug_mode="no" runtime="art" usage="no" build_only="no" +suffix64="" while true; do if [ "x$1" = "x--host" ]; then @@ -154,6 +155,7 @@ while true; do shift elif [ "x$1" = "x--64" ]; then run_args="${run_args} --64" + suffix64="64" shift elif expr "x$1" : "x--" >/dev/null 2>&1; then echo "unknown $0 option: $1" 1>&2 @@ -187,7 +189,7 @@ elif [ "$runtime" = "art" ]; then fi run_args="${run_args} --boot -Ximage:${ANDROID_HOST_OUT}/framework/core.art" else - run_args="${run_args} --boot -Ximage:/data/art-test/core.art" + run_args="${run_args} --boot -Ximage:/data/art-test${suffix64}/core.art" fi fi |