1# 2# Set up product-global definitions and include product-specific rules. 3# 4 5LOCAL_PATH := $(call my-dir) 6 7-include $(TARGET_DEVICE_DIR)/AndroidBoard.mk 8 9# Generate a file that contains various information about the 10# device we're building for. This file is typically packaged up 11# with everything else. 12# 13# The following logic is used to find the contents of the info file: 14# 1. TARGET_BOARD_INFO_FILES (can be set in BoardConfig.mk) will be combined. 15# 2. TARGET_BOARD_INFO_FILE (can be set in BoardConfig.mk) will be used. 16# 3. $(TARGET_DEVICE_DIR)/board-info.txt will be used if present. 17# 18# Specifying both TARGET_BOARD_INFO_FILES and TARGET_BOARD_INFO_FILE is an 19# error. 20# 21INSTALLED_ANDROID_INFO_TXT_TARGET := $(PRODUCT_OUT)/android-info.txt 22ifdef TARGET_BOARD_INFO_FILES 23 ifdef TARGET_BOARD_INFO_FILE 24 $(warning Both TARGET_BOARD_INFO_FILES and TARGET_BOARD_INFO_FILE are defined.) 25 $(warning Using $(TARGET_BOARD_INFO_FILES) rather than $(TARGET_BOARD_INFO_FILE) for android-info.txt) 26 endif 27 board_info_txt := $(call intermediates-dir-for,PACKAGING,board-info)/board-info.txt 28$(board_info_txt): $(TARGET_BOARD_INFO_FILES) 29 $(hide) cat $(TARGET_BOARD_INFO_FILES) > $@ 30else ifdef TARGET_BOARD_INFO_FILE 31 board_info_txt := $(TARGET_BOARD_INFO_FILE) 32else 33 board_info_txt := $(wildcard $(TARGET_DEVICE_DIR)/board-info.txt) 34endif 35 36CHECK_RADIO_VERSIONS := $(HOST_OUT_EXECUTABLES)/check_radio_versions$(HOST_EXECUTABLE_SUFFIX) 37$(INSTALLED_ANDROID_INFO_TXT_TARGET): $(board_info_txt) $(CHECK_RADIO_VERSIONS) 38 $(hide) $(CHECK_RADIO_VERSIONS) \ 39 --board_info_txt $(board_info_txt) \ 40 --board_info_check $(BOARD_INFO_CHECK) 41 $(call pretty,"Generated: ($@)") 42ifdef board_info_txt 43 $(hide) grep -v '#' $< > $@ 44else ifdef TARGET_BOOTLOADER_BOARD_NAME 45 $(hide) echo "board=$(TARGET_BOOTLOADER_BOARD_NAME)" > $@ 46else 47 $(hide) echo "" > $@ 48endif 49 50$(call declare-0p-target,$(INSTALLED_ANDROID_INFO_TXT_TARGET)) 51 52# Copy compatibility metadata to the device. 53 54# Device Manifest 55ifdef DEVICE_MANIFEST_FILE 56# $(DEVICE_MANIFEST_FILE) can be a list of files 57include $(CLEAR_VARS) 58LOCAL_MODULE := vendor_manifest.xml 59LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 legacy_not_a_contribution 60LOCAL_LICENSE_CONDITIONS := by_exception_only not_allowed notice 61LOCAL_MODULE_STEM := manifest.xml 62LOCAL_MODULE_CLASS := ETC 63LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/vintf 64 65GEN := $(local-generated-sources-dir)/manifest.xml 66$(GEN): PRIVATE_DEVICE_MANIFEST_FILE := $(DEVICE_MANIFEST_FILE) 67$(GEN): $(DEVICE_MANIFEST_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf 68 BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \ 69 PRODUCT_ENFORCE_VINTF_MANIFEST=$(PRODUCT_ENFORCE_VINTF_MANIFEST) \ 70 PRODUCT_SHIPPING_API_LEVEL=$(PRODUCT_SHIPPING_API_LEVEL) \ 71 $(HOST_OUT_EXECUTABLES)/assemble_vintf -o $@ \ 72 -i $(call normalize-path-list,$(PRIVATE_DEVICE_MANIFEST_FILE)) 73 74LOCAL_PREBUILT_MODULE_FILE := $(GEN) 75include $(BUILD_PREBUILT) 76endif 77 78# DEVICE_MANIFEST_SKUS: a list of SKUS where DEVICE_MANIFEST_<sku>_FILES is defined. 79ifdef DEVICE_MANIFEST_SKUS 80 81# Install /vendor/etc/vintf/manifest_$(sku).xml 82# $(1): sku 83define _add_device_sku_manifest 84my_fragment_files_var := DEVICE_MANIFEST_$$(call to-upper,$(1))_FILES 85ifndef $$(my_fragment_files_var) 86$$(error $(1) is in DEVICE_MANIFEST_SKUS but $$(my_fragment_files_var) is not defined) 87endif 88my_fragment_files := $$($$(my_fragment_files_var)) 89include $$(CLEAR_VARS) 90LOCAL_MODULE := vendor_manifest_$(1).xml 91LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 legacy_not_a_contribution 92LOCAL_LICENSE_CONDITIONS := by_exception_only not_allowed notice 93LOCAL_MODULE_STEM := manifest_$(1).xml 94LOCAL_MODULE_CLASS := ETC 95LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/vintf 96 97GEN := $$(local-generated-sources-dir)/manifest_$(1).xml 98$$(GEN): PRIVATE_SRC_FILES := $$(my_fragment_files) 99$$(GEN): $$(my_fragment_files) $$(HOST_OUT_EXECUTABLES)/assemble_vintf 100 BOARD_SEPOLICY_VERS=$$(BOARD_SEPOLICY_VERS) \ 101 PRODUCT_ENFORCE_VINTF_MANIFEST=$$(PRODUCT_ENFORCE_VINTF_MANIFEST) \ 102 PRODUCT_SHIPPING_API_LEVEL=$$(PRODUCT_SHIPPING_API_LEVEL) \ 103 $$(HOST_OUT_EXECUTABLES)/assemble_vintf -o $$@ \ 104 -i $$(call normalize-path-list,$$(PRIVATE_SRC_FILES)) 105 106LOCAL_PREBUILT_MODULE_FILE := $$(GEN) 107include $$(BUILD_PREBUILT) 108my_fragment_files_var := 109my_fragment_files := 110endef 111 112$(foreach sku, $(DEVICE_MANIFEST_SKUS), $(eval $(call _add_device_sku_manifest,$(sku)))) 113_add_device_sku_manifest := 114 115endif # DEVICE_MANIFEST_SKUS 116 117# ODM manifest 118ifdef ODM_MANIFEST_FILES 119# ODM_MANIFEST_FILES is a list of files that is combined and installed as the default ODM manifest. 120include $(CLEAR_VARS) 121LOCAL_MODULE := odm_manifest.xml 122LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 legacy_not_a_contribution 123LOCAL_LICENSE_CONDITIONS := by_exception_only not_allowed notice 124LOCAL_MODULE_STEM := manifest.xml 125LOCAL_MODULE_CLASS := ETC 126LOCAL_MODULE_RELATIVE_PATH := vintf 127LOCAL_ODM_MODULE := true 128 129GEN := $(local-generated-sources-dir)/manifest.xml 130$(GEN): PRIVATE_SRC_FILES := $(ODM_MANIFEST_FILES) 131$(GEN): $(ODM_MANIFEST_FILES) $(HOST_OUT_EXECUTABLES)/assemble_vintf 132 # Set VINTF_IGNORE_TARGET_FCM_VERSION to true because it should only be in device manifest. 133 VINTF_IGNORE_TARGET_FCM_VERSION=true \ 134 $(HOST_OUT_EXECUTABLES)/assemble_vintf -o $@ \ 135 -i $(call normalize-path-list,$(PRIVATE_SRC_FILES)) 136 137LOCAL_PREBUILT_MODULE_FILE := $(GEN) 138include $(BUILD_PREBUILT) 139endif # ODM_MANIFEST_FILES 140 141# ODM_MANIFEST_SKUS: a list of SKUS where ODM_MANIFEST_<sku>_FILES are defined. 142ifdef ODM_MANIFEST_SKUS 143 144# Install /odm/etc/vintf/manifest_$(sku).xml 145# $(1): sku 146define _add_odm_sku_manifest 147my_fragment_files_var := ODM_MANIFEST_$$(call to-upper,$(1))_FILES 148ifndef $$(my_fragment_files_var) 149$$(error $(1) is in ODM_MANIFEST_SKUS but $$(my_fragment_files_var) is not defined) 150endif 151my_fragment_files := $$($$(my_fragment_files_var)) 152include $$(CLEAR_VARS) 153LOCAL_MODULE := odm_manifest_$(1).xml 154LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 legacy_not_a_contribution 155LOCAL_LICENSE_CONDITIONS := by_exception_only not_allowed notice 156LOCAL_MODULE_STEM := manifest_$(1).xml 157LOCAL_MODULE_CLASS := ETC 158LOCAL_MODULE_RELATIVE_PATH := vintf 159LOCAL_ODM_MODULE := true 160GEN := $$(local-generated-sources-dir)/manifest_$(1).xml 161$$(GEN): PRIVATE_SRC_FILES := $$(my_fragment_files) 162$$(GEN): $$(my_fragment_files) $$(HOST_OUT_EXECUTABLES)/assemble_vintf 163 VINTF_IGNORE_TARGET_FCM_VERSION=true \ 164 $$(HOST_OUT_EXECUTABLES)/assemble_vintf -o $$@ \ 165 -i $$(call normalize-path-list,$$(PRIVATE_SRC_FILES)) 166LOCAL_PREBUILT_MODULE_FILE := $$(GEN) 167include $$(BUILD_PREBUILT) 168my_fragment_files_var := 169my_fragment_files := 170endef 171 172$(foreach sku, $(ODM_MANIFEST_SKUS), $(eval $(call _add_odm_sku_manifest,$(sku)))) 173_add_odm_sku_manifest := 174 175endif # ODM_MANIFEST_SKUS 176