blob: 49ece22bf6963bc32390a2875452d937a0290b82 [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
Yifan Hong44c9b2e2018-01-23 14:34:41 -080019BUILD_FRAMEWORK_COMPATIBILITY_MATRIX := $(LOCAL_PATH)/compatibility_matrix.mk
20
21# Clear potential input variables to BUILD_FRAMEWORK_COMPATIBILITY_MATRIX
22LOCAL_ADD_VBMETA_VERSION :=
23LOCAL_ASSEMBLE_VINTF_ENV_VARS :=
Yifan Hong3693fe42018-03-29 10:06:10 -070024LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE :=
25LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE :=
Yifan Hong44c9b2e2018-01-23 14:34:41 -080026LOCAL_ASSEMBLE_VINTF_FLAGS :=
27LOCAL_KERNEL_VERSIONS :=
28LOCAL_GEN_FILE_DEPENDENCIES :=
29
Yifan Hong2d8442c2017-12-13 15:01:19 -080030# Install all compatibility_matrix.*.xml to /system/etc/vintf
31
Yifan Hong44c9b2e2018-01-23 14:34:41 -080032
Yifan Hong2d8442c2017-12-13 15:01:19 -080033include $(CLEAR_VARS)
Yifan Hong7831d432018-03-29 10:51:48 -070034LOCAL_MODULE := framework_compatibility_matrix.legacy.xml
Yifan Hong2d8442c2017-12-13 15:01:19 -080035LOCAL_MODULE_STEM := compatibility_matrix.legacy.xml
36LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
Yifan Hongd8a4d342018-04-12 14:50:09 -070037LOCAL_KERNEL_VERSIONS := \
38 3.18.0 \
39 4.4.0 \
40 4.9.0 \
41 4.14.0 \
42
Yifan Hong44c9b2e2018-01-23 14:34:41 -080043include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
Yifan Hong2d8442c2017-12-13 15:01:19 -080044
45include $(CLEAR_VARS)
Yifan Hong7831d432018-03-29 10:51:48 -070046LOCAL_MODULE := framework_compatibility_matrix.1.xml
Yifan Hong2d8442c2017-12-13 15:01:19 -080047LOCAL_MODULE_STEM := compatibility_matrix.1.xml
48LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
Yifan Hongd8a4d342018-04-12 14:50:09 -070049LOCAL_KERNEL_VERSIONS := \
50 3.18.0 \
51 4.4.0 \
52 4.9.0 \
53 4.14.0 \
54
Yifan Hong44c9b2e2018-01-23 14:34:41 -080055include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
Yifan Hong2d8442c2017-12-13 15:01:19 -080056
57include $(CLEAR_VARS)
Yifan Hong7831d432018-03-29 10:51:48 -070058LOCAL_MODULE := framework_compatibility_matrix.2.xml
Yifan Hong2d8442c2017-12-13 15:01:19 -080059LOCAL_MODULE_STEM := compatibility_matrix.2.xml
60LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
Yifan Hongd8a4d342018-04-12 14:50:09 -070061LOCAL_KERNEL_VERSIONS := \
62 3.18.0 \
63 4.4.0 \
64 4.9.0 \
65 4.14.0 \
Yifan Hong44c9b2e2018-01-23 14:34:41 -080066
Yifan Hongd8a4d342018-04-12 14:50:09 -070067include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
Yifan Hong2d8442c2017-12-13 15:01:19 -080068
69include $(CLEAR_VARS)
Yifan Hong7831d432018-03-29 10:51:48 -070070LOCAL_MODULE := framework_compatibility_matrix.current.xml
Yifan Hong2d8442c2017-12-13 15:01:19 -080071LOCAL_MODULE_STEM := compatibility_matrix.current.xml
72LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM)
Yifan Hongd8a4d342018-04-12 14:50:09 -070073LOCAL_KERNEL_VERSIONS := \
74 4.4.0 \
75 4.9.0 \
76 4.14.0 \
77
Yifan Hong44c9b2e2018-01-23 14:34:41 -080078include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
Yifan Hong2d8442c2017-12-13 15:01:19 -080079
Yifan Hong44c9b2e2018-01-23 14:34:41 -080080# Framework Compatibility Matrix (common to all FCM versions)
81
Yifan Hong2d8442c2017-12-13 15:01:19 -080082include $(CLEAR_VARS)
Yifan Hongfee9ea42018-03-23 12:03:33 -070083LOCAL_MODULE := framework_compatibility_matrix.device.xml
Yifan Hong7831d432018-03-29 10:51:48 -070084LOCAL_MODULE_STEM := compatibility_matrix.device.xml
85# define LOCAL_MODULE_CLASS for local-generated-sources-dir.
Yifan Hongfee9ea42018-03-23 12:03:33 -070086LOCAL_MODULE_CLASS := ETC
87
88ifndef DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
89LOCAL_SRC_FILES := compatibility_matrix.empty.xml
90else
91
92# DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE specify an absolute path
93LOCAL_GENERATED_SOURCES := $(DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE)
94
95# Enforce that DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE does not specify required HALs
96# by checking it against an empty manifest. But the empty manifest needs to contain
97# BOARD_SEPOLICY_VERS to be compatible with DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE.
98my_manifest_src_file := $(LOCAL_PATH)/manifest.empty.xml
99my_gen_check_manifest := $(local-generated-sources-dir)/manifest.check.xml
100$(my_gen_check_manifest): PRIVATE_SRC_FILE := $(my_manifest_src_file)
101$(my_gen_check_manifest): $(my_manifest_src_file) $(HOST_OUT_EXECUTABLES)/assemble_vintf
102 BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \
Yifan Honge0cad7a2018-03-29 10:57:12 -0700103 VINTF_IGNORE_TARGET_FCM_VERSION=true \
Yifan Hongfee9ea42018-03-23 12:03:33 -0700104 $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $(PRIVATE_SRC_FILE) -o $@
105
106LOCAL_GEN_FILE_DEPENDENCIES += $(my_gen_check_manifest)
107LOCAL_ASSEMBLE_VINTF_FLAGS += -c "$(my_gen_check_manifest)"
108
109my_gen_check_manifest :=
110my_manifest_src_file :=
111
112endif # DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
113
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800114LOCAL_ADD_VBMETA_VERSION := true
115LOCAL_ASSEMBLE_VINTF_ENV_VARS := \
Yifan Hongb426af32018-02-02 12:47:48 -0800116 POLICYVERS \
117 PLATFORM_SEPOLICY_VERSION \
118 PLATFORM_SEPOLICY_COMPAT_VERSIONS
Yifan Hong2d8442c2017-12-13 15:01:19 -0800119
Yifan Hong3693fe42018-03-29 10:06:10 -0700120LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE := PRODUCT_ENFORCE_VINTF_MANIFEST=true
121LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE := \
Yifan Hongfee9ea42018-03-23 12:03:33 -0700122 "Error: DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX cannot contain required HALs."
123
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800124include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
Yifan Hong2d8442c2017-12-13 15:01:19 -0800125
126# Framework Compatibility Matrix
Yifan Hong2d8442c2017-12-13 15:01:19 -0800127
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800128include $(CLEAR_VARS)
129LOCAL_MODULE := framework_compatibility_matrix.xml
130LOCAL_MODULE_STEM := compatibility_matrix.xml
131LOCAL_MODULE_PATH := $(TARGET_OUT)
Yifan Hong2d8442c2017-12-13 15:01:19 -0800132LOCAL_REQUIRED_MODULES := \
133 framework_compatibility_matrix.legacy.xml \
134 framework_compatibility_matrix.1.xml \
135 framework_compatibility_matrix.2.xml \
136 framework_compatibility_matrix.current.xml \
Yifan Hongfee9ea42018-03-23 12:03:33 -0700137 framework_compatibility_matrix.device.xml
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800138LOCAL_GENERATED_SOURCES := $(call module-installed-files,$(LOCAL_REQUIRED_MODULES))
Yifan Hong2d8442c2017-12-13 15:01:19 -0800139
140ifdef BUILT_VENDOR_MANIFEST
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800141LOCAL_GEN_FILE_DEPENDENCIES += $(BUILT_VENDOR_MANIFEST)
142LOCAL_ASSEMBLE_VINTF_FLAGS += -c "$(BUILT_VENDOR_MANIFEST)"
Yifan Hong2d8442c2017-12-13 15:01:19 -0800143endif
144
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800145LOCAL_ASSEMBLE_VINTF_ENV_VARS := PRODUCT_ENFORCE_VINTF_MANIFEST
Yifan Hong2d8442c2017-12-13 15:01:19 -0800146
Yifan Hong7d61a8d2018-03-28 10:27:10 -0700147# TODO(b/65028233): Enforce no "unused HALs" for devices that does not define
148# DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE as well
149ifeq (true,$(strip $(PRODUCT_ENFORCE_VINTF_MANIFEST)))
150ifdef DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
151LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE := VINTF_ENFORCE_NO_UNUSED_HALS=true
152endif
153endif
154
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800155include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
Yifan Hong2d8442c2017-12-13 15:01:19 -0800156BUILT_SYSTEM_COMPATIBILITY_MATRIX := $(LOCAL_BUILT_MODULE)
Yifan Hong44c9b2e2018-01-23 14:34:41 -0800157
158BUILD_FRAMEWORK_COMPATIBILITY_MATRIX :=