Fix C++ on Darwin

Port of https://android-review.googlesource.com/207241

Change-Id: Idad81a528a2104579de0225b0724bb81293eea44
diff --git a/cc/x86_darwin_host.go b/cc/x86_darwin_host.go
index 7f4c489..9a7b68a 100644
--- a/cc/x86_darwin_host.go
+++ b/cc/x86_darwin_host.go
@@ -32,16 +32,20 @@
 		"-DMACOSX_DEPLOYMENT_TARGET=${macSdkVersion}",
 	}
 
-	darwinCppflags = []string{
-		"-isystem ${macToolchainRoot}/usr/include/c++/v1",
-	}
-
 	darwinLdflags = []string{
 		"-isysroot ${macSdkRoot}",
 		"-Wl,-syslibroot,${macSdkRoot}",
 		"-mmacosx-version-min=${macSdkVersion}",
 	}
 
+	darwinSystemCppCppflags = []string{
+		"-isystem ${macToolchainRoot}/usr/include/c++/v1",
+	}
+
+	darwinSystemCppLdflags = []string{
+		"-stdlib=libc++",
+	}
+
 	// Extended cflags
 	darwinX86Cflags = []string{
 		"-m32",
@@ -74,8 +78,6 @@
 
 	darwinX8664ClangLdflags = clangFilterUnknownCflags(darwinX8664Ldflags)
 
-	darwinClangCppflags = clangFilterUnknownCflags(darwinCppflags)
-
 	darwinSupportedSdkVersions = []string{
 		"macosx10.8",
 		"macosx10.9",
@@ -113,11 +115,12 @@
 
 	pctx.StaticVariable("darwinCflags", strings.Join(darwinCflags, " "))
 	pctx.StaticVariable("darwinLdflags", strings.Join(darwinLdflags, " "))
-	pctx.StaticVariable("darwinCppflags", strings.Join(darwinCppflags, " "))
 
 	pctx.StaticVariable("darwinClangCflags", strings.Join(darwinClangCflags, " "))
 	pctx.StaticVariable("darwinClangLdflags", strings.Join(darwinClangLdflags, " "))
-	pctx.StaticVariable("darwinClangCppflags", strings.Join(darwinClangCppflags, " "))
+
+	pctx.StaticVariable("darwinSystemCppCppflags", strings.Join(darwinSystemCppCppflags, " "))
+	pctx.StaticVariable("darwinSystemCppLdflags", strings.Join(darwinSystemCppLdflags, " "))
 
 	// Extended cflags
 	pctx.StaticVariable("darwinX86Cflags", strings.Join(darwinX86Cflags, " "))
@@ -198,7 +201,7 @@
 }
 
 func (t *toolchainDarwin) Cppflags() string {
-	return "${darwinCppflags}"
+	return ""
 }
 
 func (t *toolchainDarwinX86) Ldflags() string {
@@ -221,10 +224,6 @@
 	return "${darwinClangCflags} ${darwinX86ClangCflags}"
 }
 
-func (t *toolchainDarwinX86) ClangCppflags() string {
-	return "${darwinClangCppflags}"
-}
-
 func (t *toolchainDarwinX8664) ClangTriple() string {
 	return "x86_64-darwin-gnu"
 }
@@ -233,8 +232,8 @@
 	return "${darwinClangCflags} ${darwinX8664ClangCflags}"
 }
 
-func (t *toolchainDarwinX8664) ClangCppflags() string {
-	return "${darwinClangCppflags}"
+func (t *toolchainDarwin) ClangCppflags() string {
+	return ""
 }
 
 func (t *toolchainDarwinX86) ClangLdflags() string {
@@ -249,6 +248,14 @@
 	return ".dylib"
 }
 
+func (t *toolchainDarwin) SystemCppCppflags() string {
+	return "${darwinSystemCppCppflags}"
+}
+
+func (t *toolchainDarwin) SystemCppLdflags() string {
+	return "${darwinSystemCppLdflags}"
+}
+
 var toolchainDarwinX86Singleton Toolchain = &toolchainDarwinX86{}
 var toolchainDarwinX8664Singleton Toolchain = &toolchainDarwinX8664{}