summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorDouglas Katzman <dougk@google.com>2015-11-18 16:24:46 +0000
committerDouglas Katzman <dougk@google.com>2015-11-18 16:24:46 +0000
commit674a31243bebfab1aaf3897e07108147f90c54b8 (patch)
tree6e24867a94bf1695851db7330e24750c22ec21cf /clang/lib/Driver/ToolChains.cpp
parentc02670ed50f009eeb24ad7f0fe00cbf887e008d0 (diff)
downloadbcm5719-llvm-674a31243bebfab1aaf3897e07108147f90c54b8.tar.gz
bcm5719-llvm-674a31243bebfab1aaf3897e07108147f90c54b8.zip
[Myriad]: insert -L paths into linker cmd only when they exist.
Differential Revision: http://reviews.llvm.org/D14754 llvm-svn: 253467
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r--clang/lib/Driver/ToolChains.cpp41
1 files changed, 20 insertions, 21 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 78a611e56d4..8485d0fe945 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -4367,6 +4367,26 @@ MyriadToolChain::MyriadToolChain(const Driver &D, const llvm::Triple &Triple,
case llvm::Triple::shave:
GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"});
}
+
+ if (GCCInstallation.isValid()) {
+ // The contents of LibDir are independent of the version of gcc.
+ // This contains libc, libg (a superset of libc), libm, libstdc++, libssp.
+ SmallString<128> LibDir(GCCInstallation.getParentLibPath());
+ if (Triple.getArch() == llvm::Triple::sparcel)
+ llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib/le");
+ else
+ llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib");
+ addPathIfExists(D, LibDir, getFilePaths());
+
+ // This directory contains crt{i,n,begin,end}.o as well as libgcc.
+ // These files are tied to a particular version of gcc.
+ SmallString<128> CompilerSupportDir(GCCInstallation.getInstallPath());
+ // There are actually 4 choices: {le,be} x {fpu,nofpu}
+ // but as this toolchain is for LEON sparc, it can assume FPU.
+ if (Triple.getArch() == llvm::Triple::sparcel)
+ llvm::sys::path::append(CompilerSupportDir, "le");
+ addPathIfExists(D, CompilerSupportDir, getFilePaths());
+ }
}
MyriadToolChain::~MyriadToolChain() {}
@@ -4413,27 +4433,6 @@ Tool *MyriadToolChain::SelectTool(const JobAction &JA) const {
}
}
-void MyriadToolChain::getCompilerSupportDir(std::string &Dir) const {
- // This directory contains crt{i,n,begin,end}.o as well as libgcc.
- // These files are tied to a particular version of gcc.
- SmallString<128> Result(GCCInstallation.getInstallPath());
- // There are actually 4 choices: {le,be} x {fpu,nofpu}
- // but as this toolchain is for LEON sparc, it can assume FPU.
- if (this->getTriple().getArch() == llvm::Triple::sparcel)
- llvm::sys::path::append(Result, "le");
- Dir.assign(Result.str());
-}
-void MyriadToolChain::getBuiltinLibDir(std::string &Dir) const {
- // The contents of LibDir are independent of the version of gcc.
- // This contains libc, libg (a superset of libc), libm, libstdc++, libssp.
- SmallString<128> Result(GCCInstallation.getParentLibPath());
- if (this->getTriple().getArch() == llvm::Triple::sparcel)
- llvm::sys::path::append(Result, "../sparc-myriad-elf/lib/le");
- else
- llvm::sys::path::append(Result, "../sparc-myriad-elf/lib");
- Dir.assign(Result.str());
-}
-
Tool *MyriadToolChain::buildLinker() const {
return new tools::Myriad::Linker(*this);
}
OpenPOWER on IntegriCloud