Home | History | Annotate | Download | only in Messaging
      1 #  Copyright (C) 2015 The Android Open Source Project
      2 #
      3 #  Licensed under the Apache License, Version 2.0 (the "License");
      4 #  you may not use this file except in compliance with the License.
      5 #  You may obtain a copy of the License at
      6 #
      7 #       http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 #  Unless required by applicable law or agreed to in writing, software
     10 #  distributed under the License is distributed on an "AS IS" BASIS,
     11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 #  See the License for the specific language governing permissions and
     13 #  limitations under the License.
     14 #
     15 
     16 # The version code scheme for the package apk is:
     17 #      Mmbbbtad
     18 # where
     19 #    M - major version (one or more digits)
     20 #    m - minor version (exactly 1 digit)
     21 #   bbb - manually specified build number (exactly 3 digits)
     22 #    t - build type (exactly 1 digit).  Current valid values are:
     23 #           0 : internal (dev build)
     24 #           1 : prod build
     25 #    a - device architecture (exactly 1 digit).  Current valid values are:
     26 #           0 : non-native
     27 #           1 : armv5te
     28 #           3 : armv7-a
     29 #           4 : arm64-v8a
     30 #           5 : mips
     31 #           6 : mips-64
     32 #           7 : x86
     33 #           8 : x86-64
     34 #    d - asset density (exactly 1 digit).  Current valid values are:
     35 #           0 : all densities
     36 #           2 : mdpi
     37 #           4 : hdpi
     38 #           6 : xhdpi
     39 #           8 : xxhdpi
     40 #           9 : xxxhdpi
     41 # Mmbbb is specified manually.  tad is automatically set during the build.
     42 #
     43 # For the client jar, the version code is agnostic to the target architecture and density: Mmbbbt00
     44 #
     45 # NOTE: arch needs to be more significant than density because x86 devices support running ARM
     46 # code in emulation mode, so all x86 versions must be higher than all ARM versions to ensure
     47 # we deliver true x86 code to those devices.
     48 
     49 # Specify the following manually.  Note that base_version_minor must be exactly 1 digit and
     50 # base_version_build must be exactly 3 digits.
     51 base_version_major := 1
     52 base_version_minor := 0
     53 base_version_build := 001
     54 
     55 #####################################################
     56 #####################################################
     57 # Collect automatic version code parameters
     58 ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
     59   # This is an eng build
     60   base_version_buildtype := 0
     61 else
     62   # This is a build server build
     63   base_version_buildtype := 1
     64 endif
     65 
     66 # Set the device architecture digit
     67 ifeq "$(TARGET_ARCH)" "arm"
     68   ifeq "$(TARGET_ARCH_VARIANT)" "armv5te"
     69     base_version_arch := 1
     70   else ifeq "$(TARGET_ARCH_VARIANT)" "armv7-a"
     71     base_version_arch := 3
     72   endif
     73 else ifeq "$(TARGET_ARCH)" "arm64"
     74   base_version_arch := 4
     75 else ifeq "$(TARGET_ARCH)" "mips"
     76   base_version_arch := 5
     77 else ifeq "$(TARGET_ARCH)" "x86"
     78   base_version_arch := 7
     79 else ifeq "$(TARGET_ARCH)" "x86_64"
     80   base_version_arch := 8
     81 else
     82   base_version_arch := 0
     83 endif
     84 
     85 ifeq "$(package_dpi)" "mdpi"
     86   base_version_density := 2
     87 else ifeq "$(package_dpi)" "hdpi"
     88   base_version_density := 4
     89 else ifeq "$(package_dpi)" "xhdpi"
     90   base_version_density := 6
     91 else ifeq "$(package_dpi)" "xxhdpi"
     92   base_version_density := 8
     93 else ifeq "$(package_dpi)" "xxxhdpi"
     94   base_version_density := 9
     95 else
     96   base_version_density := 0
     97 endif
     98 
     99 # Build the version code
    100 version_code_package := $(base_version_major)$(base_version_minor)$(base_version_build)$(base_version_buildtype)$(base_version_arch)$(base_version_density)
    101 
    102 # The version name scheme for the package apk is:
    103 # - For platform builds:     M.m.bbb
    104 # - For eng build (t=1):     M.m.bbb eng.$(USER)-hh
    105 # - For build server (t=0):  M.m.bbb (nnnnnn-hh)
    106 #       where nnnnnn is the build number from the build server (no zero-padding)
    107 # On eng builds, the BUILD_NUMBER has the user and timestamp inline
    108 ifdef TARGET_BUILD_APPS
    109 ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
    110   git_hash := $(shell git --git-dir $(LOCAL_PATH)/.git log -n 1 --pretty=format:%h)
    111   date_string := $(shell date +%m%d%y_%H%M%S)
    112   version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) (eng.$(USER).$(git_hash).$(date_string)-$(base_version_arch)$(base_version_density))
    113 else
    114   version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) ($(BUILD_NUMBER)-$(base_version_arch)$(base_version_density))
    115 endif
    116 else # !TARGET_BUILD_APPS
    117   version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build)
    118 endif
    119 
    120 # Cleanup the locals
    121 base_version_major :=
    122 base_version_minor :=
    123 base_version_build :=
    124 base_version_buildtype :=
    125 base_version_arch :=
    126 base_version_density :=
    127 git_hash :=
    128 date_string :=
    129