From: Chandler Carruth Date: Wed, 25 Jan 2012 11:24:24 +0000 (+0000) Subject: The Linux pattern of adding all the search paths that exist doesn't seem X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00646ba867d63beeeb7124984795182cd5cc8b67;p=clang The Linux pattern of adding all the search paths that exist doesn't seem to suit the FreeBSD folks. Take them back to something closer to the old behavior. We test whether the /usr/lib32 directory exists (within the SysRoot), and use it if so, otherwise use /usr/lib. FreeBSD folks, let me know if this causes any problems, or if you have further tweaks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148953 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 533e4f821c..44f51e4c5d 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1622,23 +1622,19 @@ Tool &OpenBSD::SelectTool(const Compilation &C, const JobAction &JA, return *T; } -static void addPathIfExists(Twine Path, ToolChain::path_list &Paths) { - if (llvm::sys::fs::exists(Path)) Paths.push_back(Path.str()); -} - /// FreeBSD - FreeBSD tool chain which can call as(1) and ld(1) directly. FreeBSD::FreeBSD(const Driver &D, const llvm::Triple& Triple) : Generic_ELF(D, Triple) { - // When targeting 32-bit platforms, look for libraries in '/usr/lib32' first; - // for 64-bit hosts that's where they will live. We fall back to '/usr/lib' - // for the remaining cases. - if (Triple.getArch() == llvm::Triple::x86 || - Triple.getArch() == llvm::Triple::ppc) - addPathIfExists(getDriver().SysRoot + "/usr/lib32", getFilePaths()); - - addPathIfExists(getDriver().SysRoot + "/usr/lib", getFilePaths()); + // When targeting 32-bit platforms, look for '/usr/lib32' first and fall back + // to '/usr/lib' for the remaining cases. + if ((Triple.getArch() == llvm::Triple::x86 || + Triple.getArch() == llvm::Triple::ppc) && + llvm::sys::fs::exists(getDriver().SysRoot + "/usr/lib32")) + getFilePaths().push_back(getDriver().SysRoot + "/usr/lib32"); + else + getFilePaths().push_back(getDriver().SysRoot + "/usr/lib"); } Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA, @@ -1968,6 +1964,10 @@ static std::string getMultiarchTriple(const llvm::Triple TargetTriple, } } +static void addPathIfExists(Twine Path, ToolChain::path_list &Paths) { + if (llvm::sys::fs::exists(Path)) Paths.push_back(Path.str()); +} + Linux::Linux(const Driver &D, const llvm::Triple &Triple) : Generic_ELF(D, Triple) { llvm::Triple::ArchType Arch = Triple.getArch();