1 # 2 # Set up product-global definitions and include product-specific rules. 3 # 4 5 LOCAL_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 # 17 INSTALLED_ANDROID_INFO_TXT_TARGET := $(PRODUCT_OUT)/android-info.txt 18 board_info_txt := $(TARGET_BOARD_INFO_FILE) 19 ifndef board_info_txt 20 board_info_txt := $(wildcard $(TARGET_DEVICE_DIR)/board-info.txt) 21 endif 22 $(INSTALLED_ANDROID_INFO_TXT_TARGET): $(board_info_txt) 23 $(hide) build/tools/check_radio_versions.py $< $(BOARD_INFO_CHECK) 24 $(call pretty,"Generated: ($@)") 25 ifdef board_info_txt 26 $(hide) grep -v '#' $< > $@ 27 else 28 $(hide) echo "board=$(TARGET_BOOTLOADER_BOARD_NAME)" > $@ 29 endif 30 31 # Copy compatibility metadata to the device. 32 33 # Device Manifest 34 ifdef DEVICE_MANIFEST_FILE 35 # $(DEVICE_MANIFEST_FILE) can be a list of files 36 include $(CLEAR_VARS) 37 LOCAL_MODULE := manifest.xml 38 LOCAL_MODULE_CLASS := ETC 39 LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) 40 41 GEN := $(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 48 LOCAL_PREBUILT_MODULE_FILE := $(GEN) 49 include $(BUILD_PREBUILT) 50 BUILT_VENDOR_MANIFEST := $(LOCAL_BUILT_MODULE) 51 endif 52 53 # Device Compatibility Matrix 54 ifdef DEVICE_MATRIX_FILE 55 include $(CLEAR_VARS) 56 LOCAL_MODULE := compatibility_matrix.xml 57 LOCAL_MODULE_CLASS := ETC 58 LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) 59 60 GEN := $(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 65 LOCAL_PREBUILT_MODULE_FILE := $(GEN) 66 include $(BUILD_PREBUILT) 67 BUILT_VENDOR_MATRIX := $(LOCAL_BUILT_MODULE) 68 endif 69 70 # Framework Manifest 71 include $(CLEAR_VARS) 72 LOCAL_MODULE := system_manifest.xml 73 LOCAL_MODULE_STEM := manifest.xml 74 LOCAL_MODULE_CLASS := ETC 75 LOCAL_MODULE_PATH := $(TARGET_OUT) 76 77 GEN := $(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. 83 ifeq ($(PRODUCT_FULL_TREBLE),true) 84 ifdef BUILT_VENDOR_MATRIX 85 $(GEN): $(BUILT_VENDOR_MATRIX) 86 $(GEN): PRIVATE_FLAGS += -c "$(BUILT_VENDOR_MATRIX)" 87 endif 88 endif 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 93 LOCAL_PREBUILT_MODULE_FILE := $(GEN) 94 include $(BUILD_PREBUILT) 95 BUILT_SYSTEM_MANIFEST := $(LOCAL_BUILT_MODULE) 96 97 # Framework Compatibility Matrix 98 include $(CLEAR_VARS) 99 LOCAL_MODULE := system_compatibility_matrix.xml 100 LOCAL_MODULE_STEM := compatibility_matrix.xml 101 LOCAL_MODULE_CLASS := ETC 102 LOCAL_MODULE_PATH := $(TARGET_OUT) 103 104 GEN := $(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. 110 ifeq ($(PRODUCT_FULL_TREBLE),true) 111 ifdef BUILT_VENDOR_MANIFEST 112 $(GEN): $(BUILT_VENDOR_MANIFEST) 113 $(GEN): PRIVATE_FLAGS += -c "$(BUILT_VENDOR_MANIFEST)" 114 endif 115 endif 116 117 ifeq (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. 125 FRAMEWORK_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)) 129 else 130 FRAMEWORK_VBMETA_VERSION := 0.0 131 endif 132 133 # All kernel versions that the system image works with. 134 KERNEL_VERSIONS := 3.18 4.4 4.9 135 KERNEL_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 143 KERNEL_VERSIONS := 144 KERNEL_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) 152 LOCAL_PREBUILT_MODULE_FILE := $(GEN) 153 include $(BUILD_PREBUILT) 154 BUILT_SYSTEM_COMPATIBILITY_MATRIX := $(LOCAL_BUILT_MODULE) 155