From 58035ae27c7668f3235bd90f0841b7cf3e7fe102 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Wed, 27 May 2015 19:10:27 +0100 Subject: [PATCH] Refactor makefiles to allow just building tests. Also add a way to avoid syncing to the device, in case a previous sync did it. Change-Id: I38673cad712f8ddff641589cea50ca0d0dc04850 --- Android.mk | 18 +++++++++++++++--- build/Android.gtest.mk | 11 ++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Android.mk b/Android.mk index 3467f1d06..98d5fb108 100644 --- a/Android.mk +++ b/Android.mk @@ -119,6 +119,10 @@ include $(art_path)/test/Android.run-test.mk # Sync test files to the target, depends upon all things that must be pushed to the target. .PHONY: test-art-target-sync +# Check if we need to sync. In case ART_TEST_ANDROID_ROOT is not empty, +# the code below uses 'adb push' instead of 'adb sync', which does not +# check if the files on the device have changed. +ifneq ($(ART_TEST_NO_SYNC),true) ifeq ($(ART_TEST_ANDROID_ROOT),) test-art-target-sync: $(TEST_ART_TARGET_SYNC_DEPS) adb root @@ -130,9 +134,7 @@ test-art-target-sync: $(TEST_ART_TARGET_SYNC_DEPS) adb wait-for-device push $(ANDROID_PRODUCT_OUT)/system $(ART_TEST_ANDROID_ROOT) adb push $(ANDROID_PRODUCT_OUT)/data /data endif - -# Undefine variable now its served its purpose. -TEST_ART_TARGET_SYNC_DEPS := +endif # "mm test-art" to build and run all tests on host and device .PHONY: test-art @@ -377,6 +379,15 @@ build-art-host: $(HOST_OUT_EXECUTABLES)/art $(ART_HOST_DEPENDENCIES) $(HOST_CO build-art-target: $(TARGET_OUT_EXECUTABLES)/art $(ART_TARGET_DEPENDENCIES) $(TARGET_CORE_IMG_OUTS) ######################################################################## +# Rules for building all dependencies for tests. + +.PHONY: build-art-host-tests +build-art-host-tests: build-art-host $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES) $(ART_TEST_HOST_GTEST_DEPENDENCIES) + +.PHONY: build-art-target-tests +build-art-target-tests: build-art-target $(TEST_ART_TARGET_SYNC_DEPS) + +######################################################################## # targets to switch back and forth from libdvm to libart .PHONY: use-art @@ -467,3 +478,4 @@ endif # !art_dont_bother # Clear locally used variables. art_dont_bother := art_test_bother := +TEST_ART_TARGET_SYNC_DEPS := diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk index bfc895635..0205f0379 100644 --- a/build/Android.gtest.mk +++ b/build/Android.gtest.mk @@ -300,6 +300,7 @@ ART_TEST_HOST_VALGRIND_GTEST_RULES := ART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES := ART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES := ART_TEST_TARGET_GTEST_RULES := +ART_TEST_HOST_GTEST_DEPENDENCIES := ART_GTEST_TARGET_ANDROID_ROOT := '/system' ifneq ($(ART_TEST_ANDROID_ROOT),) @@ -361,11 +362,15 @@ define define-art-gtest-rule-host gtest_exe := $$(HOST_OUT_EXECUTABLES)/$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX) # Dependencies for all host gtests. gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \ - $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) + $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \ + $$(gtest_exe) \ + $$(ART_GTEST_$(1)_HOST_DEPS) \ + $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) + ART_TEST_HOST_GTEST_DEPENDENCIES += $$(gtest_deps) .PHONY: $$(gtest_rule) -$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_HOST_DEPS) $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) $$(gtest_deps) +$$(gtest_rule): $$(gtest_deps) $(hide) ($$(call ART_TEST_SKIP,$$@) && $$< && $$(call ART_TEST_PASSED,$$@)) \ || $$(call ART_TEST_FAILED,$$@) @@ -375,7 +380,7 @@ $$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_HOST_DEPS) $(foreach file,$(ART_ .PHONY: valgrind-$$(gtest_rule) -valgrind-$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_HOST_DEPS) $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) $$(gtest_deps) $(ART_VALGRIND_DEPENDENCIES) +valgrind-$$(gtest_rule): $$(gtest_deps) $(ART_VALGRIND_DEPENDENCIES) $(hide) $$(call ART_TEST_SKIP,$$@) && \ VALGRIND_LIB=$(HOST_OUT)/lib64/valgrind \ $(HOST_OUT_EXECUTABLES)/valgrind --leak-check=full --error-exitcode=1 $$< && \ -- 2.11.0