Home | History | Annotate | Download | only in board
      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