Update clang patches for mingw target defaults

This commit is contained in:
Martin Storsjö authored and Martin Storsjo committed 2016-08-27 22:48:11 +03:00
1 parent ffff621129
commit b3fdc5c4e9
2 files changed
+67 -6

No files matched your search

+14 -6
View File
@@ -1,24 +1,32 @@
From 6e83e00fb6c9b858b9ccb1cbeb30198ec85d190d Mon Sep 17 00:00:00 2001
From 5d2a7cb021208fd23b8b57034d11fef3900397c4 Mon Sep 17 00:00:00 2001
From: Martell Malone <martellmalone@gmail.com>
Date: Wed, 16 Dec 2015 02:07:06 -0800
Subject: [PATCH 1/4] use lld and compiler-rt by default
Subject: [PATCH 1/6] mingw-w64: setup new defaults for target
runtime: compiler-rt
c++ lib: libc++
linker: lld
---
lib/Driver/ToolChains.h | 4 ++++
lib/Driver/ToolChains.h | 9 +++++++++
lib/Driver/Tools.cpp | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index 4e5c3f7..c06f695 100644
index 4e5c3f7..4de35d6 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -680,6 +680,10 @@ public:
@@ -680,6 +680,15 @@ public:
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
+ RuntimeLibType GetDefaultRuntimeLibType() const override {
+ return RuntimeLibType::RLT_CompilerRT;
+ }
+
+ CXXStdlibType
+ GetCXXStdlibType(const llvm::opt::ArgList &Args) const override {
+ return ToolChain::CST_Libcxx;
+ }
+
protected:
Tool *getTool(Action::ActionClass AC) const override;
+53
View File
@@ -0,0 +1,53 @@
From 33dec3bb0148afe0bcff8c8684833f89c7a61bb6 Mon Sep 17 00:00:00 2001
From: Martell Malone <martellmalone@gmail.com>
Date: Fri, 5 Aug 2016 21:50:38 -0700
Subject: [PATCH 6/6] mingw-w64: support static builds of libc++
Static builds require libc++abi to be linked
Will add support for both modes in future
---
lib/Driver/MinGWToolChain.cpp | 15 +++++++++++++++
lib/Driver/ToolChains.h | 4 ++++
2 files changed, 19 insertions(+)
diff --git a/lib/Driver/MinGWToolChain.cpp b/lib/Driver/MinGWToolChain.cpp
index a1dc25b..816e11d 100644
--- a/lib/Driver/MinGWToolChain.cpp
+++ b/lib/Driver/MinGWToolChain.cpp
@@ -242,3 +242,18 @@ void MinGW::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
break;
}
}
+
+void MinGW::AddCXXStdlibLibArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+ switch (GetCXXStdlibType(Args)) {
+ case ToolChain::CST_Libcxx:
+ CmdArgs.push_back("-lc++");
+ // Support only static libc++ for now
+ CmdArgs.push_back("-lc++abi");
+ break;
+
+ case ToolChain::CST_Libstdcxx:
+ CmdArgs.push_back("-lstdc++");
+ break;
+ }
+}
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index 4de35d6..bfc9b80 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -676,6 +676,10 @@ public:
void
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
+
+ void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const override;
+
void AddClangCXXStdlibIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
--
2.7.4