From 24215df8c56ba64e624487f914513212e3e747e9 Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Mon, 1 Mar 2021 19:52:51 +0100 Subject: [PATCH] zig c++: fix compilation that includes any c++ std library file LLVM 12 included a patch that changed the way availability annotations are specified. We now have to define the _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS flag to make sure that we tell the c++ headers that we don't use visibility annotations. Related LLVM patch: D90843 --- src/Compilation.zig | 1 + src/libcxx.zig | 1 + 2 files changed, 2 insertions(+) diff --git a/src/Compilation.zig b/src/Compilation.zig index 39e10becec..d4e3981b85 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -2264,6 +2264,7 @@ pub fn addCCArgs( } try argv.append("-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS"); try argv.append("-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS"); + try argv.append("-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS"); } const llvm_triple = try @import("codegen/llvm.zig").targetTriple(arena, target); diff --git a/src/libcxx.zig b/src/libcxx.zig index 916c3168d3..e235403d40 100644 --- a/src/libcxx.zig +++ b/src/libcxx.zig @@ -128,6 +128,7 @@ pub fn buildLibCXX(comp: *Compilation) !void { try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI"); try cflags.append("-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS"); try cflags.append("-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS"); + try cflags.append("-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS"); if (target.abi.isMusl()) { try cflags.append("-D_LIBCPP_HAS_MUSL_LIBC");