Auto-generate PLATFORM_VERSION_ALL_CODENAMES.

Test: Temporarily added additional codenames for OPD1 -> O and
      OPM1 -> O-MR1. Lunched aosp_sailfish-eng, built build.prop and
      checked that ro.build.version.all_codenames was "O". Then
      lunched aosp_sailfish-eng-PPR1 and checked that it was
      "O,O-MR1,P".
Bug: None

Change-Id: I51189f5b40e3e7f99e2fc08bb5616c51a23e3b19
diff --git a/core/version_defaults.mk b/core/version_defaults.mk
index e11e8b3..1c22855 100644
--- a/core/version_defaults.mk
+++ b/core/version_defaults.mk
@@ -66,9 +66,9 @@
 # than overriding it somewhere else).  Can be an arbitrary string.
 PLATFORM_VERSION.OPR1 := O
 
-# This is the current development code-name, if the build is not a final
-# release build.  If this is a final release build, it is simply "REL".
+# These are the current development codenames.
 PLATFORM_VERSION_CODENAME.OPR1 := O
+PLATFORM_VERSION_CODENAME.PPR1 := P
 
 ifndef PLATFORM_VERSION
   PLATFORM_VERSION := $(PLATFORM_VERSION.$(TARGET_PLATFORM_VERSION))
@@ -109,7 +109,22 @@
   # This is all of the development codenames that are active.  Should be either
   # the same as PLATFORM_VERSION_CODENAME or a comma-separated list of additional
   # codenames after PLATFORM_VERSION_CODENAME.
-  PLATFORM_VERSION_ALL_CODENAMES := $(PLATFORM_VERSION_CODENAME)
+  PLATFORM_VERSION_ALL_CODENAMES :=
+
+  # Build a list of all possible code names. Avoid duplicates, and stop when we
+  # reach a codename that matches PLATFORM_VERSION_CODENAME (anything beyond
+  # that is not included in our build.
+  _versions_in_target := \
+    $(call find_and_earlier,$(ALL_VERSIONS),$(TARGET_PLATFORM_VERSION))
+  $(foreach version,$(_versions_in_target),\
+    $(eval _codename := $(PLATFORM_VERSION_CODENAME.$(version)))\
+    $(if $(filter $(_codename),$(PLATFORM_VERSION_ALL_CODENAMES)),,\
+      $(eval PLATFORM_VERSION_ALL_CODENAMES += $(_codename))))
+
+  # And convert from space separated to comma separated.
+  PLATFORM_VERSION_ALL_CODENAMES := \
+    $(subst $(space),$(comma),$(strip $(PLATFORM_VERSION_ALL_CODENAMES)))
+
 endif
 
 ifeq (REL,$(PLATFORM_VERSION_CODENAME))