Merge "Improve messages for VNDK dependency errors."
am: c325edce18
Change-Id: I825ac5a438b13eb4c1edff75acfeafe317d2d72a
This commit is contained in:
35
cc/vndk.go
35
cc/vndk.go
@@ -15,6 +15,7 @@
|
|||||||
package cc
|
package cc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -151,38 +152,42 @@ func (vndk *vndkdep) vndkCheckLinkType(ctx android.ModuleContext, to *Module, ta
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check the dependencies of VNDK shared libraries.
|
// Check the dependencies of VNDK shared libraries.
|
||||||
if !vndkIsVndkDepAllowed(vndk, to.vndkdep) {
|
if err := vndkIsVndkDepAllowed(vndk, to.vndkdep); err != nil {
|
||||||
ctx.ModuleErrorf("(%s) should not link to %q (%s)",
|
ctx.ModuleErrorf("(%s) should not link to %q (%s): %v",
|
||||||
vndk.typeName(), to.Name(), to.vndkdep.typeName())
|
vndk.typeName(), to.Name(), to.vndkdep.typeName(), err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func vndkIsVndkDepAllowed(from *vndkdep, to *vndkdep) bool {
|
func vndkIsVndkDepAllowed(from *vndkdep, to *vndkdep) error {
|
||||||
// Check the dependencies of VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext and vendor modules.
|
// Check the dependencies of VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext and vendor modules.
|
||||||
if from.isVndkExt() {
|
if from.isVndkExt() {
|
||||||
if from.isVndkSp() {
|
if from.isVndkSp() {
|
||||||
// VNDK-SP-Ext may depend on VNDK-SP, VNDK-SP-Ext, or vendor libs (excluding
|
if to.isVndk() && !to.isVndkSp() {
|
||||||
// VNDK and VNDK-Ext).
|
return errors.New("VNDK-SP extensions must not depend on VNDK or VNDK extensions")
|
||||||
return to.isVndkSp() || !to.isVndk()
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
// VNDK-Ext may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs.
|
// VNDK-Ext may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs.
|
||||||
return true
|
return nil
|
||||||
}
|
}
|
||||||
if from.isVndk() {
|
if from.isVndk() {
|
||||||
if to.isVndkExt() {
|
if to.isVndkExt() {
|
||||||
// VNDK-core and VNDK-SP must not depend on VNDK extensions.
|
return errors.New("VNDK-core and VNDK-SP must not depend on VNDK extensions")
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
if from.isVndkSp() {
|
if from.isVndkSp() {
|
||||||
// VNDK-SP must only depend on VNDK-SP.
|
if !to.isVndkSp() {
|
||||||
return to.isVndkSp()
|
return errors.New("VNDK-SP must only depend on VNDK-SP")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
// VNDK-core may depend on VNDK-core or VNDK-SP.
|
if !to.isVndk() {
|
||||||
return to.isVndk()
|
return errors.New("VNDK-core must only depend on VNDK-core or VNDK-SP")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
// Vendor modules may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs.
|
// Vendor modules may depend on VNDK, VNDK-Ext, VNDK-SP, VNDK-SP-Ext, or vendor libs.
|
||||||
return true
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
Reference in New Issue
Block a user