188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copyright (C) 2008 The Android Open Source Project
388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Licensed under the Apache License, Version 2.0 (the "License");
588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# you may not use this file except in compliance with the License.
688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# You may obtain a copy of the License at
788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#      http://www.apache.org/licenses/LICENSE-2.0
988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
1088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Unless required by applicable law or agreed to in writing, software
1188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# distributed under the License is distributed on an "AS IS" BASIS,
1288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# See the License for the specific language governing permissions and
1488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# limitations under the License.
1588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
1688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
1888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Handle various build version information.
1988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
2088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Guarantees that the following are defined:
2188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#     PLATFORM_VERSION
2288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#     PLATFORM_SDK_VERSION
239bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#     PLATFORM_VERSION_CODENAME
249bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#     DEFAULT_APP_TARGET_SDK
2588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#     BUILD_ID
2688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#     BUILD_NUMBER
2788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
2888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
2988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Look for an optional file containing overrides of the defaults,
3088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# but don't cry if we don't find it.  We could just use -include, but
3188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# the build.prop target also wants INTERNAL_BUILD_ID_MAKEFILE to be set
3288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# if the file exists.
3388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
3488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectINTERNAL_BUILD_ID_MAKEFILE := $(wildcard $(BUILD_SYSTEM)/build_id.mk)
3588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq "" "$(INTERNAL_BUILD_ID_MAKEFILE)"
3688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  include $(INTERNAL_BUILD_ID_MAKEFILE)
3788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
3888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
3988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq "" "$(PLATFORM_VERSION)"
4088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # This is the canonical definition of the platform version,
4188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # which is the version that we reveal to the end user.
4288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # Update this value when the platform version changes (rather
4388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # than overriding it somewhere else).  Can be an arbitrary string.
440421d0b115208b50015781b09f3661b65d72e858Dianne Hackborn  PLATFORM_VERSION := 5.1
4588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
4688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
4788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq "" "$(PLATFORM_SDK_VERSION)"
4888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # This is the canonical definition of the SDK version, which defines
499537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # the set of APIs and functionality available in the platform.  It
509537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # is a single integer that increases monotonically as updates to
519537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # the SDK are released.  It should only be incremented when the APIs for
529537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # the new release are frozen (so that developers don't write apps against
539537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # intermediate builds).  During development, this number remains at the
549537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # SDK version the branch is based on and PLATFORM_VERSION_CODENAME holds
559537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # the code-name of the new development work.
564a6a7524b398cabe144ccb02372ce8420c1b9780Dianne Hackborn  PLATFORM_SDK_VERSION := 22
5788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
5888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
599537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackbornifeq "" "$(PLATFORM_VERSION_CODENAME)"
609537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # This is the current development code-name, if the build is not a final
619537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn  # release build.  If this is a final release build, it is simply "REL".
62105df2f1d2882f6c49f0619c7c46b05d52a2e07aDianne Hackborn  PLATFORM_VERSION_CODENAME := REL
636ee3c4327d706c6bb0c0875f3094ab43bf96a7fdDianne Hackborn
646ee3c4327d706c6bb0c0875f3094ab43bf96a7fdDianne Hackborn  # This is all of the development codenames that are active.  Should be either
656ee3c4327d706c6bb0c0875f3094ab43bf96a7fdDianne Hackborn  # the same as PLATFORM_VERSION_CODENAME or a comma-separated list of additional
666ee3c4327d706c6bb0c0875f3094ab43bf96a7fdDianne Hackborn  # codenames after PLATFORM_VERSION_CODENAME.
67997b896eeb49b5aca9807a58ae39b14436ab6e98Dianne Hackborn  PLATFORM_VERSION_ALL_CODENAMES := $(PLATFORM_VERSION_CODENAME)
689537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackbornendif
699537884b0dabe81bf612c79d12c7b4bf40de10a5Dianne Hackborn
709bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackbornifeq "" "$(DEFAULT_APP_TARGET_SDK)"
719bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  # This is the default minSdkVersion and targetSdkVersion to use for
729bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  # all .apks created by the build system.  It can be overridden by explicitly
739bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  # setting these in the .apk's AndroidManifest.xml.  It is either the code
749bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  # name of the development build or, if this is a release build, the official
759bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  # SDK version of this release.
769bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  ifeq "REL" "$(PLATFORM_VERSION_CODENAME)"
779bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn    DEFAULT_APP_TARGET_SDK := $(PLATFORM_SDK_VERSION)
789bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  else
799bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn    DEFAULT_APP_TARGET_SDK := $(PLATFORM_VERSION_CODENAME)
809bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn  endif
819bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackbornendif
829bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn
8388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq "" "$(BUILD_ID)"
8488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # Used to signify special builds.  E.g., branches and/or releases,
8588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # like "M5-RC7".  Can be an arbitrary string, but must be a single
8688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # word and a valid file name.
8788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  #
8888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # If there is no BUILD_ID set, make it obvious.
8988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  BUILD_ID := UNKNOWN
9088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
9188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
9288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq "" "$(BUILD_NUMBER)"
9388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # BUILD_NUMBER should be set to the source control value that
9488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # represents the current state of the source code.  E.g., a
9588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # perforce changelist number or a git hash.  Can be an arbitrary string
9688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # (to allow for source control that uses something other than numbers),
9788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # but must be a single word and a valid file name.
9888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  #
9988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # If no BUILD_NUMBER is set, create a useful "I am an engineering build
10088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # from this date/time" value.  Make it start with a non-digit so that
10188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  # anyone trying to parse it as an integer will probably get "0".
10288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  BUILD_NUMBER := eng.$(USER).$(shell date +%Y%m%d.%H%M%S)
10388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
104