1a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET#
2a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# Copyright (C) 2015 The Android Open Source Project
3a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET#
4a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# Licensed under the Apache License, Version 2.0 (the "License");
5a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# you may not use this file except in compliance with the License.
6a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# You may obtain a copy of the License at
7a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET#
8a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET#      http://www.apache.org/licenses/LICENSE-2.0
9a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET#
10a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# Unless required by applicable law or agreed to in writing, software
11a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# distributed under the License is distributed on an "AS IS" BASIS,
12a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# See the License for the specific language governing permissions and
14a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# limitations under the License.
15a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET#
16a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
17a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# Build time settings used by system services
18a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# ========================================================
19a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETifdef OSRELEASED_DIRECTORY
20a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
21a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETinclude $(CLEAR_VARS)
22a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETLOCAL_MODULE := product_id
23b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen JiangLOCAL_MODULE_CLASS := FAKE
24b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen JiangLOCAL_MODULE_PATH := $(TARGET_OUT_OEM)/$(OSRELEASED_DIRECTORY)
25a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETinclude $(BUILD_SYSTEM)/base_rules.mk
26a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
2700302c248da7a0200d52efbc9754f0b1c67f466aWill Drewry# Attempt to populate the product id from a file in the product path.
2800302c248da7a0200d52efbc9754f0b1c67f466aWill DrewryLOADED_BRILLO_PRODUCT_ID := $(call cfgtree-get-if-exists,brillo/product_id)
2900302c248da7a0200d52efbc9754f0b1c67f466aWill Drewry
30a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# We don't really have a default value for the product id as the backend
31a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# interaction will not work if this is not set correctly.
3200302c248da7a0200d52efbc9754f0b1c67f466aWill Drewry$(LOCAL_BUILT_MODULE): BRILLO_PRODUCT_ID ?= "$(LOADED_BRILLO_PRODUCT_ID)"
33a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET$(LOCAL_BUILT_MODULE):
34b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen Jiang	$(hide) mkdir -p $(dir $@)
35a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET	echo $(BRILLO_PRODUCT_ID) > $@
36b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen Jiang	$(hide) mkdir -p $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)
37b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen Jiang	ln -sf /oem/$(OSRELEASED_DIRECTORY)/product_id $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)
38b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen Jiang
39f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jianginclude $(CLEAR_VARS)
40f318ca5110149a99d8eace1ce8fc4598ae49d606Sen JiangLOCAL_MODULE := system_id
41f318ca5110149a99d8eace1ce8fc4598ae49d606Sen JiangLOCAL_MODULE_CLASS := ETC
42f318ca5110149a99d8eace1ce8fc4598ae49d606Sen JiangLOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)
43f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jianginclude $(BUILD_SYSTEM)/base_rules.mk
44f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang
45f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang# Attempt to populate the system id from a file in the product path.
46f318ca5110149a99d8eace1ce8fc4598ae49d606Sen JiangLOADED_BRILLO_SYSTEM_ID := $(call cfgtree-get-if-exists,brillo/system_id)
47f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang
48f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang$(LOCAL_BUILT_MODULE): BRILLO_SYSTEM_ID ?= "$(LOADED_BRILLO_SYSTEM_ID)"
49f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang$(LOCAL_BUILT_MODULE):
50f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang	$(hide) mkdir -p $(dir $@)
51f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang	echo $(BRILLO_SYSTEM_ID) > $@
52f318ca5110149a99d8eace1ce8fc4598ae49d606Sen Jiang
53a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
54a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETinclude $(CLEAR_VARS)
55a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETLOCAL_MODULE := product_version
56b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen JiangLOCAL_MODULE_CLASS := FAKE
57b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen JiangLOCAL_MODULE_PATH := $(TARGET_OUT_OEM)/$(OSRELEASED_DIRECTORY)
58a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETinclude $(BUILD_SYSTEM)/base_rules.mk
59a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
604e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# The version is set to 0 if the user did not set the actual version and
61f01bc2175998a3d13e47dc6afe913ae8f036a89eWill Drewry# a version cannot be loaded from the product cfgtree.
62a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# This allows us to have a valid version number while being easy to filter.
63f01bc2175998a3d13e47dc6afe913ae8f036a89eWill Drewryifeq ($(BRILLO_PRODUCT_VERSION),)
64f01bc2175998a3d13e47dc6afe913ae8f036a89eWill Drewry# Load from file first
65f01bc2175998a3d13e47dc6afe913ae8f036a89eWill DrewryBRILLO_PRODUCT_VERSION := $(call cfgtree-get-if-exists,brillo/product_version)
66f01bc2175998a3d13e47dc6afe913ae8f036a89eWill Drewryendif
674e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# If the version is still empty, override it with 0
68f01bc2175998a3d13e47dc6afe913ae8f036a89eWill Drewryifeq ($(BRILLO_PRODUCT_VERSION),)
694e37d79fc30d331834a547c1d95d9b99c82c49c7Sen JiangBRILLO_PRODUCT_VERSION := "0"
70f01bc2175998a3d13e47dc6afe913ae8f036a89eWill Drewryendif
714e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangifeq ($(shell echo $(BRILLO_PRODUCT_VERSION) | grep -E '^[0-9]+$$'),)
72a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET$(error Invalid BRILLO_PRODUCT_VERSION "$(BRILLO_PRODUCT_VERSION)", must be \
734e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang  a single number. Example: "1")
744e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangendif
754e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang
764e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang$(LOCAL_BUILT_MODULE):
774e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang	$(hide) mkdir -p $(dir $@)
784e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang	echo $(BRILLO_PRODUCT_VERSION) > $@
794e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang	$(hide) mkdir -p $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)
804e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang	ln -sf /oem/$(OSRELEASED_DIRECTORY)/product_version $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)
814e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang
824e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang
834e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jianginclude $(CLEAR_VARS)
844e37d79fc30d331834a547c1d95d9b99c82c49c7Sen JiangLOCAL_MODULE := system_version
854e37d79fc30d331834a547c1d95d9b99c82c49c7Sen JiangLOCAL_MODULE_CLASS := ETC
864e37d79fc30d331834a547c1d95d9b99c82c49c7Sen JiangLOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)
874e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jianginclude $(BUILD_SYSTEM)/base_rules.mk
884e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang
894e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# The version is set to 0.0 if the user did not set the actual version and
904e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# a version cannot be loaded from the product cfgtree.
914e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# This allows us to have a valid version number while being easy to filter.
924e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangifeq ($(BRILLO_SYSTEM_VERSION),)
934e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# Load from file first
944e37d79fc30d331834a547c1d95d9b99c82c49c7Sen JiangBRILLO_SYSTEM_VERSION := $(call cfgtree-get-if-exists,brillo/system_version)
954e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangendif
964e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang# If the version is still empty, override it with 0.0
974e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangifeq ($(BRILLO_SYSTEM_VERSION),)
984e37d79fc30d331834a547c1d95d9b99c82c49c7Sen JiangBRILLO_SYSTEM_VERSION := "0.0"
994e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangendif
1004e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiangifeq ($(shell echo $(BRILLO_SYSTEM_VERSION) | grep -E '^[0-9]+\.[0-9]+$$'),)
1014e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang$(error Invalid BRILLO_SYSTEM_VERSION "$(BRILLO_SYSTEM_VERSION)", must be \
1024e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang  two numbers separated by dots. Example: "1.2")
103a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETendif
104a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
105a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET# Append BUILD_NUMBER if it is a number or a build timestamp otherwise.
1065f78882ccd104a07fc95c486c3bb57e6483f8262Bertrand SIMONNET# We don't want to use BUILD_DATETIME_FROM_FILE as this timestamp must be
1075f78882ccd104a07fc95c486c3bb57e6483f8262Bertrand SIMONNET# different at every build.
1085f78882ccd104a07fc95c486c3bb57e6483f8262Bertrand SIMONNET# If you don' want this to change at every build, you can define BUILD_NUMBER in
1095f78882ccd104a07fc95c486c3bb57e6483f8262Bertrand SIMONNET# your product makefile and increase it manually.
110a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET$(LOCAL_BUILT_MODULE):
111b6cfdd3ffbaa48a1006b6ce6e4f129ceffa287b8Sen Jiang	$(hide) mkdir -p $(dir $@)
112a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETifeq ($(shell echo $(BUILD_NUMBER) | grep -E '[^0-9]'),)
1134e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang	echo $(BRILLO_SYSTEM_VERSION).$(BUILD_NUMBER) > $@
114a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETelse
1154e37d79fc30d331834a547c1d95d9b99c82c49c7Sen Jiang	echo $(BRILLO_SYSTEM_VERSION).$(BUILD_DATETIME) > $@
116a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETendif
117a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNET
118a659ce97b3ee5aac752c827e57dc036c65661ac9Bertrand SIMONNETendif
119