mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-01-27 14:23:34 +00:00
Revert "Revert "Convert hardware/interfaces/compatibility_matric..."
Revert submission 3235656-revert-3195743-compatibility_matrix-KLJOLWYIMW Reason for revert: The root cause of the break is already be merged. Related changes: ag/29139095, ag/29139608 Reverted changes: /q/submissionid:3235656-revert-3195743-compatibility_matrix-KLJOLWYIMW Change-Id: I6ef91cbf72f63013778056183e0997d5ece06854
This commit is contained in:
committed by
Gerrit Code Review
parent
08e6d32599
commit
b7995ac8bc
@@ -5,6 +5,7 @@ ignore_merged_commits = true
|
||||
bpfmt = true
|
||||
clang_format = true
|
||||
aidl_format = true
|
||||
gofmt = true
|
||||
|
||||
[Hook Scripts]
|
||||
aosp_hook_confirmationui = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} confirmationui
|
||||
|
||||
@@ -93,6 +93,14 @@ vintf_compatibility_matrix {
|
||||
|
||||
}
|
||||
|
||||
// Device framework compatibility matrix (common to all FCM versions)
|
||||
// Reference: https://source.android.com/docs/core/architecture/vintf/comp-matrices
|
||||
vintf_compatibility_matrix {
|
||||
name: "framework_compatibility_matrix.device.xml",
|
||||
stem: "compatibility_matrix.device.xml",
|
||||
type: "device_fcm",
|
||||
}
|
||||
|
||||
// Phony target that installs all system compatibility matrix files
|
||||
SYSTEM_MATRIX_DEPS = [
|
||||
"framework_compatibility_matrix.5.xml",
|
||||
@@ -114,3 +122,26 @@ phony {
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// Product Compatibility Matrix
|
||||
vintf_compatibility_matrix {
|
||||
name: "product_compatibility_matrix.xml",
|
||||
stem: "compatibility_matrix.xml",
|
||||
product_specific: true,
|
||||
type: "product_fcm",
|
||||
}
|
||||
|
||||
// Phony target that installs all framework compatibility matrix files (system + product)
|
||||
FRAMEWORK_MATRIX_DEPS = SYSTEM_MATRIX_DEPS + ["product_compatibility_matrix.xml"]
|
||||
|
||||
phony {
|
||||
name: "framework_compatibility_matrix.xml",
|
||||
required: FRAMEWORK_MATRIX_DEPS,
|
||||
product_variables: {
|
||||
release_aidl_use_unfrozen: {
|
||||
required: [
|
||||
"framework_compatibility_matrix.202504.xml",
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
BUILD_FRAMEWORK_COMPATIBILITY_MATRIX := $(LOCAL_PATH)/compatibility_matrix.mk
|
||||
my_empty_manifest := $(LOCAL_PATH)/manifest.empty.xml
|
||||
|
||||
# System Compatibility Matrix (common to all FCM versions)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
include $(LOCAL_PATH)/clear_vars.mk
|
||||
LOCAL_MODULE := framework_compatibility_matrix.device.xml
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
|
||||
LOCAL_MODULE_STEM := compatibility_matrix.device.xml
|
||||
# define LOCAL_MODULE_CLASS for local-generated-sources-dir.
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_MODULE_RELATIVE_PATH := vintf
|
||||
|
||||
ifndef DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
|
||||
LOCAL_SRC_FILES := compatibility_matrix.empty.xml
|
||||
else
|
||||
|
||||
# DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE specifies absolute paths
|
||||
LOCAL_GENERATED_SOURCES := $(DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE)
|
||||
|
||||
# Enforce that DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE does not specify required HALs
|
||||
# by checking it against an empty manifest. But the empty manifest needs to contain
|
||||
# BOARD_SEPOLICY_VERS to be compatible with DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE.
|
||||
my_gen_check_manifest := $(local-generated-sources-dir)/manifest.check.xml
|
||||
$(my_gen_check_manifest): PRIVATE_SRC_FILE := $(my_empty_manifest)
|
||||
$(my_gen_check_manifest): $(my_empty_manifest) $(HOST_OUT_EXECUTABLES)/assemble_vintf
|
||||
BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \
|
||||
VINTF_IGNORE_TARGET_FCM_VERSION=true \
|
||||
$(HOST_OUT_EXECUTABLES)/assemble_vintf -i $(PRIVATE_SRC_FILE) -o $@
|
||||
|
||||
LOCAL_GEN_FILE_DEPENDENCIES += $(my_gen_check_manifest)
|
||||
LOCAL_ASSEMBLE_VINTF_FLAGS += -c "$(my_gen_check_manifest)"
|
||||
|
||||
my_gen_check_manifest :=
|
||||
|
||||
endif # DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
|
||||
|
||||
# TODO(b/296875906): use POLICYVERS from Soong
|
||||
POLICYVERS ?= 30
|
||||
|
||||
LOCAL_ADD_VBMETA_VERSION := true
|
||||
LOCAL_ASSEMBLE_VINTF_ENV_VARS := \
|
||||
POLICYVERS \
|
||||
PLATFORM_SEPOLICY_VERSION \
|
||||
PLATFORM_SEPOLICY_COMPAT_VERSIONS
|
||||
|
||||
include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
|
||||
|
||||
# Product Compatibility Matrix
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
include $(LOCAL_PATH)/clear_vars.mk
|
||||
LOCAL_MODULE := product_compatibility_matrix.xml
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
|
||||
|
||||
ifndef DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE
|
||||
my_framework_matrix_deps :=
|
||||
include $(BUILD_PHONY_PACKAGE)
|
||||
else # DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE
|
||||
|
||||
LOCAL_MODULE_STEM := compatibility_matrix.xml
|
||||
LOCAL_PRODUCT_MODULE := true
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_MODULE_RELATIVE_PATH := vintf
|
||||
|
||||
# DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE specifies absolute paths
|
||||
LOCAL_GENERATED_SOURCES := $(DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE)
|
||||
|
||||
# Enforce that DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE does not specify required HALs
|
||||
# by checking it against an empty manifest.
|
||||
LOCAL_GEN_FILE_DEPENDENCIES += $(my_empty_manifest)
|
||||
LOCAL_ASSEMBLE_VINTF_FLAGS += -c "$(my_empty_manifest)"
|
||||
|
||||
my_framework_matrix_deps := $(LOCAL_MODULE)
|
||||
|
||||
include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX)
|
||||
|
||||
endif # DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE
|
||||
|
||||
my_system_matrix_deps := \
|
||||
framework_compatibility_matrix.5.xml \
|
||||
framework_compatibility_matrix.6.xml \
|
||||
framework_compatibility_matrix.7.xml \
|
||||
framework_compatibility_matrix.8.xml \
|
||||
framework_compatibility_matrix.202404.xml \
|
||||
framework_compatibility_matrix.device.xml \
|
||||
|
||||
# Only allow the use of the unreleased compatibility matrix when we can use unfrozen
|
||||
# interfaces (in the `next` release configuration).
|
||||
ifeq ($(RELEASE_AIDL_USE_UNFROZEN),true)
|
||||
my_system_matrix_deps += \
|
||||
framework_compatibility_matrix.202504.xml \
|
||||
|
||||
endif
|
||||
|
||||
my_framework_matrix_deps += \
|
||||
$(my_system_matrix_deps)
|
||||
|
||||
# Phony target that installs all framework compatibility matrix files (system + product)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := framework_compatibility_matrix.xml
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
|
||||
LOCAL_REQUIRED_MODULES := $(my_framework_matrix_deps)
|
||||
include $(BUILD_PHONY_PACKAGE)
|
||||
|
||||
my_system_matrix_deps :=
|
||||
my_framework_matrix_deps :=
|
||||
my_empty_manifest :=
|
||||
BUILD_FRAMEWORK_COMPATIBILITY_MATRIX :=
|
||||
@@ -30,6 +30,7 @@ bootstrap_go_package {
|
||||
"kernel-config-soong-rules",
|
||||
"soong",
|
||||
"soong-android",
|
||||
"soong-selinux",
|
||||
],
|
||||
srcs: [
|
||||
"vintf_compatibility_matrix.go",
|
||||
|
||||
@@ -24,6 +24,7 @@ import (
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/kernel/configs"
|
||||
"android/soong/selinux"
|
||||
)
|
||||
|
||||
type dependencyTag struct {
|
||||
@@ -35,10 +36,10 @@ var (
|
||||
pctx = android.NewPackageContext("android/vintf")
|
||||
|
||||
assembleVintfRule = pctx.AndroidStaticRule("assemble_vintf", blueprint.RuleParams{
|
||||
Command: `${assembleVintfCmd} -i ${inputs} -o ${out}`,
|
||||
CommandDeps: []string{"${assembleVintfCmd}"},
|
||||
Command: `${assembleVintfEnv} ${assembleVintfCmd} -i ${inputs} -o ${out} ${extraArgs}`,
|
||||
CommandDeps: []string{"${assembleVintfCmd}", "${AvbToolCmd}"},
|
||||
Description: "assemble_vintf -i ${inputs}",
|
||||
}, "inputs")
|
||||
}, "inputs", "extraArgs", "assembleVintfEnv")
|
||||
|
||||
xmllintXsd = pctx.AndroidStaticRule("xmllint-xsd", blueprint.RuleParams{
|
||||
Command: `$XmlLintCmd --quiet --schema $xsd $in > /dev/null && touch -a $out`,
|
||||
@@ -52,7 +53,11 @@ var (
|
||||
)
|
||||
|
||||
const (
|
||||
relpath = "vintf"
|
||||
relpath = "vintf"
|
||||
emptyManifest = "hardware/interfaces/compatibility_matrices/manifest.empty.xml"
|
||||
compatibilityEmptyMatrix = "hardware/interfaces/compatibility_matrices/compatibility_matrix.empty.xml"
|
||||
deviceFcmType = "device_fcm"
|
||||
productFcmType = "product_fcm"
|
||||
)
|
||||
|
||||
type vintfCompatibilityMatrixProperties struct {
|
||||
@@ -64,6 +69,9 @@ type vintfCompatibilityMatrixProperties struct {
|
||||
|
||||
// list of kernel_config modules to be combined to final output
|
||||
Kernel_configs []string
|
||||
|
||||
// Type of the FCM type, the allowed type are device_fcm and product_fcm and it should only be used under hardware/interfaces/compatibility_matrices
|
||||
Type *string
|
||||
}
|
||||
|
||||
type vintfCompatibilityMatrixRule struct {
|
||||
@@ -72,11 +80,13 @@ type vintfCompatibilityMatrixRule struct {
|
||||
|
||||
genFile android.WritablePath
|
||||
additionalDependencies android.WritablePaths
|
||||
phonyOnly bool
|
||||
}
|
||||
|
||||
func init() {
|
||||
pctx.HostBinToolVariable("assembleVintfCmd", "assemble_vintf")
|
||||
pctx.HostBinToolVariable("XmlLintCmd", "xmllint")
|
||||
pctx.HostBinToolVariable("AvbToolCmd", "avbtool")
|
||||
android.RegisterModuleType("vintf_compatibility_matrix", vintfCompatibilityMatrixFactory)
|
||||
}
|
||||
|
||||
@@ -131,6 +141,20 @@ func (g *vintfCompatibilityMatrixRule) getSchema(ctx android.ModuleContext) andr
|
||||
}
|
||||
|
||||
func (g *vintfCompatibilityMatrixRule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
// Types attribute only allow `device_fcm` or `product_fcm` if set and only restricted it being used under
|
||||
// `hardware/interfaces/compatibility_matrices` to prevent accidental external usages.
|
||||
matrixType := proptools.String(g.properties.Type)
|
||||
if matrixType != "" {
|
||||
if matrixType != deviceFcmType && matrixType != productFcmType {
|
||||
panic(fmt.Errorf("The attribute 'type' value must be either 'device_fcm' or 'product_fcm' if set!"))
|
||||
}
|
||||
if !strings.HasPrefix(android.PathForModuleSrc(ctx).String(), "hardware/interfaces/compatibility_matrices") {
|
||||
panic(fmt.Errorf("Attribute type can only be set for module under `hardware/interfaces/compatibility_matrices`!"))
|
||||
}
|
||||
if (len(g.properties.Srcs) + len(g.properties.Kernel_configs)) > 0 {
|
||||
panic(fmt.Errorf("Attribute 'type' and 'srcs' or 'kernel_configs' should not set simultaneously! To update inputs for this rule, edit vintf_compatibility_matrix.go directly."))
|
||||
}
|
||||
}
|
||||
|
||||
outputFilename := proptools.String(g.properties.Stem)
|
||||
if outputFilename == "" {
|
||||
@@ -158,15 +182,72 @@ func (g *vintfCompatibilityMatrixRule) GenerateAndroidBuildActions(ctx android.M
|
||||
}
|
||||
})
|
||||
|
||||
// For product_compatibility_matrix.xml the source is from the product configuration
|
||||
// DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE.
|
||||
extraArgs := []string{}
|
||||
if matrixType == productFcmType {
|
||||
productMatrixs := android.PathsForSource(ctx, ctx.Config().DeviceProductCompatibilityMatrixFile())
|
||||
if len(productMatrixs) > 0 {
|
||||
inputPaths = append(inputPaths, productMatrixs...)
|
||||
extraArgs = append(extraArgs, "-c", android.PathForSource(ctx, emptyManifest).String())
|
||||
} else {
|
||||
// For product_fcm, if DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE not set, treat it as a phony target without any output generated.
|
||||
g.phonyOnly = true
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// For framework_compatibility_matrix.device.xml the source may come from the product configuration
|
||||
// DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE or use compatibilityEmptyMatrix if not set. We can't
|
||||
// use a phony target because we still need to install framework_compatibility_matrix.device.xml to
|
||||
// include sepolicy versions.
|
||||
frameworkRuleImplicits := []android.Path{}
|
||||
|
||||
if matrixType == deviceFcmType {
|
||||
frameworkMatrixs := android.PathsForSource(ctx, ctx.Config().DeviceFrameworkCompatibilityMatrixFile())
|
||||
if len(frameworkMatrixs) > 0 {
|
||||
inputPaths = append(inputPaths, frameworkMatrixs...)
|
||||
|
||||
// Generate BuildAction for generating the check manifest.
|
||||
emptyManifestPath := android.PathForSource(ctx, emptyManifest)
|
||||
genCheckManifest := android.PathForModuleGen(ctx, "manifest.check.xml")
|
||||
checkManifestInputs := []android.Path{emptyManifestPath}
|
||||
genCheckManifestEnvs := []string{
|
||||
"BOARD_SEPOLICY_VERS=" + ctx.DeviceConfig().BoardSepolicyVers(),
|
||||
"VINTF_IGNORE_TARGET_FCM_VERSION=true",
|
||||
}
|
||||
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: assembleVintfRule,
|
||||
Description: "Framework Check Manifest",
|
||||
Implicits: checkManifestInputs,
|
||||
Output: genCheckManifest,
|
||||
Args: map[string]string{
|
||||
"inputs": android.PathForSource(ctx, emptyManifest).String(),
|
||||
"extraArgs": "",
|
||||
"assembleVintfEnv": strings.Join(genCheckManifestEnvs, " "),
|
||||
},
|
||||
})
|
||||
|
||||
frameworkRuleImplicits = append(frameworkRuleImplicits, genCheckManifest)
|
||||
extraArgs = append(extraArgs, "-c", genCheckManifest.String())
|
||||
} else {
|
||||
inputPaths = append(inputPaths, android.PathForSource(ctx, compatibilityEmptyMatrix))
|
||||
}
|
||||
}
|
||||
|
||||
g.genFile = android.PathForModuleGen(ctx, outputFilename)
|
||||
frameworkRuleImplicits = append(frameworkRuleImplicits, inputPaths...)
|
||||
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: assembleVintfRule,
|
||||
Description: "Framework Compatibility Matrix",
|
||||
Implicits: inputPaths,
|
||||
Implicits: frameworkRuleImplicits,
|
||||
Output: g.genFile,
|
||||
Args: map[string]string{
|
||||
"inputs": strings.Join(inputPaths.Strings(), ":"),
|
||||
"inputs": strings.Join(inputPaths.Strings(), ":"),
|
||||
"extraArgs": strings.Join(extraArgs, " "),
|
||||
"assembleVintfEnv": g.getAssembleVintfEnv(ctx),
|
||||
},
|
||||
})
|
||||
g.generateValidateBuildAction(ctx, g.genFile, schema.Path())
|
||||
@@ -174,7 +255,39 @@ func (g *vintfCompatibilityMatrixRule) GenerateAndroidBuildActions(ctx android.M
|
||||
ctx.InstallFile(android.PathForModuleInstall(ctx, "etc", relpath), outputFilename, g.genFile)
|
||||
}
|
||||
|
||||
func (g *vintfCompatibilityMatrixRule) getAssembleVintfEnv(ctx android.ModuleContext) string {
|
||||
if proptools.String(g.properties.Type) == deviceFcmType {
|
||||
assembleVintfEnvs := []string{
|
||||
// POLICYVERS defined in system/sepolicy/build/soong/policy.go
|
||||
fmt.Sprintf("POLICYVERS=%d", selinux.PolicyVers),
|
||||
fmt.Sprintf("PLATFORM_SEPOLICY_VERSION=%s", ctx.DeviceConfig().PlatformSepolicyVersion()),
|
||||
fmt.Sprintf("PLATFORM_SEPOLICY_COMPAT_VERSIONS=\"%s\"", strings.Join(ctx.DeviceConfig().PlatformSepolicyCompatVersions(), " ")),
|
||||
}
|
||||
|
||||
if ctx.Config().BoardAvbEnable() {
|
||||
assembleVintfEnvs = append(assembleVintfEnvs, fmt.Sprintf("FRAMEWORK_VBMETA_VERSION=\"$$(${AvbToolCmd} add_hashtree_footer --print_required_libavb_version %s)\"", strings.Join(ctx.Config().BoardAvbSystemAddHashtreeFooterArgs(), " ")))
|
||||
} else {
|
||||
assembleVintfEnvs = append(assembleVintfEnvs, "FRAMEWORK_VBMETA_VERSION=\"0.0\"")
|
||||
}
|
||||
|
||||
return strings.Join(assembleVintfEnvs, " ")
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (g *vintfCompatibilityMatrixRule) AndroidMk() android.AndroidMkData {
|
||||
if g.phonyOnly {
|
||||
return android.AndroidMkData{
|
||||
Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) {
|
||||
fmt.Fprintln(w, "\ninclude $(CLEAR_VARS)", " # vintf.vintf_compatibility_matrix")
|
||||
fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir)
|
||||
fmt.Fprintln(w, "LOCAL_MODULE :=", name)
|
||||
fmt.Fprintln(w, "include $(BUILD_PHONY_PACKAGE)")
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return android.AndroidMkData{
|
||||
Class: "ETC",
|
||||
OutputFile: android.OptionalPathForPath(g.genFile),
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
##### Input Variables:
|
||||
# LOCAL_MODULE: required. Module name for the build system.
|
||||
# LOCAL_MODULE_CLASS: optional. Default is ETC.
|
||||
# LOCAL_MODULE_PATH / LOCAL_MODULE_RELATIVE_PATH: required. (Relative) path of output file.
|
||||
# If not defined, LOCAL_MODULE_RELATIVE_PATH will be "vintf".
|
||||
# LOCAL_MODULE_STEM: optional. Name of output file. Default is $(LOCAL_MODULE).
|
||||
# LOCAL_SRC_FILES: required. Local source files provided to assemble_vintf
|
||||
# (command line argument -i).
|
||||
# LOCAL_GENERATED_SOURCES: optional. Global source files provided to assemble_vintf
|
||||
# (command line argument -i).
|
||||
#
|
||||
# LOCAL_ADD_VBMETA_VERSION: Use AVBTOOL to add avb version to the output matrix
|
||||
# (corresponds to <avb><vbmeta-version> tag)
|
||||
# LOCAL_ASSEMBLE_VINTF_ENV_VARS: Add a list of environment variable names from global variables in
|
||||
# the build system that is lazily evaluated (e.g. PRODUCT_ENFORCE_VINTF_MANIFEST).
|
||||
# LOCAL_ASSEMBLE_VINTF_FLAGS: Add additional command line arguments to assemble_vintf invocation.
|
||||
# LOCAL_GEN_FILE_DEPENDENCIES: A list of additional dependencies for the generated file.
|
||||
|
||||
ifndef LOCAL_MODULE
|
||||
$(error LOCAL_MODULE must be defined.)
|
||||
endif
|
||||
|
||||
ifndef LOCAL_MODULE_STEM
|
||||
LOCAL_MODULE_STEM := $(LOCAL_MODULE)
|
||||
endif
|
||||
|
||||
ifndef LOCAL_MODULE_CLASS
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
endif
|
||||
|
||||
ifndef LOCAL_MODULE_PATH
|
||||
ifndef LOCAL_MODULE_RELATIVE_PATH
|
||||
$(error Either LOCAL_MODULE_PATH or LOCAL_MODULE_RELATIVE_PATH must be defined.)
|
||||
endif
|
||||
endif
|
||||
|
||||
GEN := $(local-generated-sources-dir)/$(LOCAL_MODULE_STEM)
|
||||
|
||||
$(GEN): PRIVATE_ENV_VARS := $(LOCAL_ASSEMBLE_VINTF_ENV_VARS)
|
||||
$(GEN): PRIVATE_FLAGS := $(LOCAL_ASSEMBLE_VINTF_FLAGS)
|
||||
|
||||
$(GEN): $(LOCAL_GEN_FILE_DEPENDENCIES)
|
||||
|
||||
ifeq (true,$(strip $(LOCAL_ADD_VBMETA_VERSION)))
|
||||
ifeq (true,$(BOARD_AVB_ENABLE))
|
||||
$(GEN): $(AVBTOOL)
|
||||
$(GEN): $(BOARD_AVB_SYSTEM_KEY_PATH)
|
||||
# Use deferred assignment (=) instead of immediate assignment (:=).
|
||||
# Otherwise, cannot get INTERNAL_AVB_SYSTEM_SIGNING_ARGS.
|
||||
$(GEN): FRAMEWORK_VBMETA_VERSION = $$("$(AVBTOOL)" add_hashtree_footer \
|
||||
--print_required_libavb_version \
|
||||
$(BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS))
|
||||
else
|
||||
$(GEN): FRAMEWORK_VBMETA_VERSION := 0.0
|
||||
endif # BOARD_AVB_ENABLE
|
||||
$(GEN): PRIVATE_ENV_VARS += FRAMEWORK_VBMETA_VERSION
|
||||
endif # LOCAL_ADD_VBMETA_VERSION
|
||||
|
||||
my_matrix_src_files := \
|
||||
$(addprefix $(LOCAL_PATH)/,$(LOCAL_SRC_FILES)) \
|
||||
$(LOCAL_GENERATED_SOURCES)
|
||||
|
||||
$(GEN): PRIVATE_SRC_FILES := $(my_matrix_src_files)
|
||||
$(GEN): $(my_matrix_src_files) $(HOST_OUT_EXECUTABLES)/assemble_vintf
|
||||
$(foreach varname,$(PRIVATE_ENV_VARS),$(varname)="$($(varname))") \
|
||||
$(HOST_OUT_EXECUTABLES)/assemble_vintf \
|
||||
-i $(call normalize-path-list,$(PRIVATE_SRC_FILES)) \
|
||||
-o $@ \
|
||||
$(PRIVATE_FLAGS)
|
||||
|
||||
LOCAL_PREBUILT_MODULE_FILE := $(GEN)
|
||||
LOCAL_SRC_FILES :=
|
||||
LOCAL_GENERATED_SOURCES :=
|
||||
|
||||
include $(LOCAL_PATH)/clear_vars.mk
|
||||
my_matrix_src_files :=
|
||||
|
||||
include $(BUILD_PREBUILT)
|
||||
Reference in New Issue
Block a user