1#
2# Copyright (C) 2014 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# The current version code scheme for the package apk is:
18#      Mbbbba
19# where
20#    M - Chromium milestone number minus 36. (1 or more digits). This is to
21#        ensure that our version codes are lower than the ones currently used by
22#        Chrome for Android, so that we can adopt their scheme in future.
23# bbbb - manually specified build number (exactly 4 digits). This defaults to
24#        0000, or 9999 in local builds.
25#    a - device architecture (exactly 1 digit). Current valid values are:
26#           1 : armv7-a
27#           2 : armv8-a (arm64)
28#           4 : mips
29#           7 : x86
30#           8 : x86_64
31#        64-bit architectures must be higher than their corresponding 32-bit
32#        architectures to ensure that 64-bit devices receive the multiarch APK.
33#        x86 must be higher than ARM to avoid x86 devices receiving ARM APKs
34#        and running them in emulation.
35
36# TODO(torne): get this from Chromium automatically.
37version_milestone := 39
38version_offset_milestone := $(shell echo $(version_milestone) \
39                              | awk '{print $$1 - 36}')
40
41ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
42  version_build_number := 9999
43  # BUILD_NUMBER has a timestamp in it, which means that
44  # it will change every time. Pick a stable value.
45  version_name_tag := eng.$(USER)
46else
47  ifeq "$(version_build_number)" ""
48    version_build_number := 0000
49  endif
50  version_name_tag := $(BUILD_NUMBER)
51endif
52
53ifeq "$(TARGET_ARCH)" "x86_64"
54  version_arch := 8
55else ifeq "$(TARGET_ARCH)" "x86"
56  version_arch := 7
57else ifeq "$(TARGET_ARCH)" "mips"
58  version_arch := 4
59else ifeq "$(TARGET_ARCH)" "arm64"
60  version_arch := 2
61else ifeq "$(TARGET_ARCH)" "arm"
62  version_arch := 1
63else
64  version_arch := 0
65  $(warning Could not determine target architecture for versioning)
66endif
67
68version_code := $(version_offset_milestone)$(version_build_number)$(version_arch)
69
70# Use the milestone, build number and architecture to construct a version
71# name like "37 (1424323-arm64)".
72# TODO(torne): get the full version number from Chromium.
73version_name := $(version_milestone) ($(version_name_tag)-$(TARGET_ARCH))
74
75# Clean up locals
76version_milestone :=
77version_build_number :=
78version_name_tag :=
79version_arch :=
80