From b3fdc5c4e9e5daa5a8e72b57164341a5b03da240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sat, 27 Aug 2016 22:47:04 +0300 Subject: [PATCH] Update clang patches for mingw target defaults --- patches/clang-0001.patch | 20 ++++++++++----- patches/clang-0006.patch | 53 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 patches/clang-0006.patch diff --git a/patches/clang-0001.patch b/patches/clang-0001.patch index f2adccf..ddca29c 100644 --- a/patches/clang-0001.patch +++ b/patches/clang-0001.patch @@ -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 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; diff --git a/patches/clang-0006.patch b/patches/clang-0006.patch new file mode 100644 index 0000000..1069716 --- /dev/null +++ b/patches/clang-0006.patch @@ -0,0 +1,53 @@ +From 33dec3bb0148afe0bcff8c8684833f89c7a61bb6 Mon Sep 17 00:00:00 2001 +From: Martell Malone +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 +