Merge "Emit static dependencies into pom2mk-generated Makefile"
diff --git a/cc/builder.go b/cc/builder.go
index de85d6e..a280ec5 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -508,8 +508,8 @@
 		return
 	}
 
-	arCmd := gccCmd(flags.toolchain, "ar")
-	arFlags := "crsPD"
+	arCmd := "${config.ClangBin}/llvm-ar"
+	arFlags := "crsD"
 	if flags.arFlags != "" {
 		arFlags += " " + flags.arFlags
 	}
diff --git a/cc/config/global.go b/cc/config/global.go
index c10c60a..ef710c8 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -119,15 +119,14 @@
 	ClangDefaultVersion      = "clang-4393122"
 	ClangDefaultShortVersion = "5.0.1"
 
+	// Directories with warnings from Android.bp files.
 	WarningAllowedProjects = []string{
 		"device/",
 		"vendor/",
 	}
 
-	// Some Android.mk files still have warnings.
-	WarningAllowedOldProjects = []string{
-		"hardware/qcom/",
-	}
+	// Directories with warnings from Android.mk files.
+	WarningAllowedOldProjects = []string{}
 )
 
 var pctx = android.NewPackageContext("android/soong/cc/config")
diff --git a/cc/library.go b/cc/library.go
index 9bd12a9..d0a580c 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -579,7 +579,7 @@
 
 	// TODO(danalbert): Clean this up when soong supports prebuilts.
 	if strings.HasPrefix(ctx.selectedStl(), "ndk_libc++") {
-		libDir := getNdkStlLibDir(ctx, flags.Toolchain, "libc++")
+		libDir := getNdkStlLibDir(ctx, "libc++")
 
 		if strings.HasSuffix(ctx.selectedStl(), "_shared") {
 			deps.StaticLibs = append(deps.StaticLibs,
diff --git a/cc/makevars.go b/cc/makevars.go
index 0d2569a..5faf201 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -289,7 +289,7 @@
 	if target.Os == android.Darwin {
 		ctx.Strict(makePrefix+"AR", "${config.MacArPath}")
 	} else {
-		ctx.Strict(makePrefix+"AR", gccCmd(toolchain, "ar"))
+		ctx.Strict(makePrefix+"AR", "${config.ClangBin}/llvm-ar")
 		ctx.Strict(makePrefix+"READELF", gccCmd(toolchain, "readelf"))
 		ctx.Strict(makePrefix+"NM", gccCmd(toolchain, "nm"))
 	}
diff --git a/cc/ndk_prebuilt.go b/cc/ndk_prebuilt.go
index 69e07b9..de1fa46 100644
--- a/cc/ndk_prebuilt.go
+++ b/cc/ndk_prebuilt.go
@@ -163,16 +163,13 @@
 	return module.Init()
 }
 
-func getNdkStlLibDir(ctx android.ModuleContext, toolchain config.Toolchain, stl string) android.SourcePath {
-	gccVersion := toolchain.GccVersion()
+func getNdkStlLibDir(ctx android.ModuleContext, stl string) android.SourcePath {
 	var libDir string
 	switch stl {
 	case "libstlport":
 		libDir = "cxx-stl/stlport/libs"
 	case "libc++":
 		libDir = "cxx-stl/llvm-libc++/libs"
-	case "libgnustl":
-		libDir = fmt.Sprintf("cxx-stl/gnu-libstdc++/%s/libs", gccVersion)
 	}
 
 	if libDir != "" {
@@ -201,6 +198,6 @@
 
 	stlName := strings.TrimSuffix(libName, "_shared")
 	stlName = strings.TrimSuffix(stlName, "_static")
-	libDir := getNdkStlLibDir(ctx, flags.Toolchain, stlName)
+	libDir := getNdkStlLibDir(ctx, stlName)
 	return libDir.Join(ctx, libName+libExt)
 }
diff --git a/cc/stl.go b/cc/stl.go
index 338db84..cafb26d 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -26,8 +26,6 @@
 		return "libc++"
 	case "ndk_libstlport_shared", "ndk_libstlport_static":
 		return "stlport"
-	case "ndk_libgnustl_static":
-		return "gnustl"
 	case "ndk_system":
 		return "system"
 	case "":
@@ -66,8 +64,7 @@
 			case "":
 				return "ndk_system"
 			case "c++_shared", "c++_static",
-				"stlport_shared", "stlport_static",
-				"gnustl_static":
+				"stlport_shared", "stlport_static":
 				return "ndk_lib" + s
 			case "libc++":
 				return "ndk_libc++_shared"
@@ -137,7 +134,7 @@
 		deps.SharedLibs = append([]string{"libstdc++"}, deps.SharedLibs...)
 	case "ndk_libc++_shared", "ndk_libstlport_shared":
 		deps.SharedLibs = append(deps.SharedLibs, stl.Properties.SelectedStl)
-	case "ndk_libc++_static", "ndk_libstlport_static", "ndk_libgnustl_static":
+	case "ndk_libc++_static", "ndk_libstlport_static":
 		deps.StaticLibs = append(deps.StaticLibs, stl.Properties.SelectedStl)
 	default:
 		panic(fmt.Errorf("Unknown stl: %q", stl.Properties.SelectedStl))
@@ -171,7 +168,7 @@
 	case "ndk_libc++_shared", "ndk_libc++_static":
 		// TODO(danalbert): This really shouldn't be here...
 		flags.CppFlags = append(flags.CppFlags, "-std=c++11")
-	case "ndk_libstlport_shared", "ndk_libstlport_static", "ndk_libgnustl_static":
+	case "ndk_libstlport_shared", "ndk_libstlport_static":
 		// Nothing
 	case "":
 		// None or error.
diff --git a/cc/test.go b/cc/test.go
index 7b9dcb9..2fb3a35 100644
--- a/cc/test.go
+++ b/cc/test.go
@@ -161,8 +161,6 @@
 			switch ctx.selectedStl() {
 			case "ndk_libc++_shared", "ndk_libc++_static":
 				deps.StaticLibs = append(deps.StaticLibs, "libgtest_main_ndk_libcxx", "libgtest_ndk_libcxx")
-			case "ndk_libgnustl_static":
-				deps.StaticLibs = append(deps.StaticLibs, "libgtest_main_ndk_gnustl", "libgtest_ndk_gnustl")
 			default:
 				deps.StaticLibs = append(deps.StaticLibs, "libgtest_main_ndk", "libgtest_ndk")
 			}