Add build targets for the new prebuilts.

The jar files referenced here have been added in other commits linked
to b/77525052. A follow-up change will change the build system to use
these new modules.

Bug: b/77525052
Test: make
Change-Id: I549682737f40cf57a57796caaf607a0496c5fef2
diff --git a/Android.mk b/Android.mk
index 4a8c42c..4bcbe56 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,38 +14,54 @@
 # limitations under the License.
 #
 
-LOCAL_PATH:= $(call my-dir)
+LOCAL_PATH := $(call my-dir)
 
-# $(1): sdk version
-define declare_sdk_prebuilts
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := sdk_v$(1)
-LOCAL_SRC_FILES := $(1)/android.jar
+# Declares a single sdk module. These targets are referenced by the core build system.
+# $(1): module name
+# $(2): sdk version
+# $(3): stub file path
+define declare-sdk-prebuilt
+include $$(CLEAR_VARS)
+LOCAL_MODULE := $(1)
+LOCAL_PREBUILT_MODULE_FILE := $(3)
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_BUILT_MODULE_STEM := sdk_v$(1)$(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_MIN_SDK_VERSION := $(if $(call math_is_number,$(strip $(1))),$(1),$(PLATFORM_JACK_MIN_SDK_VERSION))
+LOCAL_MODULE_SUFFIX := $$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_BUILT_MODULE_STEM := $(1)$$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_MIN_SDK_VERSION := $(if $(call math_is_number,$(strip $(2))),$(2),$$(PLATFORM_JACK_MIN_SDK_VERSION))
 LOCAL_UNINSTALLABLE_MODULE := true
+# TODO(hansson): change to $(2) after migration is done.
 LOCAL_SDK_VERSION := current
-include $(BUILD_PREBUILT)
-
-ifneq (,$(wildcard $(LOCAL_PATH)/$(1)/uiautomator.jar))
-include $(CLEAR_VARS)
-LOCAL_MODULE := uiautomator_sdk_v$(1)
-LOCAL_SRC_FILES := $(1)/uiautomator.jar
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_BUILT_MODULE_STEM := uiautomator_sdk_v$(1)$(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_MIN_SDK_VERSION := $(if $(call math_is_number,$(strip $(1))),$(1),$(PLATFORM_JACK_MIN_SDK_VERSION))
-LOCAL_UNINSTALLABLE_MODULE := true
-LOCAL_SDK_VERSION := $(1)
-include $(BUILD_PREBUILT)
-endif
-
+include $$(BUILD_PREBUILT)
 endef
 
-$(foreach s,$(filter-out test_current core_current,$(TARGET_AVAILABLE_SDK_VERSIONS)),\
-  $(eval $(call declare_sdk_prebuilts,$(s))))
+# Format: sdk_<api>_<sdk_version>_<stub_name>
+# e.g. sdk_system_28_android or sdk_public_current_java.obex
+# $(1): api (e.g. public, system)
+# $(2): sdk version (e.g. 23, current)
+# $(3): jar path
+define get-sdk-prebuilt-name
+sdk_$(1)_$(2)_$(notdir $(basename $(3)))
+endef
+
+legacy_versions := $(patsubst $(LOCAL_PATH)/%/android.jar,%,$(wildcard $(LOCAL_PATH)/*/android.jar))
+
+$(foreach version,$(legacy_versions),\
+  $(eval \
+    $(call declare-sdk-prebuilt,sdk_v$(version),$(version),$(LOCAL_PATH)/$(version)/android.jar)))
+
+$(foreach version,$(legacy_versions),\
+  $(if $(wildcard $(LOCAL_PATH)/$(version)/uiautomator.jar),\
+    $(eval $(call declare-sdk-prebuilt,uiautomator_sdk_v$(version),$(version),$(LOCAL_PATH)/$(version)/uiautomator.jar)),\
+    ))
+
+# New structure definition loop.
+$(foreach version,$(patsubst $(LOCAL_PATH)/%/public/android.jar,%,$(wildcard $(LOCAL_PATH)/*/public/android.jar)),\
+  $(foreach api_level,core public system,\
+    $(foreach jar_file, $(wildcard $(LOCAL_PATH)/$(version)/$(api_level)/*.jar),\
+      $(eval \
+        $(call declare-sdk-prebuilt,\
+          $(call get-sdk-prebuilt-name,$(api_level),$(version),$(jar_file)),\
+          $(api_level),\
+          $(jar_file))))))
 
 include $(call all-makefiles-under,$(LOCAL_PATH))