github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/make/core/version_defaults.mk (about)

     1  #
     2  # Copyright (C) 2008 The Android Open Source Project
     3  #
     4  # Licensed under the Apache License, Version 2.0 (the "License");
     5  # you may not use this file except in compliance with the License.
     6  # You may obtain a copy of the License at
     7  #
     8  #      http://www.apache.org/licenses/LICENSE-2.0
     9  #
    10  # Unless required by applicable law or agreed to in writing, software
    11  # distributed under the License is distributed on an "AS IS" BASIS,
    12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  # See the License for the specific language governing permissions and
    14  # limitations under the License.
    15  #
    16  
    17  #
    18  # Handle various build version information.
    19  #
    20  # Guarantees that the following are defined:
    21  #     PLATFORM_VERSION
    22  #     PLATFORM_SDK_VERSION
    23  #     PLATFORM_VERSION_CODENAME
    24  #     DEFAULT_APP_TARGET_SDK
    25  #     BUILD_ID
    26  #     BUILD_NUMBER
    27  #     PLATFORM_SECURITY_PATCH
    28  #     PLATFORM_VNDK_VERSION
    29  #     PLATFORM_SYSTEMSDK_VERSIONS
    30  #
    31  
    32  # Look for an optional file containing overrides of the defaults,
    33  # but don't cry if we don't find it.  We could just use -include, but
    34  # the build.prop target also wants INTERNAL_BUILD_ID_MAKEFILE to be set
    35  # if the file exists.
    36  #
    37  INTERNAL_BUILD_ID_MAKEFILE := $(wildcard $(BUILD_SYSTEM)/build_id.mk)
    38  ifdef INTERNAL_BUILD_ID_MAKEFILE
    39    include $(INTERNAL_BUILD_ID_MAKEFILE)
    40  endif
    41  
    42  DEFAULT_PLATFORM_VERSION := PPR1
    43  MIN_PLATFORM_VERSION := PPR1
    44  MAX_PLATFORM_VERSION := PPR1
    45  
    46  ALLOWED_VERSIONS := $(call allowed-platform-versions,\
    47    $(MIN_PLATFORM_VERSION),\
    48    $(MAX_PLATFORM_VERSION),\
    49    $(DEFAULT_PLATFORM_VERSION))
    50  
    51  ifndef TARGET_PLATFORM_VERSION
    52    TARGET_PLATFORM_VERSION := $(DEFAULT_PLATFORM_VERSION)
    53  endif
    54  
    55  ifeq (,$(filter $(ALLOWED_VERSIONS), $(TARGET_PLATFORM_VERSION)))
    56    $(warning Invalid TARGET_PLATFORM_VERSION '$(TARGET_PLATFORM_VERSION)', must be one of)
    57    $(error $(ALLOWED_VERSIONS))
    58  endif
    59  
    60  # Default versions for each TARGET_PLATFORM_VERSION
    61  # TODO: PLATFORM_VERSION, PLATFORM_SDK_VERSION, etc. should be conditional
    62  # on this
    63  
    64  # This is the canonical definition of the platform version,
    65  # which is the version that we reveal to the end user.
    66  # Update this value when the platform version changes (rather
    67  # than overriding it somewhere else).  Can be an arbitrary string.
    68  
    69  # When you add a new PLATFORM_VERSION which will result in a new
    70  # PLATFORM_SDK_VERSION please ensure you add a corresponding isAtLeast*
    71  # method in the following java file:
    72  # frameworks/support/compat/gingerbread/android/support/v4/os/BuildCompat.java
    73  
    74  # When you change PLATFORM_VERSION for a given PLATFORM_SDK_VERSION
    75  # please add that PLATFORM_VERSION as well as clean up obsolete PLATFORM_VERSION's
    76  # in the following text file:
    77  # cts/tests/tests/os/assets/platform_versions.txt
    78  PLATFORM_VERSION.PPR1 := 9
    79  
    80  # These are the current development codenames, if the build is not a final
    81  # release build.  If this is a final release build, it is simply "REL".
    82  PLATFORM_VERSION_CODENAME.PPR1 := REL
    83  
    84  ifndef PLATFORM_VERSION
    85    PLATFORM_VERSION := $(PLATFORM_VERSION.$(TARGET_PLATFORM_VERSION))
    86    ifndef PLATFORM_VERSION
    87      # PLATFORM_VERSION falls back to TARGET_PLATFORM_VERSION
    88      PLATFORM_VERSION := $(TARGET_PLATFORM_VERSION)
    89    endif
    90  endif
    91  
    92  ifndef PLATFORM_SDK_VERSION
    93    # This is the canonical definition of the SDK version, which defines
    94    # the set of APIs and functionality available in the platform.  It
    95    # is a single integer that increases monotonically as updates to
    96    # the SDK are released.  It should only be incremented when the APIs for
    97    # the new release are frozen (so that developers don't write apps against
    98    # intermediate builds).  During development, this number remains at the
    99    # SDK version the branch is based on and PLATFORM_VERSION_CODENAME holds
   100    # the code-name of the new development work.
   101  
   102    # When you change PLATFORM_SDK_VERSION please ensure you also update the
   103    # corresponding methods for isAtLeast* in the following java file:
   104    # frameworks/support/compat/gingerbread/android/support/v4/os/BuildCompat.java
   105  
   106    # When you increment the PLATFORM_SDK_VERSION please ensure you also
   107    # clear out the following text file of all older PLATFORM_VERSION's:
   108    # cts/tests/tests/os/assets/platform_versions.txt
   109    PLATFORM_SDK_VERSION := 28
   110  endif
   111  
   112  ifndef PLATFORM_VERSION_CODENAME
   113    PLATFORM_VERSION_CODENAME := $(PLATFORM_VERSION_CODENAME.$(TARGET_PLATFORM_VERSION))
   114    ifndef PLATFORM_VERSION_CODENAME
   115      # PLATFORM_VERSION_CODENAME falls back to TARGET_PLATFORM_VERSION
   116      PLATFORM_VERSION_CODENAME := $(TARGET_PLATFORM_VERSION)
   117    endif
   118  
   119    # This is all of the *active* development codenames. There are future
   120    # codenames not included in this list. This confusing name is needed because
   121    # all_codenames has been baked into build.prop for ages.
   122    #
   123    # Should be either the same as PLATFORM_VERSION_CODENAME or a comma-separated
   124    # list of additional codenames after PLATFORM_VERSION_CODENAME.
   125    PLATFORM_VERSION_ALL_CODENAMES :=
   126  
   127    # Build a list of all active code names. Avoid duplicates, and stop when we
   128    # reach a codename that matches PLATFORM_VERSION_CODENAME (anything beyond
   129    # that is not included in our build).
   130    _versions_in_target := \
   131      $(call find_and_earlier,$(ALL_VERSIONS),$(TARGET_PLATFORM_VERSION))
   132    $(foreach version,$(_versions_in_target),\
   133      $(eval _codename := $(PLATFORM_VERSION_CODENAME.$(version)))\
   134      $(if $(filter $(_codename),$(PLATFORM_VERSION_ALL_CODENAMES)),,\
   135        $(eval PLATFORM_VERSION_ALL_CODENAMES += $(_codename))))
   136  
   137    # This is all of the inactive development codenames. Available to be targeted
   138    # in this branch but in the future relative to our current target.
   139    PLATFORM_VERSION_FUTURE_CODENAMES :=
   140  
   141    # Build a list of all untargeted code names. Avoid duplicates.
   142    _versions_not_in_target := \
   143      $(filter-out $(PLATFORM_VERSION_ALL_CODENAMES),$(ALL_VERSIONS))
   144    $(foreach version,$(_versions_not_in_target),\
   145      $(eval _codename := $(PLATFORM_VERSION_CODENAME.$(version)))\
   146      $(if $(filter $(_codename),$(PLATFORM_VERSION_FUTURE_CODENAMES)),,\
   147        $(eval PLATFORM_VERSION_FUTURE_CODENAMES += $(_codename))))
   148  
   149    # And convert from space separated to comma separated.
   150    PLATFORM_VERSION_ALL_CODENAMES := \
   151      $(subst $(space),$(comma),$(strip $(PLATFORM_VERSION_ALL_CODENAMES)))
   152    PLATFORM_VERSION_FUTURE_CODENAMES := \
   153      $(subst $(space),$(comma),$(strip $(PLATFORM_VERSION_FUTURE_CODENAMES)))
   154  
   155  endif
   156  
   157  ifeq (REL,$(PLATFORM_VERSION_CODENAME))
   158    PLATFORM_PREVIEW_SDK_VERSION := 0
   159  else
   160    ifndef PLATFORM_PREVIEW_SDK_VERSION
   161      # This is the definition of a preview SDK version over and above the current
   162      # platform SDK version. Unlike the platform SDK version, a higher value
   163      # for preview SDK version does NOT mean that all prior preview APIs are
   164      # included. Packages reading this value to determine compatibility with
   165      # known APIs should check that this value is precisely equal to the preview
   166      # SDK version the package was built for, otherwise it should fall back to
   167      # assuming the device can only support APIs as of the previous official
   168      # public release.
   169      # This value will always be 0 for release builds.
   170      PLATFORM_PREVIEW_SDK_VERSION := 0
   171    endif
   172  endif
   173  
   174  ifndef DEFAULT_APP_TARGET_SDK
   175    # This is the default minSdkVersion and targetSdkVersion to use for
   176    # all .apks created by the build system.  It can be overridden by explicitly
   177    # setting these in the .apk's AndroidManifest.xml.  It is either the code
   178    # name of the development build or, if this is a release build, the official
   179    # SDK version of this release.
   180    ifeq (REL,$(PLATFORM_VERSION_CODENAME))
   181      DEFAULT_APP_TARGET_SDK := $(PLATFORM_SDK_VERSION)
   182    else
   183      DEFAULT_APP_TARGET_SDK := $(PLATFORM_VERSION_CODENAME)
   184    endif
   185  endif
   186  
   187  ifndef PLATFORM_VNDK_VERSION
   188    # This is the definition of the VNDK version for the current VNDK libraries.
   189    # The version is only available when PLATFORM_VERSION_CODENAME == REL.
   190    # Otherwise, it will be set to a CODENAME version. The ABI is allowed to be
   191    # changed only before the Android version is released. Once
   192    # PLATFORM_VNDK_VERSION is set to actual version, the ABI for this version
   193    # will be frozon and emit build errors if any ABI for the VNDK libs are
   194    # changed.
   195    # After that the snapshot of the VNDK with this version will be generated.
   196    #
   197    # The VNDK version follows PLATFORM_SDK_VERSION.
   198    ifeq (REL,$(PLATFORM_VERSION_CODENAME))
   199      PLATFORM_VNDK_VERSION := $(PLATFORM_SDK_VERSION)
   200    else
   201      PLATFORM_VNDK_VERSION := $(PLATFORM_VERSION_CODENAME)
   202    endif
   203  endif
   204  
   205  ifndef PLATFORM_SYSTEMSDK_MIN_VERSION
   206    # This is the oldest version of system SDK that the platform supports. Contrary
   207    # to the public SDK where platform essentially supports all previous SDK versions,
   208    # platform supports only a few number of recent system SDK versions as some of
   209    # old system APIs are gradually deprecated, removed and then deleted.
   210    PLATFORM_SYSTEMSDK_MIN_VERSION := 28
   211  endif
   212  
   213  # This is the list of system SDK versions that the current platform supports.
   214  PLATFORM_SYSTEMSDK_VERSIONS :=
   215  ifneq (,$(PLATFORM_SYSTEMSDK_MIN_VERSION))
   216    $(if $(call math_is_number,$(PLATFORM_SYSTEMSDK_MIN_VERSION)),,\
   217      $(error PLATFORM_SYSTEMSDK_MIN_VERSION must be a number, but was $(PLATFORM_SYSTEMSDK_MIN_VERSION)))
   218    PLATFORM_SYSTEMSDK_VERSIONS := $(call int_range_list,$(PLATFORM_SYSTEMSDK_MIN_VERSION),$(PLATFORM_SDK_VERSION))
   219  endif
   220  # Platform always supports the current version
   221  ifeq (REL,$(PLATFORM_VERSION_CODENAME))
   222    PLATFORM_SYSTEMSDK_VERSIONS += $(PLATFORM_SDK_VERSION)
   223  else
   224    PLATFORM_SYSTEMSDK_VERSIONS += $(PLATFORM_VERSION_CODENAME)
   225  endif
   226  PLATFORM_SYSTEMSDK_VERSIONS := $(strip $(sort $(PLATFORM_SYSTEMSDK_VERSIONS)))
   227  
   228  ifndef PLATFORM_SECURITY_PATCH
   229      #  Used to indicate the security patch that has been applied to the device.
   230      #  It must signify that the build includes all security patches issued up through the designated Android Public Security Bulletin.
   231      #  It must be of the form "YYYY-MM-DD" on production devices.
   232      #  It must match one of the Android Security Patch Level strings of the Public Security Bulletins.
   233      #  If there is no $PLATFORM_SECURITY_PATCH set, keep it empty.
   234        PLATFORM_SECURITY_PATCH := 2019-08-01
   235  endif
   236  
   237  ifndef PLATFORM_SECURITY_PATCH_TIMESTAMP
   238    # Used to indicate the matching timestamp for the security patch string in PLATFORM_SECURITY_PATCH.
   239    ifneq (,$(findstring Darwin,$(UNAME)))
   240      PLATFORM_SECURITY_PATCH_TIMESTAMP := $(shell date -jf '%Y-%m-%d %T %Z' '$(PLATFORM_SECURITY_PATCH) 00:00:00 GMT' +%s)
   241    else
   242      PLATFORM_SECURITY_PATCH_TIMESTAMP := $(shell date -d 'TZ="GMT" $(PLATFORM_SECURITY_PATCH)' +%s)
   243    endif
   244  endif
   245  .KATI_READONLY := PLATFORM_SECURITY_PATCH_TIMESTAMP
   246  
   247  ifndef PLATFORM_BASE_OS
   248    # Used to indicate the base os applied to the device.
   249    # Can be an arbitrary string, but must be a single word.
   250    #
   251    # If there is no $PLATFORM_BASE_OS set, keep it empty.
   252    PLATFORM_BASE_OS :=
   253  endif
   254  
   255  ifndef BUILD_ID
   256    # Used to signify special builds.  E.g., branches and/or releases,
   257    # like "M5-RC7".  Can be an arbitrary string, but must be a single
   258    # word and a valid file name.
   259    #
   260    # If there is no BUILD_ID set, make it obvious.
   261    BUILD_ID := UNKNOWN
   262  endif
   263  
   264  ifndef BUILD_DATETIME
   265    # Used to reproduce builds by setting the same time. Must be the number
   266    # of seconds since the Epoch.
   267    BUILD_DATETIME := $(shell date +%s)
   268  endif
   269  
   270  ifneq (,$(findstring Darwin,$(UNAME)))
   271  DATE := date -r $(BUILD_DATETIME)
   272  else
   273  DATE := date -d @$(BUILD_DATETIME)
   274  endif
   275  
   276  # Everything should be using BUILD_DATETIME_FROM_FILE instead.
   277  # BUILD_DATETIME and DATE can be removed once BUILD_NUMBER moves
   278  # to soong_ui.
   279  BUILD_DATETIME :=
   280  
   281  HAS_BUILD_NUMBER := true
   282  ifndef BUILD_NUMBER
   283    # BUILD_NUMBER should be set to the source control value that
   284    # represents the current state of the source code.  E.g., a
   285    # perforce changelist number or a git hash.  Can be an arbitrary string
   286    # (to allow for source control that uses something other than numbers),
   287    # but must be a single word and a valid file name.
   288    #
   289    # If no BUILD_NUMBER is set, create a useful "I am an engineering build
   290    # from this date/time" value.  Make it start with a non-digit so that
   291    # anyone trying to parse it as an integer will probably get "0".
   292    BUILD_NUMBER := eng.$(shell echo $${USER:0:6}).$(shell $(DATE) +%Y%m%d.%H%M%S)
   293    HAS_BUILD_NUMBER := false
   294  endif
   295  
   296  ifndef PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION
   297    # Used to set minimum supported target sdk version. Apps targeting sdk
   298    # version lower than the set value will fail to install and run on android
   299    # device.
   300    PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION := 17
   301  endif