diff --git a/core/base_rules.mk b/core/base_rules.mk index 92e69bb91d..ff6f5bdcfc 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -431,9 +431,27 @@ endif ########################################################### ifdef LOCAL_COMPATIBILITY_SUITE +# If we are building a native test or benchmark and its stem variants are not defined, +# separate the multiple architectures into subdirectories of the testcase folder. +arch_dir := +is_native := +ifeq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS) + is_native := true +endif +ifeq ($(LOCAL_MODULE_CLASS),NATIVE_BENCHMARK) + is_native := true +endif +ifdef LOCAL_MULTILIB + is_native := true +endif +ifdef is_native + arch_dir := /$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) + is_native := +endif + # The module itself. $(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \ - $(eval my_compat_dist_$(suite) := $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \ + $(eval my_compat_dist_$(suite) := $(foreach dir, $(call compatibility_suite_dirs,$(suite),$(arch_dir)), \ $(LOCAL_BUILT_MODULE):$(dir)/$(my_installed_module_stem)))) # Make sure we only add the files once for multilib modules. diff --git a/core/definitions.mk b/core/definitions.mk index 3e3bf72608..01afa3d534 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -3235,11 +3235,12 @@ endef ## Compatibility suite tools ########################################################### -# Return a list of output directories for a given suite and the current LOCAL_MODULE +# Return a list of output directories for a given suite and the current LOCAL_MODULE. +# Can be passed a subdirectory to use for the common testcase directory. define compatibility_suite_dirs $(strip \ $(COMPATIBILITY_TESTCASES_OUT_$(1)) \ - $($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)) + $($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)$(2)) endef # For each suite: diff --git a/core/tasks/device-tests.mk b/core/tasks/device-tests.mk index 731937f2b7..299e160281 100644 --- a/core/tasks/device-tests.mk +++ b/core/tasks/device-tests.mk @@ -21,7 +21,7 @@ $(device-tests-zip): $(COMPATIBILITY.device-tests.FILES) $(SOONG_ZIP) sed -i -e 's/\s\+/\n/g' $@.list grep $(HOST_OUT_TESTCASES) $@.list > $@-host.list || true grep $(TARGET_OUT_TESTCASES) $@.list > $@-target.list || true - $(hide) $(SOONG_ZIP) -d -o $@ -C $(HOST_OUT) -l $@-host.list -C $(PRODUCT_OUT) -l $@-target.list + $(hide) $(SOONG_ZIP) -d -o $@ -P host -C $(HOST_OUT) -l $@-host.list -P target -C $(PRODUCT_OUT) -l $@-target.list device-tests: $(device-tests-zip) $(call dist-for-goals, device-tests, $(device-tests-zip)) diff --git a/core/tasks/general-tests.mk b/core/tasks/general-tests.mk index e02faa739c..9629bfa89c 100644 --- a/core/tasks/general-tests.mk +++ b/core/tasks/general-tests.mk @@ -20,7 +20,7 @@ $(general-tests-zip): $(COMPATIBILITY.general-tests.FILES) $(SOONG_ZIP) sed -i -e 's/\s\+/\n/g' $@.list grep $(HOST_OUT_TESTCASES) $@.list > $@-host.list || true grep $(TARGET_OUT_TESTCASES) $@.list > $@-target.list || true - $(hide) $(SOONG_ZIP) -d -o $@ -C $(HOST_OUT) -l $@-host.list -C $(PRODUCT_OUT) -l $@-target.list + $(hide) $(SOONG_ZIP) -d -o $@ -P host -C $(HOST_OUT) -l $@-host.list -P target -C $(PRODUCT_OUT) -l $@-target.list general-tests: $(general-tests-zip) $(call dist-for-goals, general-tests, $(general-tests-zip))