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# If TARGET_BOARD_INFO_FILE (which can be set in BoardConfig.mk) is 14# defined, it is used, otherwise board-info.txt is looked for in 15# $(TARGET_DEVICE_DIR). 16# 17INSTALLED_ANDROID_INFO_TXT_TARGET := $(PRODUCT_OUT)/android-info.txt 18board_info_txt := $(TARGET_BOARD_INFO_FILE) 19ifndef board_info_txt 20board_info_txt := $(wildcard $(TARGET_DEVICE_DIR)/board-info.txt) 21endif 22$(INSTALLED_ANDROID_INFO_TXT_TARGET): $(board_info_txt) 23 $(hide) build/tools/check_radio_versions.py $< $(BOARD_INFO_CHECK) 24 $(call pretty,"Generated: ($@)") 25ifdef board_info_txt 26 $(hide) grep -v '#' $< > $@ 27else 28 $(hide) echo "board=$(TARGET_BOOTLOADER_BOARD_NAME)" > $@ 29endif 30 31# Copy compatibility metadata to the device. 32 33# Device Manifest 34ifdef DEVICE_MANIFEST_FILE 35# $(DEVICE_MANIFEST_FILE) can be a list of files 36include $(CLEAR_VARS) 37LOCAL_MODULE := manifest.xml 38LOCAL_MODULE_CLASS := ETC 39LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) 40 41GEN := $(local-generated-sources-dir)/manifest.xml 42$(GEN): PRIVATE_DEVICE_MANIFEST_FILE := $(DEVICE_MANIFEST_FILE) 43$(GEN): $(DEVICE_MANIFEST_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf 44 BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \ 45 $(HOST_OUT_EXECUTABLES)/assemble_vintf -o $@ \ 46 -i $(call normalize-path-list,$(PRIVATE_DEVICE_MANIFEST_FILE)) 47 48LOCAL_PREBUILT_MODULE_FILE := $(GEN) 49include $(BUILD_PREBUILT) 50BUILT_VENDOR_MANIFEST := $(LOCAL_BUILT_MODULE) 51endif 52 53# Device Compatibility Matrix 54ifdef DEVICE_MATRIX_FILE 55include $(CLEAR_VARS) 56LOCAL_MODULE := compatibility_matrix.xml 57LOCAL_MODULE_CLASS := ETC 58LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) 59 60GEN := $(local-generated-sources-dir)/compatibility_matrix.xml 61$(GEN): $(DEVICE_MATRIX_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf 62 # TODO(b/37342627): put BOARD_VNDK_VERSION & BOARD_VNDK_LIBRARIES into device matrix. 63 $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $< -o $@ 64 65LOCAL_PREBUILT_MODULE_FILE := $(GEN) 66include $(BUILD_PREBUILT) 67BUILT_VENDOR_MATRIX := $(LOCAL_BUILT_MODULE) 68endif 69 70# Framework Manifest 71include $(CLEAR_VARS) 72LOCAL_MODULE := system_manifest.xml 73LOCAL_MODULE_STEM := manifest.xml 74LOCAL_MODULE_CLASS := ETC 75LOCAL_MODULE_PATH := $(TARGET_OUT) 76 77GEN := $(local-generated-sources-dir)/manifest.xml 78 79$(GEN): PRIVATE_FLAGS := 80 81# TODO(b/37954458), (b/37321309) remove check of PRODUCT_FULL_TREBLE after 82# putting device compatibility matrices for non-treble devices. 83ifeq ($(PRODUCT_FULL_TREBLE),true) 84ifdef BUILT_VENDOR_MATRIX 85$(GEN): $(BUILT_VENDOR_MATRIX) 86$(GEN): PRIVATE_FLAGS += -c "$(BUILT_VENDOR_MATRIX)" 87endif 88endif 89 90$(GEN): $(FRAMEWORK_MANIFEST_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf 91 BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $< -o $@ $(PRIVATE_FLAGS) 92 93LOCAL_PREBUILT_MODULE_FILE := $(GEN) 94include $(BUILD_PREBUILT) 95BUILT_SYSTEM_MANIFEST := $(LOCAL_BUILT_MODULE) 96 97# Framework Compatibility Matrix 98include $(CLEAR_VARS) 99LOCAL_MODULE := system_compatibility_matrix.xml 100LOCAL_MODULE_STEM := compatibility_matrix.xml 101LOCAL_MODULE_CLASS := ETC 102LOCAL_MODULE_PATH := $(TARGET_OUT) 103 104GEN := $(local-generated-sources-dir)/compatibility_matrix.xml 105 106$(GEN): PRIVATE_FLAGS := 107 108# TODO(b/37954458), (b/37321309) remove check of PRODUCT_FULL_TREBLE after 109# putting complete HAL manifests on non-treble devices. 110ifeq ($(PRODUCT_FULL_TREBLE),true) 111ifdef BUILT_VENDOR_MANIFEST 112$(GEN): $(BUILT_VENDOR_MANIFEST) 113$(GEN): PRIVATE_FLAGS += -c "$(BUILT_VENDOR_MANIFEST)" 114endif 115endif 116 117ifeq (true,$(BOARD_AVB_ENABLE)) 118$(GEN): $(AVBTOOL) 119# INTERNAL_AVB_SYSTEM_SIGNING_ARGS consists of BOARD_AVB_SYSTEM_KEY_PATH and 120# BOARD_AVB_SYSTEM_ALGORITHM. We should add the dependency of key path, which 121# is a file, here. 122$(GEN): $(BOARD_AVB_SYSTEM_KEY_PATH) 123# Use deferred assignment (=) instead of immediate assignment (:=). 124# Otherwise, cannot get INTERNAL_AVB_SYSTEM_SIGNING_ARGS. 125FRAMEWORK_VBMETA_VERSION = $$("$(AVBTOOL)" add_hashtree_footer \ 126 --print_required_libavb_version \ 127 $(INTERNAL_AVB_SYSTEM_SIGNING_ARGS) \ 128 $(BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS)) 129else 130FRAMEWORK_VBMETA_VERSION := 0.0 131endif 132 133# All kernel versions that the system image works with. 134KERNEL_VERSIONS := 3.18 4.4 4.9 135KERNEL_CONFIG_DATA := test/vts-testcase/kernel/config/data 136 137$(GEN): $(foreach version,$(KERNEL_VERSIONS),\ 138 $(wildcard $(KERNEL_CONFIG_DATA)/android-$(version)/android-base*.cfg)) 139$(GEN): PRIVATE_FLAGS += $(foreach version,$(KERNEL_VERSIONS),\ 140 --kernel=$(version):$(call normalize-path-list,\ 141 $(wildcard $(KERNEL_CONFIG_DATA)/android-$(version)/android-base*.cfg))) 142 143KERNEL_VERSIONS := 144KERNEL_CONFIG_DATA := 145 146$(GEN): $(FRAMEWORK_COMPATIBILITY_MATRIX_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf 147 # TODO(b/37405869) (b/37715375) inject avb versions as well for devices that have avb enabled. 148 POLICYVERS=$(POLICYVERS) \ 149 BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \ 150 FRAMEWORK_VBMETA_VERSION=$(FRAMEWORK_VBMETA_VERSION) \ 151 $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $< -o $@ $(PRIVATE_FLAGS) 152LOCAL_PREBUILT_MODULE_FILE := $(GEN) 153include $(BUILD_PREBUILT) 154BUILT_SYSTEM_COMPATIBILITY_MATRIX := $(LOCAL_BUILT_MODULE) 155