From: Simon Atanasyan Date: Thu, 19 May 2016 15:07:21 +0000 (+0000) Subject: [driver] Do not pass install dir to the MultilibSet include dirs callback X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d7b456c53f9c32212bb5cd9644e50de65585bb1b;p=clang [driver] Do not pass install dir to the MultilibSet include dirs callback All additional include directories are relative to the toolchain install folder. So let's do not pass this folder to each callback to simplify and slightly reduce the code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@270069 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Multilib.h b/include/clang/Driver/Multilib.h index bc2c061df7..a2df8f1c29 100644 --- a/include/clang/Driver/Multilib.h +++ b/include/clang/Driver/Multilib.h @@ -99,8 +99,7 @@ public: typedef multilib_list::iterator iterator; typedef multilib_list::const_iterator const_iterator; - typedef std::function(StringRef InstallDir, - const Multilib &M)> + typedef std::function(const Multilib &M)> IncludeDirsFunc; typedef llvm::function_ref FilterCallback; diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 1a1c0f86cf..a46cb08003 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1923,16 +1923,12 @@ static bool findMIPSMultilibs(const Driver &D, const llvm::Triple &TargetTriple, .Maybe(Nan2008) .FilterOut(".*sof/nan2008") .FilterOut(NonExistent) - .setIncludeDirsCallback([](StringRef InstallDir, - const Multilib &M) { - std::vector Dirs; - Dirs.push_back((InstallDir + "/include").str()); - std::string SysRootInc = - InstallDir.str() + "/../../../../sysroot"; + .setIncludeDirsCallback([](const Multilib &M) { + std::vector Dirs({"/include"}); if (StringRef(M.includeSuffix()).startswith("/uclibc")) - Dirs.push_back(SysRootInc + "/uclibc/usr/include"); + Dirs.push_back("/../../../../sysroot/uclibc/usr/include"); else - Dirs.push_back(SysRootInc + "/usr/include"); + Dirs.push_back("/../../../../sysroot/usr/include"); return Dirs; }); } @@ -1954,12 +1950,9 @@ static bool findMIPSMultilibs(const Driver &D, const llvm::Triple &TargetTriple, MuslMipsMultilibs = MultilibSet().Either(MArchMipsR2, MArchMipselR2); // Specify the callback that computes the include directories. - MuslMipsMultilibs.setIncludeDirsCallback([](StringRef InstallDir, - const Multilib &M) { - std::vector Dirs; - Dirs.push_back( - (InstallDir + "/../sysroot" + M.osSuffix() + "/usr/include").str()); - return Dirs; + MuslMipsMultilibs.setIncludeDirsCallback([](const Multilib &M) { + return std::vector( + {"/../sysroot" + M.osSuffix() + "/usr/include"}); }); } @@ -2006,16 +1999,13 @@ static bool findMIPSMultilibs(const Driver &D, const llvm::Triple &TargetTriple, .FilterOut("/mips16.*/64") .FilterOut("/micromips.*/64") .FilterOut(NonExistent) - .setIncludeDirsCallback([](StringRef InstallDir, - const Multilib &M) { - std::vector Dirs; - Dirs.push_back((InstallDir + "/include").str()); - std::string SysRootInc = - InstallDir.str() + "/../../../../mips-linux-gnu"; + .setIncludeDirsCallback([](const Multilib &M) { + std::vector Dirs({"/include"}); if (StringRef(M.includeSuffix()).startswith("/uclibc")) - Dirs.push_back(SysRootInc + "/libc/uclibc/usr/include"); + Dirs.push_back( + "/../../../../mips-linux-gnu/libc/uclibc/usr/include"); else - Dirs.push_back(SysRootInc + "/libc/usr/include"); + Dirs.push_back("/../../../../mips-linux-gnu/libc/usr/include"); return Dirs; }); } @@ -2059,13 +2049,9 @@ static bool findMIPSMultilibs(const Driver &D, const llvm::Triple &TargetTriple, .Maybe(MAbi64) .Maybe(LittleEndian) .FilterOut(NonExistent) - .setIncludeDirsCallback([](StringRef InstallDir, - const Multilib &M) { - std::vector Dirs; - Dirs.push_back((InstallDir + "/include").str()); - Dirs.push_back( - (InstallDir + "/../../../../sysroot/usr/include").str()); - return Dirs; + .setIncludeDirsCallback([](const Multilib &M) { + return std::vector( + {"/include", "/../../../../sysroot/usr/include"}); }); } @@ -2540,9 +2526,9 @@ void MipsLLVMToolChain::AddClangSystemIncludeArgs( const auto &Callback = Multilibs.includeDirsCallback(); if (Callback) { - const auto IncludePaths = Callback(D.getInstalledDir(), SelectedMultilib); - for (const auto &Path : IncludePaths) - addExternCSystemIncludeIfExists(DriverArgs, CC1Args, Path); + for (const auto &Path : Callback(SelectedMultilib)) + addExternCSystemIncludeIfExists(DriverArgs, CC1Args, + D.getInstalledDir() + Path); } } @@ -2587,11 +2573,10 @@ void MipsLLVMToolChain::AddClangCXXStdlibIncludeArgs( const auto &Callback = Multilibs.includeDirsCallback(); if (Callback) { - const auto IncludePaths = - Callback(getDriver().getInstalledDir(), SelectedMultilib); - for (const auto &Path : IncludePaths) { - if (llvm::sys::fs::exists(Path + "/c++/v1")) { - addSystemInclude(DriverArgs, CC1Args, Path + "/c++/v1"); + for (std::string Path : Callback(SelectedMultilib)) { + Path = getDriver().getInstalledDir() + Path + "/c++/v1"; + if (llvm::sys::fs::exists(Path)) { + addSystemInclude(DriverArgs, CC1Args, Path); break; } } @@ -3969,10 +3954,9 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (GCCInstallation.isValid()) { const auto &Callback = Multilibs.includeDirsCallback(); if (Callback) { - const auto IncludePaths = Callback(GCCInstallation.getInstallPath(), - GCCInstallation.getMultilib()); - for (const auto &Path : IncludePaths) - addExternCSystemIncludeIfExists(DriverArgs, CC1Args, Path); + for (const auto &Path : Callback(GCCInstallation.getMultilib())) + addExternCSystemIncludeIfExists( + DriverArgs, CC1Args, GCCInstallation.getInstallPath() + Path); } }