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",
 			)
 		}
 	}