Merge "Disable availability macros in libc++ on Darwin."
diff --git a/cc/stl.go b/cc/stl.go
index c65f1c2..c5757cd 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -144,6 +144,19 @@
 	switch stl.Properties.SelectedStl {
 	case "libc++", "libc++_static":
 		flags.CFlags = append(flags.CFlags, "-D_USING_LIBCXX")
+
+		if ctx.Darwin() {
+			// libc++'s headers are annotated with availability macros that
+			// indicate which version of Mac OS was the first to ship with a
+			// libc++ feature available in its *system's* libc++.dylib. We do
+			// not use the system's library, but rather ship our own. As such,
+			// these availability attributes are meaningless for us but cause
+			// build breaks when we try to use code that would not be available
+			// in the system's dylib.
+			flags.CppFlags = append(flags.CppFlags,
+				"-D_LIBCPP_DISABLE_AVAILABILITY")
+		}
+
 		if !ctx.toolchain().Bionic() {
 			flags.CppFlags = append(flags.CppFlags, "-nostdinc++")
 			flags.LdFlags = append(flags.LdFlags, "-nodefaultlibs")