Support linking against NDK prebuilt libraries
When sdk_version is specified, we need to use the prebuilt ndk versions
of these libraries instead of the platform versions.
Change-Id: I4ff33a234a985041ebe11ab148d64d0f8df66fc4
diff --git a/cc/cc.go b/cc/cc.go
index dd9a831..15b8cb7 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -115,6 +115,26 @@
illegalFlags = []string{
"-w",
}
+
+ ndkPrebuiltSharedLibs = []string{
+ "android",
+ "c",
+ "dl",
+ "EGL",
+ "GLESv1_CM",
+ "GLESv2",
+ "GLESv3",
+ "jnigraphics",
+ "log",
+ "mediandk",
+ "m",
+ "OpenMAXAL",
+ "OpenSLES",
+ "stdc++",
+ "vulkan",
+ "z",
+ }
+ ndkPrebuiltSharedLibraries = addPrefix(append([]string(nil), ndkPrebuiltSharedLibs...), "lib")
)
func init() {
@@ -800,6 +820,22 @@
deps.SharedLibs = lastUniqueElements(deps.SharedLibs)
deps.LateSharedLibs = lastUniqueElements(deps.LateSharedLibs)
+ if ctx.sdk() {
+ version := "." + ctx.sdkVersion()
+
+ rewriteNdkLibs := func(list []string) []string {
+ for i, entry := range list {
+ if inList(entry, ndkPrebuiltSharedLibraries) {
+ list[i] = "ndk_" + entry + version
+ }
+ }
+ return list
+ }
+
+ deps.SharedLibs = rewriteNdkLibs(deps.SharedLibs)
+ deps.LateSharedLibs = rewriteNdkLibs(deps.LateSharedLibs)
+ }
+
for _, lib := range deps.ReexportSharedLibHeaders {
if !inList(lib, deps.SharedLibs) {
ctx.PropertyErrorf("export_shared_lib_headers", "Shared library not in shared_libs: '%s'", lib)
@@ -1320,10 +1356,9 @@
}
if ctx.sdk() {
- version := ctx.sdkVersion()
deps.SharedLibs = append(deps.SharedLibs,
- "ndk_libc."+version,
- "ndk_libm."+version,
+ "libc",
+ "libm",
)
}
}