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