diff options
| -rw-r--r-- | clang/include/clang/Driver/Driver.h | 3 | ||||
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 18 | 
2 files changed, 14 insertions, 7 deletions
| diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h index f01698c816b..03fa0ef972d 100644 --- a/clang/include/clang/Driver/Driver.h +++ b/clang/include/clang/Driver/Driver.h @@ -74,7 +74,8 @@ public:    /// functionality.    /// FIXME: This type of customization should be removed in favor of the    /// universal driver when it is ready. -  std::string PrefixDir; +  typedef llvm::SmallVector<std::string, 4> prefix_list; +  prefix_list PrefixDirs;    /// Default host triple.    std::string DefaultHostTriple; diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 6edc46cdc18..a4f6c3ffa10 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -281,8 +281,12 @@ Compilation *Driver::BuildCompilation(int argc, const char **argv) {      DefaultHostTriple = A->getValue(*Args);    if (const Arg *A = Args->getLastArg(options::OPT_ccc_install_dir))      Dir = InstalledDir = A->getValue(*Args); -  if (const Arg *A = Args->getLastArg(options::OPT_B)) -    PrefixDir = A->getValue(*Args); +  for (arg_iterator it = Args->filtered_begin(options::OPT_B), +         ie = Args->filtered_end(); it != ie; ++it) { +    const Arg *A = *it; +    A->claim(); +    PrefixDirs.push_back(A->getValue(*Args, 0)); +  }    Host = GetHostInfo(DefaultHostTriple.c_str()); @@ -1237,8 +1241,9 @@ const char *Driver::GetNamedOutputPath(Compilation &C,  std::string Driver::GetFilePath(const char *Name, const ToolChain &TC) const {    // Respect a limited subset of the '-Bprefix' functionality in GCC by    // attempting to use this prefix when lokup up program paths. -  if (!PrefixDir.empty()) { -    llvm::sys::Path P(PrefixDir); +  for (Driver::prefix_list::const_iterator it = PrefixDirs.begin(), +       ie = PrefixDirs.end(); it != ie; ++it) { +    llvm::sys::Path P(*it);      P.appendComponent(Name);      bool Exists;      if (!llvm::sys::fs::exists(P.str(), Exists) && Exists) @@ -1262,8 +1267,9 @@ std::string Driver::GetProgramPath(const char *Name, const ToolChain &TC,                                     bool WantFile) const {    // Respect a limited subset of the '-Bprefix' functionality in GCC by    // attempting to use this prefix when lokup up program paths. -  if (!PrefixDir.empty()) { -    llvm::sys::Path P(PrefixDir); +  for (Driver::prefix_list::const_iterator it = PrefixDirs.begin(), +       ie = PrefixDirs.end(); it != ie; ++it) { +    llvm::sys::Path P(*it);      P.appendComponent(Name);      bool Exists;      if (WantFile ? !llvm::sys::fs::exists(P.str(), Exists) && Exists | 

