Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7066d336 authored by Yifan Hong's avatar Yifan Hong Committed by Gerrit Code Review
Browse files

Merge "compatibility_matrices: add vintf_compatibility_matrix.core_hals." into main

parents 332dd07d 9fb9ff77
Loading
Loading
Loading
Loading
+31 −3
Original line number Diff line number Diff line
@@ -35,10 +35,10 @@ var (
	pctx = android.NewPackageContext("android/vintf")

	assembleVintfRule = pctx.AndroidStaticRule("assemble_vintf", blueprint.RuleParams{
		Command:     `${assembleVintfCmd} -i ${inputs} -o ${out}`,
		Command:     `${assembleVintfCmd} -i ${inputs} -o ${out} ${extraParams}`,
		CommandDeps: []string{"${assembleVintfCmd}"},
		Description: "assemble_vintf -i ${inputs}",
	}, "inputs")
	}, "inputs", "extraParams")

	xmllintXsd = pctx.AndroidStaticRule("xmllint-xsd", blueprint.RuleParams{
		Command:     `$XmlLintCmd --quiet --schema $xsd $in > /dev/null && touch -a $out`,
@@ -64,6 +64,13 @@ type vintfCompatibilityMatrixProperties struct {

	// list of kernel_config modules to be combined to final output
	Kernel_configs []string

	// Default is "default" for compatibility matrices on /vendor
	// and /odm, and "disallow" for compatibility matrices on /system,
	// /product, and /system_ext.
	// If value is "only", only android.* HALs are allowed. If value
	// is "disallow", none of android.* HALs are allowed.
	Core_hals *string
}

type vintfCompatibilityMatrixRule struct {
@@ -167,6 +174,7 @@ func (g *vintfCompatibilityMatrixRule) GenerateAndroidBuildActions(ctx android.M
		Output:      g.genFile,
		Args: map[string]string{
			"inputs":      strings.Join(inputPaths.Strings(), ":"),
			"extraParams": strings.Join(g.getExtraParams(), " "),
		},
	})
	g.generateValidateBuildAction(ctx, g.genFile, schema.Path())
@@ -191,3 +199,23 @@ func (g *vintfCompatibilityMatrixRule) AndroidMk() android.AndroidMkData {
		},
	}
}

// Return extra parameters to assemble_vintf.
func (g *vintfCompatibilityMatrixRule) getExtraParams() []string {
	var extraParams []string

	coreHalsStrategy := proptools.StringDefault(
		g.properties.Core_hals,
		g.defaultCoreHalsStrategy(),
	)
	extraParams = append(extraParams, "--core-hals", proptools.ShellEscape(coreHalsStrategy))
	return extraParams
}

func (g *vintfCompatibilityMatrixRule) defaultCoreHalsStrategy() string {
	// TODO(b/290408770): default to "disallow" for FCMs

	// For Device (vendor, odm) compatibility matrix, default is
	// to not check anything.
	return "default"
}