diff --git a/mingw-w64-clang35/0000-llvm-3.5.0-force-link-pass.o.patch b/mingw-w64-clang35/0000-llvm-3.5.0-force-link-pass.o.patch deleted file mode 100644 index acc4c13396..0000000000 --- a/mingw-w64-clang35/0000-llvm-3.5.0-force-link-pass.o.patch +++ /dev/null @@ -1,28 +0,0 @@ -Index: llvm-toolchain-snapshot-3.5~svn211313/tools/bugpoint/Makefile -=================================================================== ---- llvm-toolchain-snapshot-3.5~svn211313.orig/tools/bugpoint/Makefile -+++ llvm-toolchain-snapshot-3.5~svn211313/tools/bugpoint/Makefile -@@ -12,6 +12,9 @@ TOOLNAME := bugpoint - LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \ - bitwriter irreader vectorize objcarcopts codegen - -+# Crappy workaround to make sure it links correctly. -+LLVMLibsOptions := ../../lib/IR/Release*/Pass.o -+ - # Support plugins. - NO_DEAD_STRIP := 1 - -Index: llvm-toolchain-snapshot-3.5~svn211313/tools/opt/Makefile -=================================================================== ---- llvm-toolchain-snapshot-3.5~svn211313.orig/tools/opt/Makefile -+++ llvm-toolchain-snapshot-3.5~svn211313/tools/opt/Makefile -@@ -10,7 +10,9 @@ - LEVEL := ../.. - TOOLNAME := opt - LINK_COMPONENTS := bitreader bitwriter asmparser irreader instrumentation scalaropts objcarcopts ipo vectorize all-targets codegen -+# Crappy workaround to make sure it links correctly. - -+LLVMLibsOptions := ../../lib/IR/Release*/Pass.o - # Support plugins. - NO_DEAD_STRIP := 1 - diff --git a/mingw-w64-clang35/0001-clang-fabs.patch b/mingw-w64-clang35/0001-clang-fabs.patch deleted file mode 100644 index 241c09146f..0000000000 --- a/mingw-w64-clang35/0001-clang-fabs.patch +++ /dev/null @@ -1,32 +0,0 @@ -Original author: Reid Kleckner -Backported to clang 3.5 by: Antal Szabó - -This patch fixes the lowering of __builtin_fabs, __builtin_fabsf and __builtin_fabsl. Based on clang r221206. - -Original log message: - -Lower __builtin_fabs* to @llvm.fabs.* - -mingw64's headers implement fabs by calling __builtin_fabs, so using the -library call results in an infinite loop. If the backend legalizes -@llvm.fabs as a call to fabs later, things should work out, as the crt -provides a definition. - -diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp -index 4f68b34..230a770 100644 ---- a/lib/CodeGen/CGBuiltin.cpp -+++ b/lib/CodeGen/CGBuiltin.cpp -@@ -255,6 +255,13 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD, - - return RValue::get(Result); - } -+ case Builtin::BI__builtin_fabs: -+ case Builtin::BI__builtin_fabsf: -+ case Builtin::BI__builtin_fabsl: { -+ Value *Arg1 = EmitScalarExpr(E->getArg(0)); -+ Value *Result = EmitFAbs(*this, Arg1, E->getArg(0)->getType()); -+ return RValue::get(Result); -+ } - - case Builtin::BI__builtin_conj: - case Builtin::BI__builtin_conjf: diff --git a/mingw-w64-clang35/0002-clang-win64-seh.patch b/mingw-w64-clang35/0002-clang-win64-seh.patch deleted file mode 100644 index 366d80ad8e..0000000000 --- a/mingw-w64-clang35/0002-clang-win64-seh.patch +++ /dev/null @@ -1,136 +0,0 @@ -Author: Martell Malone - -This adds seh exception handling on the clang side. -For now this will remove link errors regardless if seh is supported on the llvm backend or not. - -diff --git a/include/clang/Basic/LangOptions.def b/include/clang/Basic/LangOptions.def -index 34dfea2..ac20a9b 100644 ---- a/include/clang/Basic/LangOptions.def -+++ b/include/clang/Basic/LangOptions.def -@@ -82,6 +82,7 @@ - LANGOPT(ObjCExceptions , 1, 0, "Objective-C exceptions") - LANGOPT(CXXExceptions , 1, 0, "C++ exceptions") - LANGOPT(SjLjExceptions , 1, 0, "setjmp-longjump exception handling") -+LANGOPT(SEHExceptions , 1, 0, "SEH exception handling") - LANGOPT(TraditionalCPP , 1, 0, "traditional CPP emulation") - LANGOPT(RTTI , 1, 1, "run-time type information") - LANGOPT(RTTIData , 1, 1, "emit run-time type information data") -diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td -index 5ffeb43..ab73ca8 100644 ---- a/include/clang/Driver/CC1Options.td -+++ b/include/clang/Driver/CC1Options.td -@@ -425,6 +425,8 @@ - HelpText<"Weakly link in the blocks runtime">; - def fsjlj_exceptions : Flag<["-"], "fsjlj-exceptions">, - HelpText<"Use SjLj style exceptions">; -+def fseh_exceptions : Flag<["-"], "fseh-exceptions">, -+ HelpText<"Use SEH style exceptions">; - def split_dwarf_file : Separate<["-"], "split-dwarf-file">, - HelpText<"File name to use for split dwarf debug info output">; - def fno_wchar : Flag<["-"], "fno-wchar">, -diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h -index ceb1c76..30d687f 100644 ---- a/include/clang/Driver/ToolChain.h -+++ b/include/clang/Driver/ToolChain.h -@@ -248,6 +248,9 @@ - /// UseSjLjExceptions - Does this tool chain use SjLj exceptions. - virtual bool UseSjLjExceptions() const { return false; } - -+ /// UseSEHExceptions - Does this tool chain use SEH exceptions. -+ virtual bool UseSEHExceptions() const { return false; } -+ - /// ComputeLLVMTriple - Return the LLVM target triple to use, after taking - /// command line arguments into account. - virtual std::string -diff --git a/lib/CodeGen/CGException.cpp b/lib/CodeGen/CGException.cpp -index cc03b0a..a4aa44b 100644 ---- a/lib/CodeGen/CGException.cpp -+++ b/lib/CodeGen/CGException.cpp -@@ -137,12 +137,14 @@ - static const EHPersonality &get(const LangOptions &Lang); - static const EHPersonality GNU_C; - static const EHPersonality GNU_C_SJLJ; -+ static const EHPersonality GNU_C_SEH; - static const EHPersonality GNU_ObjC; - static const EHPersonality GNUstep_ObjC; - static const EHPersonality GNU_ObjCXX; - static const EHPersonality NeXT_ObjC; - static const EHPersonality GNU_CPlusPlus; - static const EHPersonality GNU_CPlusPlus_SJLJ; -+ static const EHPersonality GNU_CPlusPlus_SEH; - }; - } - -@@ -150,12 +152,16 @@ - const EHPersonality - EHPersonality::GNU_C_SJLJ = { "__gcc_personality_sj0", nullptr }; - const EHPersonality -+EHPersonality::GNU_C_SEH = { "__gcc_personality_seh0", nullptr }; -+const EHPersonality - EHPersonality::NeXT_ObjC = { "__objc_personality_v0", nullptr }; - const EHPersonality - EHPersonality::GNU_CPlusPlus = { "__gxx_personality_v0", nullptr }; - const EHPersonality - EHPersonality::GNU_CPlusPlus_SJLJ = { "__gxx_personality_sj0", nullptr }; - const EHPersonality -+EHPersonality::GNU_CPlusPlus_SEH = { "__gxx_personality_seh0", nullptr }; -+const EHPersonality - EHPersonality::GNU_ObjC = {"__gnu_objc_personality_v0", "objc_exception_throw"}; - const EHPersonality - EHPersonality::GNU_ObjCXX = { "__gnustep_objcxx_personality_v0", nullptr }; -@@ -165,6 +171,8 @@ - static const EHPersonality &getCPersonality(const LangOptions &L) { - if (L.SjLjExceptions) - return EHPersonality::GNU_C_SJLJ; -+ if (L.SEHExceptions) -+ return EHPersonality::GNU_C_SEH; - return EHPersonality::GNU_C; - } - -@@ -189,6 +197,8 @@ - static const EHPersonality &getCXXPersonality(const LangOptions &L) { - if (L.SjLjExceptions) - return EHPersonality::GNU_CPlusPlus_SJLJ; -+ else if (L.SEHExceptions) -+ return EHPersonality::GNU_CPlusPlus_SEH; - else - return EHPersonality::GNU_CPlusPlus; - } -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index a670502..65bd056 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -4048,6 +4048,8 @@ - - if (getToolChain().UseSjLjExceptions()) - CmdArgs.push_back("-fsjlj-exceptions"); -+ else if (getToolChain().UseSEHExceptions()) -+ CmdArgs.push_back("-fseh-exceptions"); - - // C++ "sane" operator new. - if (!Args.hasFlag(options::OPT_fassume_sane_operator_new, -diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp -index 92202b7..de55c8b 100644 ---- a/lib/Frontend/CompilerInvocation.cpp -+++ b/lib/Frontend/CompilerInvocation.cpp -@@ -1424,6 +1424,7 @@ - Opts.ObjCExceptions = Args.hasArg(OPT_fobjc_exceptions); - Opts.CXXExceptions = Args.hasArg(OPT_fcxx_exceptions); - Opts.SjLjExceptions = Args.hasArg(OPT_fsjlj_exceptions); -+ Opts.SEHExceptions = Args.hasArg(OPT_fseh_exceptions); - Opts.TraditionalCPP = Args.hasArg(OPT_traditional_cpp); - - Opts.RTTI = !Args.hasArg(OPT_fno_rtti); -diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp -index 39c474b..ceab8ac 100644 ---- a/lib/Frontend/InitPreprocessor.cpp -+++ b/lib/Frontend/InitPreprocessor.cpp -@@ -557,6 +557,8 @@ - Builder.defineMacro("__GXX_RTTI"); - if (LangOpts.SjLjExceptions) - Builder.defineMacro("__USING_SJLJ_EXCEPTIONS__"); -+ if (LangOpts.SEHExceptions) -+ Builder.defineMacro("__SEH__"); - - if (LangOpts.Deprecated) - Builder.defineMacro("__DEPRECATED"); diff --git a/mingw-w64-clang35/0003-clang-mingw-driver.patch b/mingw-w64-clang35/0003-clang-mingw-driver.patch deleted file mode 100644 index a3af83bcac..0000000000 --- a/mingw-w64-clang35/0003-clang-mingw-driver.patch +++ /dev/null @@ -1,675 +0,0 @@ -Author: Martell Malone - -This adds the mingw64 driver to clang even with the new triplets compnerd has created in clang. -Based off of ruben driver patch back from Jan - -diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td -index bb1fe2d..9877216 100644 ---- a/include/clang/Driver/Options.td -+++ b/include/clang/Driver/Options.td -@@ -1041,6 +1041,11 @@ - def masm_EQ : Joined<["-"], "masm=">, Group, Flags<[DriverOption]>; - def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group; - def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group; -+def mconsole : Joined<["-"], "mconsole">, Group, Flags<[DriverOption]>; -+def mwindows : Joined<["-"], "mwindows">, Group, Flags<[DriverOption]>; -+def mdll : Joined<["-"], "mdll">, Group, Flags<[DriverOption]>; -+def municode : Joined<["-"], "municode">, Group, Flags<[DriverOption]>; -+def mthreads : Joined<["-"], "mthreads">, Group, Flags<[DriverOption]>; - def mcpu_EQ : Joined<["-"], "mcpu=">, Group; - def mdynamic_no_pic : Joined<["-"], "mdynamic-no-pic">, Group; - def mfix_and_continue : Flag<["-"], "mfix-and-continue">, Group; -diff --git a/lib/Driver/CMakeLists.txt b/lib/Driver/CMakeLists.txt -index e874ab8..71b7ec6 100644 ---- a/lib/Driver/CMakeLists.txt -+++ b/lib/Driver/CMakeLists.txt -@@ -16,6 +16,7 @@ - ToolChain.cpp - ToolChains.cpp - WindowsToolChain.cpp -+ MinGWToolChain.cpp - Tools.cpp - Types.cpp - -diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp -index ca3e50f..c49d9fd 100644 ---- a/lib/Driver/Driver.cpp -+++ b/lib/Driver/Driver.cpp -@@ -1993,12 +1993,7 @@ - TC = new toolchains::Generic_GCC(*this, Target, Args); - break; - case llvm::Triple::GNU: -- // FIXME: We need a MinGW toolchain. Use the default Generic_GCC -- // toolchain for now as the default case would below otherwise. -- if (Target.isOSBinFormatELF()) -- TC = new toolchains::Generic_ELF(*this, Target, Args); -- else -- TC = new toolchains::Generic_GCC(*this, Target, Args); -+ TC = new toolchains::MinGW(*this, Target, Args); - break; - case llvm::Triple::MSVC: - case llvm::Triple::UnknownEnvironment: -diff --git a/lib/Driver/MinGWToolChain.cpp b/lib/Driver/MinGWToolChain.cpp -new file mode 100644 -index 0000000..87c0aa2 ---- /dev/null -+++ b/lib/Driver/MinGWToolChain.cpp -@@ -0,0 +1,195 @@ -+//===--- MinGWToolChain.cpp - MinGWToolChain Implementation -----------------------===// -+// -+// The LLVM Compiler Infrastructure -+// -+// This file is distributed under the University of Illinois Open Source -+// License. See LICENSE.TXT for details. -+// -+//===----------------------------------------------------------------------===// -+ -+#include "ToolChains.h" -+#include "clang/Basic/CharInfo.h" -+#include "clang/Basic/DiagnosticIDs.h" -+#include "clang/Basic/Version.h" -+#include "clang/Driver/Compilation.h" -+#include "clang/Driver/Driver.h" -+#include "clang/Driver/DriverDiagnostic.h" -+#include "clang/Driver/Options.h" -+#include "llvm/Option/Arg.h" -+#include "llvm/Option/ArgList.h" -+#include "llvm/Support/ErrorHandling.h" -+#include "llvm/Support/FileSystem.h" -+#include "llvm/Support/Path.h" -+ -+using namespace clang::diag; -+using namespace clang::driver; -+using namespace clang::driver::toolchains; -+using namespace clang; -+using namespace llvm::opt; -+ -+MinGW::MinGW(const Driver &D, const llvm::Triple& Triple, -+ const ArgList &Args) -+ : ToolChain(D, Triple, Args) { -+ //TODO: libc++ directory -+ -+ // Get GCC version string for library and header directories -+ const std::string GCClibdir = -+#ifdef LLVM_ON_WIN32 -+ getDriver().Dir + "/../lib/gcc/" + getTriple().getArchName().str() + "-w64-mingw32"; -+#else -+ getDriver().SysRoot + "/usr/lib/gcc/" + getTriple().getArchName().str() + "-w64-mingw32"; -+#endif -+ if (llvm::sys::fs::exists(GCClibdir)) { -+ // Find subdirectory, should be the version of MinGW-w64 GCC -+ std::error_code EC; -+ llvm::sys::fs::directory_iterator entry(StringRef(GCClibdir), EC); -+ if (!EC) -+ GCCVersion = llvm::sys::path::filename(entry->path()); -+ // TODO report error: "no MinGW-w64 GCC installation found" -+ } -+ -+#ifdef LLVM_ON_WIN32 -+ // assume sysrooted compiler -+ getFilePaths().push_back(getDriver().Dir + "/../lib"); -+ getFilePaths().push_back(getDriver().Dir + "/../" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/lib"); -+ getFilePaths().push_back(getDriver().Dir + "/../lib/gcc/" -+ + getTriple().getArchName().str() + "-w64-mingw32" + "/" + GCCVersion); -+ -+#else -+ // assume install prefix /usr -+ getFilePaths().push_back(getDriver().SysRoot + "/usr/" -+ + getTriple().getArchName().str() + "-w64-mingw32" + "/lib"); -+ getFilePaths().push_back(getDriver().SysRoot + "/usr/lib/gcc/" -+ + getTriple().getArchName().str() + "-w64-mingw32" + "/" + GCCVersion); -+#endif -+} -+ -+Tool *MinGW::buildLinker() const { -+ return new tools::MinGW::Link(*this); -+} -+ -+bool MinGW::IsIntegratedAssemblerDefault() const { -+ return true; -+} -+ -+Tool *MinGW::getTool(Action::ActionClass AC) const { -+ switch (AC) { -+ case Action::PreprocessJobClass: -+ if (!Preprocess) -+ Preprocess.reset(new tools::gcc::Preprocess(*this)); -+ return Preprocess.get(); -+ case Action::CompileJobClass: -+ if (!Compile) -+ Compile.reset(new tools::gcc::Compile(*this)); -+ return Compile.get(); -+ default: -+ return ToolChain::getTool(AC); -+ } -+} -+ -+Tool *MinGW::buildAssembler() const { -+ return new tools::MinGW::Assemble(*this); -+} -+ -+bool MinGW::IsUnwindTablesDefault() const { -+ return getArch() == llvm::Triple::x86_64; -+} -+ -+bool MinGW::isPICDefault() const { -+ return getArch() == llvm::Triple::x86_64; -+} -+ -+bool MinGW::isPIEDefault() const { -+ return false; -+} -+ -+ -+bool MinGW::isPICDefaultForced() const { -+ return getArch() == llvm::Triple::x86_64; -+} -+ -+bool MinGW::UseSEHExceptions() const { -+ return getArch() == llvm::Triple::x86_64; -+} -+ -+void MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, -+ ArgStringList &CC1Args) const { -+ if (DriverArgs.hasArg(options::OPT_nostdinc)) -+ return; -+ -+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { -+ SmallString<128> P(getDriver().ResourceDir); -+ llvm::sys::path::append(P, "include"); -+ addSystemInclude(DriverArgs, CC1Args, P.str()); -+ } -+ -+ if (DriverArgs.hasArg(options::OPT_nostdlibinc)) -+ return; -+ -+#ifdef LLVM_ON_WIN32 -+ // Clang runs on Windows, assume sysroot toolchain -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include"); -+ // Add users standard include directory -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../include"); -+#else -+ // Clang runs somewhere else, e.g. Linux, assume install prefix /usr -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().SysRoot + "/usr/" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include"); -+#endif -+} -+ -+void MinGW::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, -+ ArgStringList &CC1Args) const { -+ if (DriverArgs.hasArg(options::OPT_nostdlibinc) || -+ DriverArgs.hasArg(options::OPT_nostdincxx)) -+ return; -+ -+ // Check if libc++ has been enabled and provide its include paths if so. -+ if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) { -+ // libc++ is always installed at a fixed path on Linux currently. -+#ifdef LLVM_ON_WIN32 -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../include/c++/v1"); -+#else -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().SysRoot + "/usr/include/c++/v1"); -+#endif -+ return; -+ } -+#ifdef LLVM_ON_WIN32 -+ // Assume sysroot toolchain -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../include/c++/" + GCCVersion); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../include/c++/" + GCCVersion -+ + "/" + getTriple().getArchName().str() + "-w64-mingw32"); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../include/c++/" + GCCVersion -+ + "/backward"); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include/c++"); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include/c++/" + getTriple().getArchName().str() + "-w64-mingw32"); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().Dir + "/../" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include/c++/backward"); -+#else -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().SysRoot + "/usr/" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include/c++/" + GCCVersion); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().SysRoot + "/usr/" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include/c++/" + GCCVersion -+ + "/" + getTriple().getArchName().str() + "-w64-mingw32"); -+ addSystemInclude(DriverArgs, CC1Args, -+ getDriver().SysRoot + "/usr/" + getTriple().getArchName().str() + "-w64-mingw32" -+ + "/include/c++/" + GCCVersion + "/backward"); -+#endif -+} -diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h -index d5d0581..556afed 100644 ---- a/lib/Driver/ToolChains.h -+++ b/lib/Driver/ToolChains.h -@@ -751,6 +751,36 @@ - Tool *buildAssembler() const override; - }; - -+class LLVM_LIBRARY_VISIBILITY MinGW : public ToolChain { -+public: -+ MinGW(const Driver &D, const llvm::Triple &Triple, -+ const llvm::opt::ArgList &Args); -+ -+ bool IsIntegratedAssemblerDefault() const override; -+ bool IsUnwindTablesDefault() const override; -+ bool isPICDefault() const override; -+ bool isPIEDefault() const override; -+ bool isPICDefaultForced() const override; -+ bool UseSEHExceptions() const override; -+ -+ void -+ AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, -+ llvm::opt::ArgStringList &CC1Args) const override; -+ void -+ AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs, -+ llvm::opt::ArgStringList &CC1Args) const override; -+ -+protected: -+ Tool *buildLinker() const override; -+ Tool *buildAssembler() const override; -+ Tool *getTool(Action::ActionClass AC) const override; -+ -+private: -+ std::string GCCVersion; -+ mutable std::unique_ptr Preprocess; -+ mutable std::unique_ptr Compile; -+}; -+ - - class LLVM_LIBRARY_VISIBILITY XCore : public ToolChain { - public: -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index 892810e..a670502 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -7949,6 +7949,210 @@ - return new Command(JA, *this, Args.MakeArgString(Exec), CmdArgs); - } - -+/// MinGW Tools -+void MinGW::Assemble::ConstructJob(Compilation &C, const JobAction &JA, -+ const InputInfo &Output, -+ const InputInfoList &Inputs, -+ const ArgList &Args, -+ const char *LinkingOutput) const { -+ ArgStringList CmdArgs; -+ -+ if (getToolChain().getArch() == llvm::Triple::x86) { -+ CmdArgs.push_back("--32"); -+ } else if (getToolChain().getArch() == llvm::Triple::x86_64) { -+ CmdArgs.push_back("--64"); -+ } -+ -+ Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, -+ options::OPT_Xassembler); -+ -+ CmdArgs.push_back("-o"); -+ CmdArgs.push_back(Output.getFilename()); -+ -+ for (const auto &II : Inputs) -+ CmdArgs.push_back(II.getFilename()); -+ -+ const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); -+ C.addCommand(new Command(JA, *this, Exec, CmdArgs)); -+ -+ if (Args.hasArg(options::OPT_gsplit_dwarf)) -+ SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, -+ SplitDebugName(Args, Inputs)); -+} -+ -+void MinGW::Link::AddLibGCC(const ArgList &Args, ArgStringList &CmdArgs) const { -+ if (Args.hasArg(options::OPT_mthreads)) -+ CmdArgs.push_back("-lmingwthrd"); -+ CmdArgs.push_back("-lmingw32"); -+ if (Args.hasArg(options::OPT_shared) || -+ Args.hasArg(options::OPT_shared_libgcc)) { -+ CmdArgs.push_back("-lgcc_s"); -+ CmdArgs.push_back("-lgcc"); -+ } else { -+ CmdArgs.push_back("-lgcc"); -+ CmdArgs.push_back("-lgcc_eh"); -+ } -+ CmdArgs.push_back("-lmoldname"); -+ CmdArgs.push_back("-lmingwex"); -+ CmdArgs.push_back("-lmsvcrt"); -+} -+ -+void MinGW::Link::ConstructJob(Compilation &C, const JobAction &JA, -+ const InputInfo &Output, -+ const InputInfoList &Inputs, -+ const ArgList &Args, -+ const char *LinkingOutput) const { -+ const ToolChain &TC = getToolChain(); -+ const Driver &D = TC.getDriver(); -+ //const SanitizerArgs &Sanitize = TC.getSanitizerArgs(); -+ -+ ArgStringList CmdArgs; -+ -+ // Silence warning for "clang -g foo.o -o foo" -+ Args.ClaimAllArgs(options::OPT_g_Group); -+ // and "clang -emit-llvm foo.o -o foo" -+ Args.ClaimAllArgs(options::OPT_emit_llvm); -+ // and for "clang -w foo.o -o foo". Other warning options are already -+ // handled somewhere else. -+ Args.ClaimAllArgs(options::OPT_w); -+ -+ if (!D.SysRoot.empty()) -+ CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); -+ -+ if (Args.hasArg(options::OPT_s)) -+ CmdArgs.push_back("-s"); -+ -+ CmdArgs.push_back("-m"); -+ if (TC.getArch() == llvm::Triple::x86) -+ CmdArgs.push_back("i386pe"); -+ if (TC.getArch() == llvm::Triple::x86_64) -+ CmdArgs.push_back("i386pep"); -+ -+ if (Args.hasArg(options::OPT_mwindows)) { -+ CmdArgs.push_back("--subsystem"); -+ CmdArgs.push_back("windows"); -+ } else if (Args.hasArg(options::OPT_mconsole)) { -+ CmdArgs.push_back("--subsystem"); -+ CmdArgs.push_back("console"); -+ } -+ -+ if (Args.hasArg(options::OPT_static)) -+ CmdArgs.push_back("-Bstatic"); -+ else { -+ if (Args.hasArg(options::OPT_mdll)) -+ CmdArgs.push_back("--dll"); -+ else if (Args.hasArg(options::OPT_shared)) -+ CmdArgs.push_back("--shared"); -+ CmdArgs.push_back("-Bdynamic"); -+ if (Args.hasArg(options::OPT_mdll) || Args.hasArg(options::OPT_shared)) { -+ CmdArgs.push_back("-e"); -+ if (TC.getArch() == llvm::Triple::x86) -+ CmdArgs.push_back("_DllMainCRTStartup@12"); -+ else -+ CmdArgs.push_back("DllMainCRTStartup"); -+ CmdArgs.push_back("--enable-auto-image-base"); -+ } -+ } -+ -+ CmdArgs.push_back("-o"); -+ CmdArgs.push_back(Output.getFilename()); -+ -+ Args.AddAllArgs(CmdArgs, options::OPT_e); -+ // FIXME: add -N, -n flags -+ Args.AddLastArg(CmdArgs, options::OPT_r); -+ Args.AddLastArg(CmdArgs, options::OPT_s); -+ Args.AddLastArg(CmdArgs, options::OPT_t); -+ Args.AddAllArgs(CmdArgs, options::OPT_u_Group); -+ Args.AddLastArg(CmdArgs, options::OPT_Z_Flag); -+ -+ if (!Args.hasArg(options::OPT_nostdlib) && -+ !Args.hasArg(options::OPT_nostartfiles)) { -+ if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_mdll)) { -+ CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("dllcrt2.o"))); -+ } else { -+ if (Args.hasArg(options::OPT_municode)) -+ CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crt2u.o"))); -+ else -+ CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crt2.o"))); -+ } -+ if (Args.hasArg(options::OPT_pg)) -+ CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("gcrt2.o"))); -+ CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtbegin.o"))); -+ } -+ -+ Args.AddAllArgs(CmdArgs, options::OPT_L); -+ const ToolChain::path_list Paths = TC.getFilePaths(); -+ for (const auto &Path : Paths) -+ CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path)); -+ -+ AddLinkerInputs(TC, Inputs, Args, CmdArgs); -+ -+ // TODO: Add ASan stuff here -+ -+ // TODO: Add profile stuff here -+ -+ if (D.CCCIsCXX() && -+ !Args.hasArg(options::OPT_nostdlib) && -+ !Args.hasArg(options::OPT_nodefaultlibs)) { -+ bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) && -+ !Args.hasArg(options::OPT_static); -+ if (OnlyLibstdcxxStatic) -+ CmdArgs.push_back("-Bstatic"); -+ TC.AddCXXStdlibLibArgs(Args, CmdArgs); -+ if (OnlyLibstdcxxStatic) -+ CmdArgs.push_back("-Bdynamic"); -+ } -+ -+ if (!Args.hasArg(options::OPT_nostdlib)) { -+ if (!Args.hasArg(options::OPT_nodefaultlibs)) { -+ if (Args.hasArg(options::OPT_static)) -+ CmdArgs.push_back("--start-group"); -+ -+ if (Args.hasArg(options::OPT_fstack_protector) || -+ Args.hasArg(options::OPT_fstack_protector_strong) || -+ Args.hasArg(options::OPT_fstack_protector_all)) { -+ CmdArgs.push_back("-lssp_nonshared"); -+ CmdArgs.push_back("-lssp"); -+ } -+ if (Args.hasArg(options::OPT_fopenmp)) -+ CmdArgs.push_back("-lgomp"); -+ -+ AddLibGCC(Args, CmdArgs); -+ -+ if (Args.hasArg(options::OPT_pg)) -+ CmdArgs.push_back("-lgmon"); -+ -+ // TODO: remove unconditionally linking pthreads library -+ // Currently required for OpenMP and posix-threading libgcc -+ CmdArgs.push_back("-lpthread"); -+ -+ // add system libraries -+ if (Args.hasArg(options::OPT_mwindows)) { -+ CmdArgs.push_back("-lgdi32"); -+ CmdArgs.push_back("-lcomdlg32"); -+ } -+ CmdArgs.push_back("-ladvapi32"); -+ CmdArgs.push_back("-lshell32"); -+ CmdArgs.push_back("-luser32"); -+ CmdArgs.push_back("-lkernel32"); -+ -+ if (Args.hasArg(options::OPT_static)) -+ CmdArgs.push_back("--end-group"); -+ else -+ AddLibGCC(Args, CmdArgs); -+ } -+ -+ if (!Args.hasArg(options::OPT_nostartfiles)) { -+ // Add crtfastmath.o if available and fast math is enabled. -+ TC.AddFastMathRuntimeIfAvailable(Args, CmdArgs); -+ -+ CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o"))); -+ } -+ } -+ const char *Exec = -+ Args.MakeArgString(TC.GetProgramPath("ld")); -+ C.addCommand(new Command(JA, *this, Exec, CmdArgs)); -+} - - /// XCore Tools - // We pass assemble and link construction to the xcc tool. -diff --git a/lib/Driver/Tools.h b/lib/Driver/Tools.h -index 873969b..3265ce1 100644 ---- a/lib/Driver/Tools.h -+++ b/lib/Driver/Tools.h -@@ -613,6 +613,39 @@ - }; - } // end namespace visualstudio - -+ /// MinGW -- Directly call GNU Binutils assembler and linker -+namespace MinGW { -+ class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { -+ public: -+ Assemble(const ToolChain &TC) : Tool("MinGW::Assemble", "assembler", -+ TC) {} -+ -+ bool hasIntegratedCPP() const override { return false; } -+ -+ void ConstructJob(Compilation &C, const JobAction &JA, -+ const InputInfo &Output, -+ const InputInfoList &Inputs, -+ const llvm::opt::ArgList &TCArgs, -+ const char *LinkingOutput) const override; -+ }; -+ -+ class LLVM_LIBRARY_VISIBILITY Link : public Tool { -+ public: -+ Link(const ToolChain &TC) : Tool("MinGW::Link", "linker", TC) {} -+ -+ bool hasIntegratedCPP() const override { return false; } -+ bool isLinkJob() const override { return true; } -+ -+ void ConstructJob(Compilation &C, const JobAction &JA, -+ const InputInfo &Output, -+ const InputInfoList &Inputs, -+ const llvm::opt::ArgList &TCArgs, -+ const char *LinkingOutput) const override; -+ private: -+ void AddLibGCC(const llvm::opt::ArgList &Args, ArgStringList &CmdArgs) const; -+ }; -+} // end namespace MinGW -+ - namespace arm { - StringRef getARMFloatABI(const Driver &D, const llvm::opt::ArgList &Args, - const llvm::Triple &Triple); -diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp -index bb1fe2d..9877216 100644 ---- a/lib/Frontend/InitHeaderSearch.cpp -+++ b/lib/Frontend/InitHeaderSearch.cpp -@@ -82,11 +82,6 @@ - StringRef Arch, - StringRef Version); - -- /// AddMinGW64CXXPaths - Add the necessary paths to support -- /// libstdc++ of x86_64-w64-mingw32 aka mingw-w64. -- void AddMinGW64CXXPaths(StringRef Base, -- StringRef Version); -- - // AddDefaultCIncludePaths - Add paths that should always be searched. - void AddDefaultCIncludePaths(const llvm::Triple &triple, - const HeaderSearchOptions &HSOpts); -@@ -208,18 +203,6 @@ - CXXSystem, false); - } - --void InitHeaderSearch::AddMinGW64CXXPaths(StringRef Base, -- StringRef Version) { -- // Assumes Base is HeaderSearchOpts' ResourceDir -- AddPath(Base + "/../../../include/c++/" + Version, -- CXXSystem, false); -- AddPath(Base + "/../../../include/c++/" + Version + "/x86_64-w64-mingw32", -- CXXSystem, false); -- AddPath(Base + "/../../../include/c++/" + Version + "/i686-w64-mingw32", -- CXXSystem, false); -- AddPath(Base + "/../../../include/c++/" + Version + "/backward", -- CXXSystem, false); --} - - void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple, - const HeaderSearchOptions &HSOpts) { -@@ -232,6 +232,9 @@ - case llvm::Triple::OpenBSD: - case llvm::Triple::Bitrig: - break; -+ case llvm::Triple::Win32: -+ if (triple.getEnvironment() == llvm::Triple::GNU) -+ break; - default: - // FIXME: temporary hack: hard-coded paths. - AddPath("/usr/local/include", System, false); -@@ -269,7 +252,7 @@ - switch (os) { - case llvm::Triple::Linux: - llvm_unreachable("Include management is handled in the driver."); -- -+ break; - case llvm::Triple::Haiku: - AddPath("/boot/common/include", System, false); - AddPath("/boot/develop/headers/os", System, false); -@@ -309,30 +292,11 @@ - case llvm::Triple::Win32: - switch (triple.getEnvironment()) { - default: llvm_unreachable("Include management is handled in the driver."); -+ break; - case llvm::Triple::Cygnus: - AddPath("/usr/include/w32api", System, false); - break; - case llvm::Triple::GNU: -- // mingw-w64 crt include paths -- // /i686-w64-mingw32/include -- SmallString<128> P = StringRef(HSOpts.ResourceDir); -- llvm::sys::path::append(P, "../../../i686-w64-mingw32/include"); -- AddPath(P.str(), System, false); -- -- // /x86_64-w64-mingw32/include -- P.resize(HSOpts.ResourceDir.size()); -- llvm::sys::path::append(P, "../../../x86_64-w64-mingw32/include"); -- AddPath(P.str(), System, false); -- -- // mingw.org crt include paths -- // /include -- P.resize(HSOpts.ResourceDir.size()); -- llvm::sys::path::append(P, "../../../include"); -- AddPath(P.str(), System, false); -- AddPath("/mingw/include", System, false); --#if defined(LLVM_ON_WIN32) -- AddPath("c:/mingw/include", System, false); --#endif - break; - } - break; -@@ -340,7 +304,7 @@ - break; - } - -- if ( os != llvm::Triple::RTEMS ) -+ if ( os != llvm::Triple::RTEMS && !triple.isWindowsGNUEnvironment() ) - AddPath("/usr/include", ExternCSystem, false); - } - -@@ -404,26 +368,9 @@ - AddMinGWCPlusPlusIncludePaths("/usr/lib/gcc", "i686-pc-cygwin", "4.3.2"); - break; - case llvm::Triple::GNU: -- // mingw-w64 C++ include paths (i686-w64-mingw32 and x86_64-w64-mingw32) -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.7.0"); -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.7.1"); -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.7.2"); -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.7.3"); -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.8.0"); -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.8.1"); -- AddMinGW64CXXPaths(HSOpts.ResourceDir, "4.8.2"); -- // mingw.org C++ include paths --#if defined(LLVM_ON_WIN32) -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.7.0"); -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.7.1"); -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.7.2"); -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.7.3"); -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.8.0"); -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.8.1"); -- AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.8.2"); --#endif - break; - } -+ break; - case llvm::Triple::DragonFly: - if (llvm::sys::fs::exists("/usr/lib/gcc47")) - AddPath("/usr/include/c++/4.7", CXXSystem, false); diff --git a/mingw-w64-clang35/0004-gcc5-compatibility.patch b/mingw-w64-clang35/0004-gcc5-compatibility.patch deleted file mode 100644 index 7cb2817561..0000000000 --- a/mingw-w64-clang35/0004-gcc5-compatibility.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: include/llvm/ADT/IntrusiveRefCntPtr.h -=================================================================== ---- include/llvm/ADT/IntrusiveRefCntPtr.h (revision 218294) -+++ include/llvm/ADT/IntrusiveRefCntPtr.h (revision 218295) -@@ -197,6 +197,9 @@ - private: - void retain() { if (Obj) IntrusiveRefCntPtrInfo::retain(Obj); } - void release() { if (Obj) IntrusiveRefCntPtrInfo::release(Obj); } -+ -+ template -+ friend class IntrusiveRefCntPtr; - }; - - template diff --git a/mingw-w64-clang35/PKGBUILD b/mingw-w64-clang35/PKGBUILD deleted file mode 100644 index 787bea78c8..0000000000 --- a/mingw-w64-clang35/PKGBUILD +++ /dev/null @@ -1,256 +0,0 @@ -# Maintainer: Alexey Pavlov - -_realname=clang -pkgbase="mingw-w64-${_realname}35" -pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}35" - "${MINGW_PACKAGE_PREFIX}-clang-analyzer35" - "${MINGW_PACKAGE_PREFIX}-clang-tools-extra35" - "${MINGW_PACKAGE_PREFIX}-llvm35" - ) -pkgver=3.5.2 -pkgrel=1 -pkgdesc="LC language family frontend for LLVM (mingw-w64)" -arch=('any') -url="https://llvm.org/" -license=("custom:University of Illinois/NCSA Open Source License") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" - "${MINGW_PACKAGE_PREFIX}-pkg-config" - "${MINGW_PACKAGE_PREFIX}-python3-sphinx" - "python2" "tar") -depends=("${MINGW_PACKAGE_PREFIX}-gcc") -options=('staticlibs' 'strip') -source=(https://releases.llvm.org/${pkgver}/llvm-${pkgver}.src.tar.xz{,.sig} - https://releases.llvm.org/${pkgver}/cfe-${pkgver}.src.tar.xz{,.sig} - https://releases.llvm.org/${pkgver}/clang-tools-extra-${pkgver}.src.tar.xz{,.sig} - 0000-llvm-3.5.0-force-link-pass.o.patch - 0001-clang-fabs.patch - 0002-clang-win64-seh.patch - 0003-clang-mingw-driver.patch - 0004-gcc5-compatibility.patch) -sha256sums=('44196156d5749eb4b4224fe471a29cc3984df92570a4a89fa859f7394fc0c575' - 'SKIP' - '4feb575f74fb3a74b6245400460230141bf610f235ef3a25008cfe6137828620' - 'SKIP' - 'f21a374d74b194d8c984546266491b518859b5f12ed9abd49337b8060d3fc004' - 'SKIP' - '5702053503d49448598eda1b8dc8c263f0df9ad7486833273e3987b5dec25a19' - '614a076dc65b400910b190f4e3d26fdebd20885cfd482f7f8464469808e3beac' - '6e1168e5c9cba875ef7e87ccfd3060c3a0db6b5e2c3f1fa9fdb4d0eaea465025' - '2f49bba3acb0e45b0c3374537f2f9036891013c751930437c80472d8d8d8e2a7' - 'c964eecdfb0cbf4d2a59a553d7bdb3f16e70d8910e6aa7e9c768828ecbdfcea2') - -noextract=(cfe-${pkgver}.src.tar.xz) - -prepare() { - plain "Extracting clang-${pkgver}.src.tar.xz due to symlink(s) without pre-existing target(s)" - [[ -d ${srcdir}/cfe-${pkgver} ]] && rm -rf ${srcdir}/cfe-${pkgver} - [[ -d ${srcdir}/cfe-${pkgver} ]] || tar -xJvf ${srcdir}/cfe-${pkgver}.src.tar.xz -C ${srcdir} || true - - sleep 10 - cd "${srcdir}/llvm-${pkgver}.src" - # At the present, clang must reside inside the LLVM source code tree to build - # See https://bugs.llvm.org/show_bug.cgi?id=4840 - [[ -d tools/clang ]] && rm -rf tools/clang - mv "${srcdir}/cfe-${pkgver}.src" tools/clang - - [[ -d tools/clang/tools/extra ]] && rm -rf tools/clang/tools/extra - mv "${srcdir}/clang-tools-extra-${pkgver}.src" tools/clang/tools/extra - - # Fix docs installation directory - sed -i 's:$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \ - Makefile.config.in - - # Fix definition of LLVM_CMAKE_DIR in LLVMConfig.cmake - sed -i '/@LLVM_CONFIG_CMAKE_DIR@/s:$(PROJ_cmake):$(PROJ_prefix)/share/llvm/cmake:' \ - cmake/modules/Makefile - - # Fix build with GCC 4.9 (patch from Debian) - # https://bugs.llvm.org/show_bug.cgi?id=20067 - patch -p1 -i "${srcdir}/0000-llvm-3.5.0-force-link-pass.o.patch" - patch -p0 -i "${srcdir}/0004-gcc5-compatibility.patch" - - cd tools/clang - patch -p1 -i ${srcdir}/0001-clang-fabs.patch - patch -p1 -i ${srcdir}/0002-clang-win64-seh.patch - patch -p1 -i ${srcdir}/0003-clang-mingw-driver.patch -} - -build() { - cd "${srcdir}" - mkdir -p build-${MINGW_CHOST} - cd build-${MINGW_CHOST} - echo 'ac_cv_have_decl_strerror_s=${ac_cv_have_decl_strerror_s=no}' > config.cache - - # Include location of libffi headers in CPPFLAGS - CPPFLAGS+=" $(pkg-config --cflags libffi)" - - ../llvm-${pkgver}.src/configure \ - -C \ - --prefix=${MINGW_PREFIX} \ - --build=${MINGW_CHOST} \ - --host=${MINGW_CHOST} \ - --with-sysroot=${MINGW_PREFIX} \ - --enable-targets=x86,x86_64,arm,mips \ - --enable-optimized \ - --disable-assertions \ - --disable-pthreads \ - --with-python=/usr/bin/python2 \ - --enable-libffi \ - --enable-docs - - make - make -C ../llvm-${pkgver}.src/docs -f Makefile.sphinx man - make -C ../llvm-${pkgver}.src/docs -f Makefile.sphinx html - make -C ../llvm-${pkgver}.src/tools/clang/docs -f Makefile.sphinx html - setup -} - -check() { - plain "skipping make check..." - #cd "$srcdir/build-${MINGW_CHOST}" - #make check -} - -setup() { - local destdir=${srcdir}/dest - [[ -d ${destdir} ]] && rm -rf ${destdir} - mkdir -p ${destdir} - - # CLANG-TOOLS-EXTRA - cd "$srcdir/build-${MINGW_CHOST}/tools/clang/tools/extra" - make DESTDIR="$destdir/clang-tools-extra" install - # Fix permissions of static libs - chmod -x ${destdir}/clang-tools-extra${MINGW_PREFIX}/lib/*.a - install -Dm644 ${srcdir}/llvm-${pkgver}.src/tools/clang/tools/extra/LICENSE.TXT "$destdir/clang-tools-extra${MINGW_PREFIX}/share/licenses/clang-tools-extra/LICENSE" - cd ${srcdir} - mv ${srcdir}/build-${MINGW_CHOST}/tools/clang/tools/extra ${srcdir}/clang-tools-extra-${MINGW_CHOST} - mv ${srcdir}/llvm-${pkgver}.src/tools/clang/tools/extra ${srcdir}/clang-tools-extra-${pkgver} - - # CLANG - cd "$srcdir/build-${MINGW_CHOST}/tools/clang" - make -j1 DESTDIR="$destdir/clang" install - # Fix mis-named clang doc folder (is llvm, should be clang) - mv ${destdir}/clang${MINGW_PREFIX}/share/doc/llvm ${destdir}/clang${MINGW_PREFIX}/share/doc/clang - - # Install html docs - install -d "${destdir}"/clang${MINGW_PREFIX}/share/doc/clang/html - cp -rf ${srcdir}/llvm-${pkgver}.src/tools/clang/docs/_build/html/* "${destdir}"/clang${MINGW_PREFIX}/share/doc/clang/html/ - rm -r "${destdir}"/clang${MINGW_PREFIX}/share/doc/clang/html/_sources - - # CLANG-ANAYLYSER - install -d ${destdir}/clang-analyzer${MINGW_PREFIX}/{bin,lib/clang-analyzer} - for _tool in scan-{build,view}; do - cp -r ${srcdir}/llvm-${pkgver}.src/tools/clang/tools/${_tool} ${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer/ - ln -s ${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer/${_tool}/${_tool} ${destdir}/clang-analyzer${MINGW_PREFIX}/bin/ - done - - # scan-build looks for clang within the same directory - install -d ${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer/scan-build/ - ln -s ${destdir}/clang${MINGW_PREFIX}/bin/clang.exe ${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer/scan-build/ - - # Relocate man page - install -d ${destdir}/clang-analyzer${MINGW_PREFIX}/share/man/man1 - mv ${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer/scan-build/scan-build.1 \ - ${destdir}/clang-analyzer${MINGW_PREFIX}/share/man/man1/ - - # Compile Python scripts - python2 -m compileall "${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer" - python2 -O -m compileall "${destdir}/clang-analyzer${MINGW_PREFIX}/lib/clang-analyzer" - install -Dm644 ${srcdir}/llvm-${pkgver}.src/tools/clang/LICENSE.TXT "${destdir}/clang-analyzer${MINGW_PREFIX}/share/licenses/clang-analyzer/LICENSE" - - # LLVM - cd ${srcdir} - # Move clang out of the way *before* installing llvm, both src and build. We'll put build back afterwards to allow re-packaging. - # but the src move is undoing what prepare() did. - mv "${srcdir}/build-${MINGW_CHOST}/tools/clang" "${srcdir}/clang-${MINGW_CHOST}" - mv "${srcdir}/llvm-${pkgver}.src/tools/clang" "${srcdir}/clang-${pkgver}" # Put src back where it was (clang) - cd "${srcdir}/build-${MINGW_CHOST}" - make -j1 DESTDIR="${destdir}/llvm" install - - # Install man pages - install -d "${destdir}"/llvm${MINGW_PREFIX}/share/man/man1 - cp ${srcdir}/llvm-${pkgver}.src/docs/_build/man/*.1 "${destdir}"/llvm${MINGW_PREFIX}/share/man/man1/ - - # Install html docs - install -d "${destdir}"/llvm${MINGW_PREFIX}/share/doc/llvm/html - cp -rf ${srcdir}/llvm-${pkgver}.src/docs/_build/html/* "${destdir}"/llvm${MINGW_PREFIX}/share/doc/llvm/html/ - rm -r "${destdir}"/llvm${MINGW_PREFIX}/share/doc/llvm/html/_sources - - # Install CMake stuff - install -d "${destdir}"/llvm${MINGW_PREFIX}/share/llvm/cmake/{modules,platforms} - install -Dm644 ${srcdir}/llvm-${pkgver}.src/cmake/modules/*.cmake "${destdir}"/llvm${MINGW_PREFIX}/share/llvm/cmake/modules/ - install -Dm644 ${srcdir}/llvm-${pkgver}.src/cmake/platforms/*.cmake "${destdir}"/llvm${MINGW_PREFIX}/share/llvm/cmake/platforms/ - - # Move all back - mv "${srcdir}/clang-${MINGW_CHOST}" "${srcdir}/build-${MINGW_CHOST}/tools/clang" - mv "${srcdir}/clang-${pkgver}" "${srcdir}/llvm-${pkgver}.src/tools/clang" - mv "${srcdir}/clang-tools-extra-${MINGW_CHOST}" "${srcdir}/build-${MINGW_CHOST}/tools/clang/tools/extra" - mv "${srcdir}/clang-tools-extra-${pkgver}" "${srcdir}/llvm-${pkgver}.src/tools/clang/tools/extra" -} - -package_clang35(){ - pkgdesc="C language family frontend for LLVM" - depends=("${MINGW_PACKAGE_PREFIX}-llvm35=${pkgver}-${pkgrel}") - conflicts=(${MINGW_PACKAGE_PREFIX}-clang) - - mv ${srcdir}/dest/clang/* ${pkgdir} -} - -package_llvm35(){ - pkgdesc="Low Level Virtual Machine" - depends=("${MINGW_PACKAGE_PREFIX}-gcc") - conflicts=(${MINGW_PACKAGE_PREFIX}-llvm) - install=llvm-${CARCH}.install - - mv ${srcdir}/dest/llvm/* ${pkgdir} -} - -package_clang-analyzer35() { - pkgdesc="A source code analysis framework" - url="https://clang-analyzer.llvm.org/" - depends=("${MINGW_PACKAGE_PREFIX}-clang35=${pkgver}-${pkgrel}" "${MINGW_PACKAGE_PREFIX}-python2") - conflicts=(${MINGW_PACKAGE_PREFIX}-clang-analyzer) - - mv ${srcdir}/dest/clang-analyzer/* ${pkgdir} -} - -package_clang-tools-extra35() { - pkgdesc="Extra tools built using Clang's tooling APIs" - url="https://clang.llvm.org/" - depends=("${MINGW_PACKAGE_PREFIX}-clang35=${pkgver}-${pkgrel}") - conflicts=(${MINGW_PACKAGE_PREFIX}-clang) - - mv ${srcdir}/dest/clang-tools-extra/* ${pkgdir} -} - -package_mingw-w64-i686-clang35(){ - package_clang35 -} - -package_mingw-w64-i686-clang-analyzer35(){ - package_clang-analyzer35 -} - -package_mingw-w64-i686-clang-tools-extra35(){ - package_clang-tools-extra35 -} - -package_mingw-w64-i686-llvm35(){ - package_llvm35 -} - -package_mingw-w64-x86_64-clang35(){ - package_clang35 -} - -package_mingw-w64-x86_64-clang-analyzer35(){ - package_clang-analyzer35 -} - -package_mingw-w64-x86_64-clang-tools-extra35(){ - package_clang-tools-extra35 -} - -package_mingw-w64-x86_64-llvm35(){ - package_llvm35 -} diff --git a/mingw-w64-clang35/llvm-i686.install b/mingw-w64-clang35/llvm-i686.install deleted file mode 100644 index 083c192bc2..0000000000 --- a/mingw-w64-clang35/llvm-i686.install +++ /dev/null @@ -1,10 +0,0 @@ -post_install() { - cd mingw32 - local _prefix=$(pwd -W) - cd - - sed -e "s|/mingw32|${_prefix}|g" -i mingw32/share/llvm/cmake/LLVMConfig.cmake -} - -post_upgrade() { - post_install -} diff --git a/mingw-w64-clang35/llvm-x86_64.install b/mingw-w64-clang35/llvm-x86_64.install deleted file mode 100644 index a49c817881..0000000000 --- a/mingw-w64-clang35/llvm-x86_64.install +++ /dev/null @@ -1,10 +0,0 @@ -post_install() { - cd mingw64 - local _prefix=$(pwd -W) - cd - - sed -e "s|/mingw64|${_prefix}|g" -i mingw64/share/llvm/cmake/LLVMConfig.cmake -} - -post_upgrade() { - post_install -} diff --git a/mingw-w64-libc++/PKGBUILD b/mingw-w64-libc++/PKGBUILD deleted file mode 100644 index 45ced1e83f..0000000000 --- a/mingw-w64-libc++/PKGBUILD +++ /dev/null @@ -1,44 +0,0 @@ -# Maintainer: Alexey Pavlov - -_realname=libc++ -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=3.5.0 -pkgrel=1 -pkgdesc='A new implementation of the C++ standard library, targeting C++11.' -url='https://libcxx.llvm.org/' -license=('custom:University of Illinois/NCSA Open Source License') -arch=('any') -# gcc-libs needed for libgcc_s, because mingw-w64 doesn't use a pure compiler-rt clang -depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" - #"${MINGW_PACKAGE_PREFIX}-libc++abi" - ) -makedepends=("${MINGW_PACKAGE_PREFIX}-clang" - "${MINGW_PACKAGE_PREFIX}-cmake") -source=(https://releases.llvm.org/$pkgver/libcxx-${pkgver}.src.tar.xz{,.sig}) -sha256sums=('8045da845a63e50c201939eda8290d45e5752a9385d4d626214300d4a4d0b1c0' - 'SKIP') -#install=${pkgname}.install - -prepare() { - cd ${srcdir}/libcxx-${pkgver}.src -} - -build() { - [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} - mkdir -p ${srcdir}/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST} - - export CXX="${MINGW_PREFIX}/bin/clang++" - export CC="${MINGW_PREFIX}/bin/clang" - ${MINGW_PREFIX}/bin/cmake.exe \ - -G"MSYS Makefiles" \ - -DCMAKE_INSTALL_PREFIX:PATH=${pkgdir}${MINGW_PREFIX} \ - -DCMAKE_BUILD_TYPE=Release \ - ../libcxx-${pkgver}.src - make -} - -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make -j1 DESTDIR="$pkgdir" install -} diff --git a/mingw-w64-libc++abi/PKGBUILD b/mingw-w64-libc++abi/PKGBUILD deleted file mode 100644 index 2f3a8bc542..0000000000 --- a/mingw-w64-libc++abi/PKGBUILD +++ /dev/null @@ -1,45 +0,0 @@ -# Maintainer: Alexey Pavlov - -_realname=libc++abi -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=3.5.0 -pkgrel=1 -pkgdesc='A new implementation of low level support for a standard C++ library' -url='https://libcxxabi.llvm.org' -license=('custom:University of Illinois/NCSA Open Source License') -arch=('any') -# gcc-libs needed for libgcc_s, because mingw-w64 doesn't use a pure compiler-rt clang -depends=() -makedepends=("${MINGW_PACKAGE_PREFIX}-clang" - "${MINGW_PACKAGE_PREFIX}-cmake") -source=(https://releases.llvm.org/$pkgver/libcxxabi-${pkgver}.src.tar.xz{,.sig} - https://releases.llvm.org/$pkgver/libcxx-${pkgver}.src.tar.xz{,.sig}) -sha256sums=('53c6be6a2dd2371f6d92c968cb8a59fbe13c6153583025433df067f706bfacd9' - 'SKIP' - '8045da845a63e50c201939eda8290d45e5752a9385d4d626214300d4a4d0b1c0' - 'SKIP') - -prepare() { - cd ${srcdir}/libcxxabi-${pkgver}.src -} - -build() { - [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} - mkdir -p ${srcdir}/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST} - - export CXX="${MINGW_PREFIX}/bin/clang++" - export CC="${MINGW_PREFIX}/bin/clang" - ${MINGW_PREFIX}/bin/cmake.exe \ - -G"MSYS Makefiles" \ - -DCMAKE_INSTALL_PREFIX:PATH=${pkgdir}${MINGW_PREFIX} \ - -DCMAKE_BUILD_TYPE=Release \ - -DLIBCXXABI_LIBCXX_INCLUDES=${srcdir}/libcxx-${pkgver}.src/include \ - ../libcxxabi-${pkgver}.src - make -} - -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make -j1 DESTDIR="$pkgdir" install -}