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