Use libabigail to track NDK ABIs.
The local diffing behavior is currently flagged off so we can land
this in stages.
Test: pytest cc
Test: treehugger
Test: development/tools/update_ndk_abi.sh
Test: m ndk
Bug: http://b/156513478
Change-Id: Iccb314411bc74ea3ddfea8b85b0539709295f65a
diff --git a/cc/library.go b/cc/library.go
index 5e70c51..aec2e4d 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -836,16 +836,23 @@
if library.stubsVersion() != "" {
vndkVer = library.stubsVersion()
}
- objs, versionScript := compileStubLibrary(ctx, flags, String(library.Properties.Llndk.Symbol_file), vndkVer, "--llndk")
+ nativeAbiResult := parseNativeAbiDefinition(ctx,
+ String(library.Properties.Llndk.Symbol_file),
+ android.ApiLevelOrPanic(ctx, vndkVer), "--llndk")
+ objs := compileStubLibrary(ctx, flags, nativeAbiResult.stubSrc)
if !Bool(library.Properties.Llndk.Unversioned) {
- library.versionScriptPath = android.OptionalPathForPath(versionScript)
+ library.versionScriptPath = android.OptionalPathForPath(
+ nativeAbiResult.versionScript)
}
return objs
}
if ctx.IsVendorPublicLibrary() {
- objs, versionScript := compileStubLibrary(ctx, flags, String(library.Properties.Vendor_public_library.Symbol_file), "current", "")
+ nativeAbiResult := parseNativeAbiDefinition(ctx,
+ String(library.Properties.Vendor_public_library.Symbol_file),
+ android.FutureApiLevel, "")
+ objs := compileStubLibrary(ctx, flags, nativeAbiResult.stubSrc)
if !Bool(library.Properties.Vendor_public_library.Unversioned) {
- library.versionScriptPath = android.OptionalPathForPath(versionScript)
+ library.versionScriptPath = android.OptionalPathForPath(nativeAbiResult.versionScript)
}
return objs
}
@@ -855,8 +862,12 @@
ctx.PropertyErrorf("symbol_file", "%q doesn't have .map.txt suffix", symbolFile)
return Objects{}
}
- objs, versionScript := compileStubLibrary(ctx, flags, String(library.Properties.Stubs.Symbol_file), library.MutatedProperties.StubsVersion, "--apex")
- library.versionScriptPath = android.OptionalPathForPath(versionScript)
+ nativeAbiResult := parseNativeAbiDefinition(ctx, symbolFile,
+ android.ApiLevelOrPanic(ctx, library.MutatedProperties.StubsVersion),
+ "--apex")
+ objs := compileStubLibrary(ctx, flags, nativeAbiResult.stubSrc)
+ library.versionScriptPath = android.OptionalPathForPath(
+ nativeAbiResult.versionScript)
return objs
}