diff options
author | Douglas Katzman <dougk@google.com> | 2015-11-18 16:24:46 +0000 |
---|---|---|
committer | Douglas Katzman <dougk@google.com> | 2015-11-18 16:24:46 +0000 |
commit | 674a31243bebfab1aaf3897e07108147f90c54b8 (patch) | |
tree | 6e24867a94bf1695851db7330e24750c22ec21cf /clang/lib/Driver/ToolChains.cpp | |
parent | c02670ed50f009eeb24ad7f0fe00cbf887e008d0 (diff) | |
download | bcm5719-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.cpp | 41 |
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); } |