[cfe-commits] r148940 - /cfe/trunk/lib/Driver/ToolChains.cpp

Chandler Carruth chandlerc at gmail.com
Wed Jan 25 00:10:33 PST 2012

Author: chandlerc
Date: Wed Jan 25 02:10:33 2012
New Revision: 148940

URL: http://llvm.org/viewvc/llvm-project?rev=148940&view=rev
Have FreeBSD use even more of the same smarts as Linux is now using for
adding search paths. Add them only when they exist, and prefix the paths
with the sysroot. This will allow targeting a FreeBSD sysroot on
a non-FreeBSD host machine, and perhaps more importantly should allow
testing the FreeBSD driver's behavior similarly to the Linux tests with
a fake tree of files in the regression test suite.

I don't have FreeBSD systems handy to build up the list of files that
should be used here, but this is the basic functionality and I'm hoping
Roman or someone from the community can contribute the actual test


Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=148940&r1=148939&r2=148940&view=diff
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Jan 25 02:10:33 2012
@@ -1623,6 +1623,10 @@
   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 HostInfo &Host, const llvm::Triple& Triple)
@@ -1633,9 +1637,9 @@
   // for the remaining cases.
   if (Triple.getArch() == llvm::Triple::x86 ||
       Triple.getArch() == llvm::Triple::ppc)
-    getFilePaths().push_back("/usr/lib32");
+    addPathIfExists(getDriver().SysRoot + "/usr/lib32", getFilePaths());
-  getFilePaths().push_back("/usr/lib");
+  addPathIfExists(getDriver().SysRoot + "/usr/lib", getFilePaths());
 Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA,
@@ -1929,10 +1933,6 @@
   return UnknownDistro;
-static void addPathIfExists(Twine Path, ToolChain::path_list &Paths) {
-  if (llvm::sys::fs::exists(Path)) Paths.push_back(Path.str());
 /// \brief Get our best guess at the multiarch triple for a target.
 /// Debian-based systems are starting to use a multiarch setup where they use

More information about the cfe-commits mailing list