Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Oct 2009 20:40:05 +0000 (UTC)
From:      Roman Divacky <rdivacky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r198526 - in projects/clangbsd/contrib/llvm/tools/clang: include/clang/Driver lib/Driver
Message-ID:  <200910272040.n9RKe5L4041350@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rdivacky
Date: Tue Oct 27 20:40:05 2009
New Revision: 198526
URL: http://svn.freebsd.org/changeset/base/198526

Log:
  Implement parts of -B, namely prefixing of library searching that we need
  when building 32bit libs on amd64.

Modified:
  projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Driver.h
  projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Options.def
  projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp

Modified: projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Driver.h
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Driver.h	Tue Oct 27 19:37:37 2009	(r198525)
+++ projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Driver.h	Tue Oct 27 20:40:05 2009	(r198526)
@@ -111,6 +111,9 @@ private:
   std::list<std::string> TempFiles;
   std::list<std::string> ResultFiles;
 
+  /// -B prefix
+  std::string Prefix;
+
 public:
   Driver(const char *_Name, const char *_Dir,
          const char *_DefaultHostTriple,
@@ -191,6 +194,8 @@ public:
   /// PrintVersion - Print the driver version.
   void PrintVersion(const Compilation &C, llvm::raw_ostream &OS) const;
 
+  std::string GetPrefix() const;
+
   /// GetFilePath - Lookup \arg Name in the list of file search paths.
   ///
   /// \arg TC - The tool chain for additional information on

Modified: projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Options.def
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Options.def	Tue Oct 27 19:37:37 2009	(r198525)
+++ projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/Options.def	Tue Oct 27 20:40:05 2009	(r198526)
@@ -254,7 +254,7 @@ OPTION("--write-dependencies", _write_de
 OPTION("--write-user-dependencies", _write_user_dependencies, Flag, INVALID, MMD, "", 0, 0, 0)
 OPTION("--", _, Joined, INVALID, f, "u", 0, 0, 0)
 OPTION("-A", A, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-B", B, JoinedOrSeparate, INVALID, INVALID, "u", 0, 0, 0)
+OPTION("-B", B, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
 OPTION("-CC", CC, Flag, INVALID, INVALID, "", 0, 0, 0)
 OPTION("-C", C, Flag, INVALID, INVALID, "", 0, 0, 0)
 OPTION("-D", D, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	Tue Oct 27 19:37:37 2009	(r198525)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	Tue Oct 27 20:40:05 2009	(r198526)
@@ -219,6 +219,14 @@ Compilation *Driver::BuildCompilation(in
   if (!HandleImmediateArgs(*C))
     return C;
 
+  // HACK
+  if (C->getArgs().hasArg(options::OPT_B)) {
+     Arg *B_dir = C->getArgs().getLastArg(options::OPT_B);
+     Prefix = B_dir->getValue(C->getArgs());
+  } else {
+     Prefix = "";
+  }
+
   // Construct the list of abstract actions to perform for this compilation. We
   // avoid passing a Compilation here simply to enforce the abstraction that
   // pipelining is not host or toolchain dependent (other than the driver driver
@@ -1130,6 +1138,10 @@ void Driver::BuildJobsForAction(Compilat
   }
 }
 
+std::string Driver::GetPrefix() const {
+   return Prefix;
+}
+
 const char *Driver::GetNamedOutputPath(Compilation &C,
                                        const JobAction &JA,
                                        const char *BaseInput,
@@ -1183,6 +1195,12 @@ const char *Driver::GetNamedOutputPath(C
 
 std::string Driver::GetFilePath(const char *Name, const ToolChain &TC) const {
   const ToolChain::path_list &List = TC.getFilePaths();
+  if (!Prefix.empty()) {
+    llvm::sys::Path P(Prefix);
+    P.appendComponent(Name);
+    if (P.exists())
+      return P.str();
+  }
   for (ToolChain::path_list::const_iterator
          it = List.begin(), ie = List.end(); it != ie; ++it) {
     llvm::sys::Path P(*it);
@@ -1197,6 +1215,12 @@ std::string Driver::GetFilePath(const ch
 std::string Driver::GetProgramPath(const char *Name, const ToolChain &TC,
                                    bool WantFile) const {
   const ToolChain::path_list &List = TC.getProgramPaths();
+  if (!Prefix.empty()) {
+    llvm::sys::Path P(Prefix);
+    P.appendComponent(Name);
+    if (WantFile ? P.exists() : P.canExecute())
+      return P.str();
+  }
   for (ToolChain::path_list::const_iterator
          it = List.begin(), ie = List.end(); it != ie; ++it) {
     llvm::sys::Path P(*it);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910272040.n9RKe5L4041350>