OSDN Git Service

Allow applications to target future API levels
authorDavid 'Digit' Turner <digit@google.com>
Wed, 21 Oct 2009 00:51:19 +0000 (17:51 -0700)
committerDavid 'Digit' Turner <digit@google.com>
Wed, 21 Oct 2009 17:19:07 +0000 (10:19 -0700)
E.g. if an application's default.properties targets android-10
then the build system will default it to the highest supported
API level found in build/platforms (e.g. android-4 currently).

ndk/build/core/add-application.mk
ndk/build/core/main.mk

index 42abae3..3505d1f 100644 (file)
@@ -69,11 +69,14 @@ ifndef APP_PLATFORM
     endif
 endif
 
+# Check that the value of APP_PLATFORM corresponds to a known platform
+# If not, we're going to use the max supported platform value.
+#
 _bad_platform := $(strip $(filter-out $(NDK_ALL_PLATFORMS),$(APP_PLATFORM)))
 ifdef _bad_platform
-    $(call __ndk_info,Application $(_name) targets platform '$(_bad_platform)')
-    $(call __ndk_info,which is not supported by this release of the Android NDK)
-    $(call __ndk_error,Aborting...)
+    $(call __ndk_info,Application $(_name) targets unknown platform '$(_bad_platform)')
+    APP_PLATFORM := android-$(NDK_MAX_PLATFORM_LEVEL)
+    $(call __ndk_info,Switching to $(APP_PLATFORM))
 endif
 
 # If APP_BUILD_SCRIPT is defined, check that the file exists.
index a460556..91ffb71 100644 (file)
@@ -114,6 +114,18 @@ $(foreach _platform,$(NDK_ALL_PLATFORMS),\
   $(eval include $(BUILD_SYSTEM)/add-platform.mk)\
 )
 
+# we're going to find the maximum platform number of the form android-<number>
+# ignore others, which could correspond to special and experimental cases
+NDK_ALL_PLATFORM_LEVELS := $(filter android-%,$(NDK_ALL_PLATFORMS))
+NDK_ALL_PLATFORM_LEVELS := $(patsubst android-%,%,$(NDK_ALL_PLATFORM_LEVELS))
+$(call ndk_log,Found stable platform levels: $(NDK_ALL_PLATFORM_LEVELS))
+
+NDK_MAX_PLATFORM_LEVEL := 3
+$(foreach level,$(NDK_ALL_PLATFORM_LEVELS),\
+  $(eval NDK_MAX_PLATFORM_LEVEL := $$(call max,$$(NDK_MAX_PLATFORM_LEVEL),$$(level)))\
+)
+$(call ndk_log,Found max platform level: $(NDK_MAX_PLATFORM_LEVEL))
+
 # ====================================================================
 #
 # Read all application configuration files