Mike Dodd | d3b009a | 2015-08-11 11:16:59 -0700 | [diff] [blame] | 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: |
Dan Willemsen | cc3d547 | 2015-10-28 16:26:20 -0700 | [diff] [blame] | 103 | # - For platform builds: M.m.bbb |
Mike Dodd | d3b009a | 2015-08-11 11:16:59 -0700 | [diff] [blame] | 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 |
Dan Willemsen | cc3d547 | 2015-10-28 16:26:20 -0700 | [diff] [blame] | 108 | ifdef TARGET_BUILD_APPS |
Mike Dodd | d3b009a | 2015-08-11 11:16:59 -0700 | [diff] [blame] | 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 |
Dan Willemsen | cc3d547 | 2015-10-28 16:26:20 -0700 | [diff] [blame] | 116 | else # !TARGET_BUILD_APPS |
| 117 | version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) |
| 118 | endif |
Mike Dodd | d3b009a | 2015-08-11 11:16:59 -0700 | [diff] [blame] | 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 := |