Loading android/paths.go +24 −21 Original line number Diff line number Diff line Loading @@ -826,37 +826,40 @@ func pathForModule(ctx ModuleContext) OutputPath { 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" binderBitness := ctx.DeviceConfig().BinderBitness() var ext string if isGzip { ext = ".lsdump.gz" } else { vndkOrNdkDir = "ndk" } if len(arches) == 0 { panic("device build with no primary arch") ext = ".lsdump" } binderBitness := ctx.DeviceConfig().BinderBitness() refDumpFileStr := "prebuilts/abi-dumps/" + vndkOrNdkDir + "/" + version + "/" + binderBitness + "/" + archNameAndVariant + "/" + sourceOrBinaryDir + "/" + fileName + ext return ExistentPathForSource(ctx, refDumpFileStr) 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 Loading cc/library.go +24 −11 Original line number Diff line number Diff line Loading @@ -631,6 +631,27 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, 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() Loading @@ -649,20 +670,12 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objec 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, Loading Loading
android/paths.go +24 −21 Original line number Diff line number Diff line Loading @@ -826,37 +826,40 @@ func pathForModule(ctx ModuleContext) OutputPath { 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" binderBitness := ctx.DeviceConfig().BinderBitness() var ext string if isGzip { ext = ".lsdump.gz" } else { vndkOrNdkDir = "ndk" } if len(arches) == 0 { panic("device build with no primary arch") ext = ".lsdump" } binderBitness := ctx.DeviceConfig().BinderBitness() refDumpFileStr := "prebuilts/abi-dumps/" + vndkOrNdkDir + "/" + version + "/" + binderBitness + "/" + archNameAndVariant + "/" + sourceOrBinaryDir + "/" + fileName + ext return ExistentPathForSource(ctx, refDumpFileStr) 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 Loading
cc/library.go +24 −11 Original line number Diff line number Diff line Loading @@ -631,6 +631,27 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, 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() Loading @@ -649,20 +670,12 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objec 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, Loading