]> granicus.if.org Git - clang/commitdiff
The Linux pattern of adding all the search paths that exist doesn't seem
authorChandler Carruth <chandlerc@gmail.com>
Wed, 25 Jan 2012 11:24:24 +0000 (11:24 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 25 Jan 2012 11:24:24 +0000 (11:24 +0000)
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

lib/Driver/ToolChains.cpp

index 533e4f821cddc4c64db7b90eb013b5e354ae138a..44f51e4c5d5ae1deba3b7a1ae61d765a9c65ecf9 100644 (file)
@@ -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();