blob: 2a01480b41b93d534c9ac3e91786b41ee1f26b20 [file] [log] [blame]
Yifan Hong2d8442c2017-12-13 15:01:19 -08001#
2# Copyright (C) 2017 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17LOCAL_PATH := $(call my-dir)
18
19# Install all compatibility_matrix.*.xml to /system/etc/vintf
20
21include $(CLEAR_VARS)
22LOCAL_MODULE := framework_compatibility_matrix.legacy.xml
23LOCAL_MODULE_STEM := compatibility_matrix.legacy.xml
24LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
25LOCAL_MODULE_CLASS := ETC
26LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/vintf
27include $(BUILD_PREBUILT)
28
29include $(CLEAR_VARS)
30LOCAL_MODULE := framework_compatibility_matrix.1.xml
31LOCAL_MODULE_STEM := compatibility_matrix.1.xml
32LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
33LOCAL_MODULE_CLASS := ETC
34LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/vintf
35include $(BUILD_PREBUILT)
36
37include $(CLEAR_VARS)
38LOCAL_MODULE := framework_compatibility_matrix.2.xml
39LOCAL_MODULE_STEM := compatibility_matrix.2.xml
40LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
41LOCAL_MODULE_CLASS := ETC
42LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/vintf
43include $(BUILD_PREBUILT)
44
45include $(CLEAR_VARS)
46LOCAL_MODULE := framework_compatibility_matrix.current.xml
47LOCAL_MODULE_STEM := compatibility_matrix.current.xml
48LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
49LOCAL_MODULE_CLASS := ETC
50LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/vintf
51include $(BUILD_PREBUILT)
52
53# Framework Compatibility Matrix without HALs
54include $(CLEAR_VARS)
55LOCAL_MODULE := framework_compatibility_matrix.empty.xml
56LOCAL_MODULE_STEM := compatibility_matrix.empty.xml
57LOCAL_MODULE_CLASS := ETC
58LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/vintf
59
60GEN := $(local-generated-sources-dir)/$(LOCAL_MODULE_STEM)
61
62$(GEN): PRIVATE_FLAGS :=
63
64ifeq (true,$(BOARD_AVB_ENABLE))
65$(GEN): $(AVBTOOL)
66# INTERNAL_AVB_SYSTEM_SIGNING_ARGS consists of BOARD_AVB_SYSTEM_KEY_PATH and
67# BOARD_AVB_SYSTEM_ALGORITHM. We should add the dependency of key path, which
68# is a file, here.
69$(GEN): $(BOARD_AVB_SYSTEM_KEY_PATH)
70# Use deferred assignment (=) instead of immediate assignment (:=).
71# Otherwise, cannot get INTERNAL_AVB_SYSTEM_SIGNING_ARGS.
72$(GEN): FRAMEWORK_VBMETA_VERSION = $$("$(AVBTOOL)" add_hashtree_footer \
73 --print_required_libavb_version \
74 $(INTERNAL_AVB_SYSTEM_SIGNING_ARGS) \
75 $(BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS))
76else
77$(GEN): FRAMEWORK_VBMETA_VERSION := 0.0
78endif
79
80# Specify kernel versions that the current framework supports. These versions,
81# along with kernel configurations, are written to the framework compatibility
82# matrix.
83$(GEN): KERNEL_VERSIONS := 3.18 4.4 4.9
84
85# Specify the location of android-base*.cfg files.
86$(GEN): KERNEL_CONFIG_DATA := kernel/configs
87
88$(GEN): $(foreach version,$(KERNEL_VERSIONS),\
89 $(wildcard $(KERNEL_CONFIG_DATA)/android-$(version)/android-base*.cfg))
90$(GEN): PRIVATE_FLAGS += $(foreach version,$(KERNEL_VERSIONS),\
91 --kernel=$(version):$(call normalize-path-list,\
92 $(wildcard $(KERNEL_CONFIG_DATA)/android-$(version)/android-base*.cfg)))
93
94$(GEN): $(LOCAL_PATH)/compatibility_matrix.empty.xml $(HOST_OUT_EXECUTABLES)/assemble_vintf
95 POLICYVERS=$(POLICYVERS) \
96 BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \
97 FRAMEWORK_VBMETA_VERSION=$(FRAMEWORK_VBMETA_VERSION) \
98 $(HOST_OUT_EXECUTABLES)/assemble_vintf \
99 -i $< -o $@ $(PRIVATE_FLAGS)
100LOCAL_PREBUILT_MODULE_FILE := $(GEN)
101include $(BUILD_PREBUILT)
102
103# Framework Compatibility Matrix
104include $(CLEAR_VARS)
105LOCAL_MODULE := framework_compatibility_matrix.xml
106LOCAL_MODULE_STEM := compatibility_matrix.xml
107LOCAL_MODULE_CLASS := ETC
108LOCAL_MODULE_PATH := $(TARGET_OUT)
109
110LOCAL_REQUIRED_MODULES := \
111 framework_compatibility_matrix.legacy.xml \
112 framework_compatibility_matrix.1.xml \
113 framework_compatibility_matrix.2.xml \
114 framework_compatibility_matrix.current.xml \
115 framework_compatibility_matrix.empty.xml
116
117GEN := $(local-generated-sources-dir)/compatibility_matrix.xml
118
119$(GEN): PRIVATE_FLAGS :=
120
121ifdef BUILT_VENDOR_MANIFEST
122$(GEN): $(BUILT_VENDOR_MANIFEST)
123$(GEN): PRIVATE_FLAGS += -c "$(BUILT_VENDOR_MANIFEST)"
124endif
125
126MATRIX_SRC_FILES := $(call module-installed-files,$(LOCAL_REQUIRED_MODULES))
127$(GEN): PRIVATE_MATRIX_SRC_FILES := $(MATRIX_SRC_FILES)
128$(GEN): $(MATRIX_SRC_FILES) $(HOST_OUT_EXECUTABLES)/assemble_vintf
129 PRODUCT_ENFORCE_VINTF_MANIFEST=$(PRODUCT_ENFORCE_VINTF_MANIFEST) \
130 $(HOST_OUT_EXECUTABLES)/assemble_vintf \
131 -i $(call normalize-path-list,$(PRIVATE_MATRIX_SRC_FILES)) \
132 -o $@ $(PRIVATE_FLAGS)
133
134MATRIX_SRC_FILES :=
135
136LOCAL_PREBUILT_MODULE_FILE := $(GEN)
137include $(BUILD_PREBUILT)
138BUILT_SYSTEM_COMPATIBILITY_MATRIX := $(LOCAL_BUILT_MODULE)