diff --git a/android/variable.go b/android/variable.go index 42728175f..13b5abf26 100644 --- a/android/variable.go +++ b/android/variable.go @@ -189,6 +189,7 @@ type productVariables struct { Override_rs_driver *string `json:",omitempty"` DeviceKernelHeaders []string `json:",omitempty"` + DistDir *string `json:",omitempty"` } func boolPtr(v bool) *bool { diff --git a/cc/builder.go b/cc/builder.go index a81dc8944..b5f4c5c0b 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -196,11 +196,19 @@ var ( _ = pctx.SourcePathVariable("sAbiDiffer", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/header-abi-diff") - // Abidiff check turned on in advice-only mode. Builds will not fail on abi incompatibilties / extensions. - sAbiDiff = pctx.AndroidStaticRule("sAbiDiff", - blueprint.RuleParams{ - Command: "$sAbiDiffer $allowFlags -lib $libName -arch $arch -check-all-apis -o ${out} -new $in -old $referenceDump", - CommandDeps: []string{"$sAbiDiffer"}, + sAbiDiff = pctx.AndroidRuleFunc("sAbiDiff", + func(config android.Config) (blueprint.RuleParams, error) { + + commandStr := "($sAbiDiffer $allowFlags -lib $libName -arch $arch -check-all-apis -o ${out} -new $in -old $referenceDump)" + distDir := config.ProductVariables.DistDir + if distDir != nil && *distDir != "" { + distAbiDiffDir := *distDir + "/abidiffs/" + commandStr += " || (mkdir -p " + distAbiDiffDir + " && cp ${out} " + distAbiDiffDir + " && exit 1)" + } + return blueprint.RuleParams{ + Command: commandStr, + CommandDeps: []string{"$sAbiDiffer"}, + }, nil }, "allowFlags", "referenceDump", "libName", "arch")