summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-11-08 19:43:37 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-11-08 19:43:37 +0000
commit27b8c4f3fb87148c56fb8dbb96474d8e8b98d6b8 (patch)
tree6f30b1d6b10797642faf4f4d967f250140a3ed12 /clang/lib/Driver/ToolChains.cpp
parent9ee220915b5f4be5213bd3ae39085753f80c26d4 (diff)
downloadbcm5719-llvm-27b8c4f3fb87148c56fb8dbb96474d8e8b98d6b8.tar.gz
bcm5719-llvm-27b8c4f3fb87148c56fb8dbb96474d8e8b98d6b8.zip
Misc fixes for clang driver on Mips Linux. Patch by Simon Atanasyan.
llvm-svn: 144108
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r--clang/lib/Driver/ToolChains.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index c3861efd16a..e5f82bab7db 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -1191,6 +1191,20 @@ Generic_GCC::GCCInstallationDetector::GCCInstallationDetector(const Driver &D)
};
LibDirs.append(X86LibDirs, X86LibDirs + llvm::array_lengthof(X86LibDirs));
Triples.append(X86Triples, X86Triples + llvm::array_lengthof(X86Triples));
+ } else if (HostArch == llvm::Triple::mips) {
+ static const char *const MIPSLibDirs[] = { "/lib" };
+ static const char *const MIPSTriples[] = { "mips-linux-gnu" };
+ LibDirs.append(MIPSLibDirs,
+ MIPSLibDirs + llvm::array_lengthof(MIPSLibDirs));
+ Triples.append(MIPSTriples,
+ MIPSTriples + llvm::array_lengthof(MIPSTriples));
+ } else if (HostArch == llvm::Triple::mipsel) {
+ static const char *const MIPSELLibDirs[] = { "/lib" };
+ static const char *const MIPSELTriples[] = { "mipsel-linux-gnu" };
+ LibDirs.append(MIPSELLibDirs,
+ MIPSELLibDirs + llvm::array_lengthof(MIPSELLibDirs));
+ Triples.append(MIPSELTriples,
+ MIPSELTriples + llvm::array_lengthof(MIPSELTriples));
} else if (HostArch == llvm::Triple::ppc) {
static const char *const PPCLibDirs[] = { "/lib32", "/lib" };
static const char *const PPCTriples[] = {
@@ -1773,6 +1787,14 @@ static std::string getMultiarchTriple(const llvm::Triple TargetTriple,
if (llvm::sys::fs::exists(SysRoot + "/lib/x86_64-linux-gnu"))
return "x86_64-linux-gnu";
return TargetTriple.str();
+ case llvm::Triple::mips:
+ if (llvm::sys::fs::exists(SysRoot + "/lib/mips-linux-gnu"))
+ return "mips-linux-gnu";
+ return TargetTriple.str();
+ case llvm::Triple::mipsel:
+ if (llvm::sys::fs::exists(SysRoot + "/lib/mipsel-linux-gnu"))
+ return "mipsel-linux-gnu";
+ return TargetTriple.str();
}
}
@@ -1829,6 +1851,8 @@ Linux::Linux(const HostInfo &Host, const llvm::Triple &Triple)
// to the link paths.
path_list &Paths = getFilePaths();
const bool Is32Bits = (getArch() == llvm::Triple::x86 ||
+ getArch() == llvm::Triple::mips ||
+ getArch() == llvm::Triple::mipsel ||
getArch() == llvm::Triple::ppc);
const std::string Suffix32 = Arch == llvm::Triple::x86_64 ? "/32" : "";
OpenPOWER on IntegriCloud