Skip to content

Commit 5048f81

Browse files
committed
hack: cygwin: define _GLIBCXX_USE_CXX11_ABI to 1 if not previously defined
work around llvm#135910 see also msys2/MSYS2-packages#5329
1 parent 8ad108b commit 5048f81

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

clang/lib/Driver/ToolChains/Cygwin.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,20 @@ void Cygwin::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
107107
addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
108108
addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include/w32api");
109109
}
110+
111+
void Cygwin::addClangTargetOptions(const ArgList &DriverArgs,
112+
ArgStringList &CC1Args,
113+
Action::OffloadKind) const {
114+
auto findMacroDefinition = [&](const std::string &Macro) {
115+
auto MacroDefs = DriverArgs.getAllArgValues(options::OPT_D);
116+
if (MacroDefs.empty())
117+
return false;
118+
std::string MacroEquals(Macro + '=');
119+
return llvm::any_of(MacroDefs, [&](const std::string &M) {
120+
return M == Macro || M.rfind(MacroEquals, 0) != std::string::npos;
121+
});
122+
};
123+
124+
if (getDriver().CCCIsCXX() && !findMacroDefinition("_GLIBCXX_USE_CXX11_ABI"))
125+
CC1Args.push_back("-D_GLIBCXX_USE_CXX11_ABI=1");
126+
}

clang/lib/Driver/ToolChains/Cygwin.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ class LLVM_LIBRARY_VISIBILITY Cygwin : public Generic_GCC {
2727
void
2828
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
2929
llvm::opt::ArgStringList &CC1Args) const override;
30+
31+
void
32+
addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
33+
llvm::opt::ArgStringList &CC1Args,
34+
Action::OffloadKind DeviceOffloadKind) const override;
3035
};
3136

3237
} // end namespace toolchains

0 commit comments

Comments
 (0)