Merge "Add tags to the list of lsdump paths"

This commit is contained in:
Hsin-Yi Chen 2019-08-15 02:20:30 +00:00 committed by Gerrit Code Review
commit eef3366ab3
4 changed files with 51 additions and 24 deletions

View file

@ -996,7 +996,7 @@ func pathForModule(ctx ModuleContext) OutputPath {
// PathForVndkRefAbiDump returns an OptionalPath representing the path of the // PathForVndkRefAbiDump returns an OptionalPath representing the path of the
// reference abi dump for the given module. This is not guaranteed to be valid. // reference abi dump for the given module. This is not guaranteed to be valid.
func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string, func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string,
isLlndkOrNdk, isVndk, isGzip bool) OptionalPath { isNdk, isLlndkOrVndk, isGzip bool) OptionalPath {
arches := ctx.DeviceConfig().Arches() arches := ctx.DeviceConfig().Arches()
if len(arches) == 0 { if len(arches) == 0 {
@ -1009,9 +1009,9 @@ func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string,
} }
var dirName string var dirName string
if isLlndkOrNdk { if isNdk {
dirName = "ndk" dirName = "ndk"
} else if isVndk { } else if isLlndkOrVndk {
dirName = "vndk" dirName = "vndk"
} else { } else {
dirName = "platform" // opt-in libs dirName = "platform" // opt-in libs

View file

@ -643,9 +643,6 @@ func TransformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Path
excludedSymbolVersions, excludedSymbolTags []string) android.OptionalPath { excludedSymbolVersions, excludedSymbolTags []string) android.OptionalPath {
outputFile := android.PathForModuleOut(ctx, baseName+".lsdump") outputFile := android.PathForModuleOut(ctx, baseName+".lsdump")
sabiLock.Lock()
lsdumpPaths = append(lsdumpPaths, outputFile.String())
sabiLock.Unlock()
implicits := android.Paths{soFile} implicits := android.Paths{soFile}
symbolFilterStr := "-so " + soFile.String() symbolFilterStr := "-so " + soFile.String()

View file

@ -432,25 +432,46 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags, d
return flags return flags
} }
// Returns a string that represents the class of the ABI dump.
// Returns an empty string if ABI check is disabled for this library.
func (library *libraryDecorator) classifySourceAbiDump(ctx ModuleContext) string {
enabled := library.Properties.Header_abi_checker.Enabled
if enabled != nil && !Bool(enabled) {
return ""
}
// Return NDK if the library is both NDK and LLNDK.
if ctx.isNdk() {
return "NDK"
}
if ctx.isLlndkPublic(ctx.Config()) {
return "LLNDK"
}
if ctx.useVndk() && ctx.isVndk() && !ctx.isVndkPrivate(ctx.Config()) {
if ctx.isVndkSp() {
if ctx.isVndkExt() {
return "VNDK-SP-ext"
} else {
return "VNDK-SP"
}
} else {
if ctx.isVndkExt() {
return "VNDK-ext"
} else {
return "VNDK-core"
}
}
}
if enabled != nil && Bool(enabled) {
return "PLATFORM"
}
return ""
}
func (library *libraryDecorator) shouldCreateSourceAbiDump(ctx ModuleContext) bool { func (library *libraryDecorator) shouldCreateSourceAbiDump(ctx ModuleContext) bool {
if !ctx.shouldCreateSourceAbiDump() { if !ctx.shouldCreateSourceAbiDump() {
return false return false
} }
if library.Properties.Header_abi_checker.Enabled != nil { return library.classifySourceAbiDump(ctx) != ""
return Bool(library.Properties.Header_abi_checker.Enabled)
}
if ctx.isNdk() {
return true
}
if ctx.isLlndkPublic(ctx.Config()) {
return true
}
if ctx.useVndk() && ctx.isVndk() && !ctx.isVndkPrivate(ctx.Config()) {
// Return true if this is VNDK-core, VNDK-SP, or VNDK-Ext, and not
// VNDK-private.
return true
}
return false
} }
func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects { func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects {
@ -820,10 +841,11 @@ func (library *libraryDecorator) coverageOutputFilePath() android.OptionalPath {
} }
func getRefAbiDumpFile(ctx ModuleContext, vndkVersion, fileName string) android.Path { func getRefAbiDumpFile(ctx ModuleContext, vndkVersion, fileName string) android.Path {
isLlndkOrNdk := inList(ctx.baseModuleName(), *llndkLibraries(ctx.Config())) || inList(ctx.baseModuleName(), ndkMigratedLibs) isNdk := ctx.isNdk()
isLlndkOrVndk := ctx.isLlndkPublic(ctx.Config()) || ctx.isVndk()
refAbiDumpTextFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isLlndkOrNdk, ctx.isVndk(), false) refAbiDumpTextFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isNdk, isLlndkOrVndk, false)
refAbiDumpGzipFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isLlndkOrNdk, ctx.isVndk(), true) refAbiDumpGzipFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isNdk, isLlndkOrVndk, true)
if refAbiDumpTextFile.Valid() { if refAbiDumpTextFile.Valid() {
if refAbiDumpGzipFile.Valid() { if refAbiDumpGzipFile.Valid() {
@ -861,6 +883,8 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objec
library.Properties.Header_abi_checker.Exclude_symbol_versions, library.Properties.Header_abi_checker.Exclude_symbol_versions,
library.Properties.Header_abi_checker.Exclude_symbol_tags) library.Properties.Header_abi_checker.Exclude_symbol_tags)
addLsdumpPath(library.classifySourceAbiDump(ctx) + ":" + library.sAbiOutputFile.String())
refAbiDumpFile := getRefAbiDumpFile(ctx, vndkVersion, fileName) refAbiDumpFile := getRefAbiDumpFile(ctx, vndkVersion, fileName)
if refAbiDumpFile != nil { if refAbiDumpFile != nil {
library.sAbiDiff = SourceAbiDiff(ctx, library.sAbiOutputFile.Path(), library.sAbiDiff = SourceAbiDiff(ctx, library.sAbiOutputFile.Path(),

View file

@ -94,3 +94,9 @@ func sabiDepsMutator(mctx android.TopDownMutatorContext) {
}) })
} }
} }
func addLsdumpPath(lsdumpPath string) {
sabiLock.Lock()
lsdumpPaths = append(lsdumpPaths, lsdumpPath)
sabiLock.Unlock()
}