hiddenapi: Split stubs into public/system/test classpaths

The hiddenapi tool needs to build a class hierarchy from API stubs.
These are inconsistent between public, system and test API stubs.
This patch splits stubs into the three corresponding categories
and groups the JARs being passed to hiddenapi.

Test: m appcompat
Bug: 76424618
Change-Id: I3f707070d44f04578bc6148a45f2283bcf060703
diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk
index e668248..1b2ba60 100644
--- a/core/dex_preopt.mk
+++ b/core/dex_preopt.mk
@@ -100,23 +100,27 @@
     $(call hiddenapi_stubs_jar,android.test.base.stubs)
 
 # System API stubs
-HIDDENAPI_STUBS += \
+HIDDENAPI_STUBS_SYSTEM := \
     $(call hiddenapi_stubs_jar,android_system_stubs_current)
 
 # Test API stubs
-HIDDENAPI_STUBS += \
+HIDDENAPI_STUBS_TEST := \
     $(call hiddenapi_stubs_jar,android_test_stubs_current)
 
 # Singleton rule which applies $(HIDDENAPI) on all boot class path dex files.
 # Inputs are filled with `hiddenapi-copy-dex-files` rules.
-$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): \
-    PRIVATE_HIDDENAPI_STUBS := $(HIDDENAPI_STUBS)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): PRIVATE_HIDDENAPI_STUBS := $(HIDDENAPI_STUBS)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): PRIVATE_HIDDENAPI_STUBS_SYSTEM := $(HIDDENAPI_STUBS_SYSTEM)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): PRIVATE_HIDDENAPI_STUBS_TEST := $(HIDDENAPI_STUBS_TEST)
 $(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): \
     .KATI_IMPLICIT_OUTPUTS := $(INTERNAL_PLATFORM_HIDDENAPI_PUBLIC_LIST)
-$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): $(HIDDENAPI) $(HIDDENAPI_STUBS)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): $(HIDDENAPI) $(HIDDENAPI_STUBS) \
+                                             $(HIDDENAPI_STUBS_SYSTEM) $(HIDDENAPI_STUBS_TEST)
 	for INPUT_DEX in $(PRIVATE_DEX_INPUTS); do \
 		find `dirname $${INPUT_DEX}` -maxdepth 1 -name "classes*.dex"; \
 	done | sort | sed 's/^/--boot-dex=/' | xargs $(HIDDENAPI) list \
-	    $(addprefix --stub-dex=,$(PRIVATE_HIDDENAPI_STUBS)) \
+	    --stub-classpath=$(call normalize-path-list, $(PRIVATE_HIDDENAPI_STUBS)) \
+	    --stub-classpath=$(call normalize-path-list, $(PRIVATE_HIDDENAPI_STUBS_SYSTEM)) \
+	    --stub-classpath=$(call normalize-path-list, $(PRIVATE_HIDDENAPI_STUBS_TEST)) \
 	    --out-public=$(INTERNAL_PLATFORM_HIDDENAPI_PUBLIC_LIST) \
 	    --out-private=$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST)