Merge changes I420a5953,I8e2352f3,I7a6bb905
* changes:
Support text ABI dump file format
Remove vndkVsNdk()
Remove isSourceDump from PathForVndkRefAbiDump()
diff --git a/android/paths.go b/android/paths.go
index af2f956..31c5977 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -826,37 +826,40 @@
return PathForOutput(ctx, ".intermediates", ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir())
}
-// PathForVndkRefDump returns an OptionalPath representing the path of the reference
-// abi dump for the given module. This is not guaranteed to be valid.
-func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string, vndkOrNdk, isSourceDump bool) OptionalPath {
+// PathForVndkRefAbiDump returns an OptionalPath representing the path of the
+// reference abi dump for the given module. This is not guaranteed to be valid.
+func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string,
+ isLlndk, isGzip bool) OptionalPath {
+
arches := ctx.DeviceConfig().Arches()
+ if len(arches) == 0 {
+ panic("device build with no primary arch")
+ }
currentArch := ctx.Arch()
archNameAndVariant := currentArch.ArchType.String()
if currentArch.ArchVariant != "" {
archNameAndVariant += "_" + currentArch.ArchVariant
}
- var sourceOrBinaryDir string
- var vndkOrNdkDir string
- var ext string
- if isSourceDump {
- ext = ".lsdump.gz"
- sourceOrBinaryDir = "source-based"
+
+ var dirName string
+ if isLlndk {
+ dirName = "ndk"
} else {
- ext = ".bdump.gz"
- sourceOrBinaryDir = "binary-based"
+ dirName = "vndk"
}
- if vndkOrNdk {
- vndkOrNdkDir = "vndk"
- } else {
- vndkOrNdkDir = "ndk"
- }
- if len(arches) == 0 {
- panic("device build with no primary arch")
- }
+
binderBitness := ctx.DeviceConfig().BinderBitness()
- refDumpFileStr := "prebuilts/abi-dumps/" + vndkOrNdkDir + "/" + version + "/" + binderBitness + "/" +
- archNameAndVariant + "/" + sourceOrBinaryDir + "/" + fileName + ext
- return ExistentPathForSource(ctx, refDumpFileStr)
+
+ var ext string
+ if isGzip {
+ ext = ".lsdump.gz"
+ } else {
+ ext = ".lsdump"
+ }
+
+ return ExistentPathForSource(ctx, "prebuilts", "abi-dumps", dirName,
+ version, binderBitness, archNameAndVariant, "source-based",
+ fileName+ext)
}
// PathForModuleOut returns a Path representing the paths... under the module's
diff --git a/cc/library.go b/cc/library.go
index e92cf9d..5da36dc 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -631,6 +631,27 @@
return ret
}
+func getRefAbiDumpFile(ctx ModuleContext, vndkVersion, fileName string) android.Path {
+ isLlndk := inList(ctx.baseModuleName(), llndkLibraries)
+
+ refAbiDumpTextFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isLlndk, false)
+ refAbiDumpGzipFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isLlndk, true)
+
+ if refAbiDumpTextFile.Valid() {
+ if refAbiDumpGzipFile.Valid() {
+ ctx.ModuleErrorf(
+ "Two reference ABI dump files are found: %q and %q. Please delete the stale one.",
+ refAbiDumpTextFile, refAbiDumpGzipFile)
+ return nil
+ }
+ return refAbiDumpTextFile.Path()
+ }
+ if refAbiDumpGzipFile.Valid() {
+ return UnzipRefDump(ctx, refAbiDumpGzipFile.Path(), fileName)
+ }
+ return nil
+}
+
func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objects, fileName string, soFile android.Path) {
if len(objs.sAbiDumpFiles) > 0 && ctx.shouldCreateVndkSourceAbiDump() {
vndkVersion := ctx.DeviceConfig().PlatformVndkVersion()
@@ -649,22 +670,14 @@
exportedHeaderFlags := strings.Join(SourceAbiFlags, " ")
library.sAbiOutputFile = TransformDumpToLinkedDump(ctx, objs.sAbiDumpFiles, soFile, fileName, exportedHeaderFlags)
- refSourceDumpFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, vndkVsNdk(ctx), true)
- if refSourceDumpFile.Valid() {
- unzippedRefDump := UnzipRefDump(ctx, refSourceDumpFile.Path(), fileName)
+ refAbiDumpFile := getRefAbiDumpFile(ctx, vndkVersion, fileName)
+ if refAbiDumpFile != nil {
library.sAbiDiff = SourceAbiDiff(ctx, library.sAbiOutputFile.Path(),
- unzippedRefDump, fileName, exportedHeaderFlags, ctx.isVndkExt())
+ refAbiDumpFile, fileName, exportedHeaderFlags, ctx.isVndkExt())
}
}
}
-func vndkVsNdk(ctx ModuleContext) bool {
- if inList(ctx.baseModuleName(), llndkLibraries) {
- return false
- }
- return true
-}
-
func (library *libraryDecorator) link(ctx ModuleContext,
flags Flags, deps PathDeps, objs Objects) android.Path {