Index: lib/Driver/ToolChains/AMDGPU.cpp =================================================================== --- lib/Driver/ToolChains/AMDGPU.cpp +++ lib/Driver/ToolChains/AMDGPU.cpp @@ -29,6 +29,7 @@ std::string Linker = getToolChain().GetProgramPath(getShortName()); ArgStringList CmdArgs; AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); CmdArgs.push_back("-shared"); CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); Index: lib/Driver/ToolChains/AVR.cpp =================================================================== --- lib/Driver/ToolChains/AVR.cpp +++ lib/Driver/ToolChains/AVR.cpp @@ -36,6 +36,7 @@ std::string Linker = getToolChain().GetProgramPath(getShortName()); ArgStringList CmdArgs; AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Linker), Index: lib/Driver/ToolChains/Ananas.cpp =================================================================== --- lib/Driver/ToolChains/Ananas.cpp +++ lib/Driver/ToolChains/Ananas.cpp @@ -81,6 +81,7 @@ } Args.AddAllArgs(CmdArgs, options::OPT_L); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_e, options::OPT_s, Index: lib/Driver/ToolChains/BareMetal.cpp =================================================================== --- lib/Driver/ToolChains/BareMetal.cpp +++ lib/Driver/ToolChains/BareMetal.cpp @@ -175,6 +175,7 @@ auto &TC = static_cast(getToolChain()); AddLinkerInputs(TC, Inputs, Args, CmdArgs, JA); + AddLibraryPaths(TC, Args, CmdArgs); CmdArgs.push_back("-Bstatic"); Index: lib/Driver/ToolChains/CloudABI.cpp =================================================================== --- lib/Driver/ToolChains/CloudABI.cpp +++ lib/Driver/ToolChains/CloudABI.cpp @@ -70,6 +70,7 @@ } Args.AddAllArgs(CmdArgs, options::OPT_L); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_e, options::OPT_s, Index: lib/Driver/ToolChains/CommonArgs.h =================================================================== --- lib/Driver/ToolChains/CommonArgs.h +++ lib/Driver/ToolChains/CommonArgs.h @@ -23,6 +23,9 @@ void addPathIfExists(const Driver &D, const Twine &Path, ToolChain::path_list &Paths); +void AddLibraryPaths(const ToolChain &TC, const llvm::opt::ArgList &Args, + llvm::opt::ArgStringList &CmdArgs); + void AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs, const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, const JobAction &JA); Index: lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- lib/Driver/ToolChains/CommonArgs.cpp +++ lib/Driver/ToolChains/CommonArgs.cpp @@ -134,6 +134,13 @@ } } +void tools::AddLibraryPaths(const ToolChain &TC, const ArgList &Args, + ArgStringList &CmdArgs) { + // Only supported on native toolchains. + if (!TC.isCrossCompiling()) + addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH"); +} + void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs, const ArgList &Args, ArgStringList &CmdArgs, const JobAction &JA) { @@ -178,12 +185,6 @@ A.renderAsInput(Args, CmdArgs); } } - - // LIBRARY_PATH - included following the user specified library paths. - // and only supported on native toolchains. - if (!TC.isCrossCompiling()) { - addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH"); - } } void tools::AddTargetFeature(const ArgList &Args, Index: lib/Driver/ToolChains/CrossWindows.cpp =================================================================== --- lib/Driver/ToolChains/CrossWindows.cpp +++ lib/Driver/ToolChains/CrossWindows.cpp @@ -162,6 +162,7 @@ } Args.AddAllArgs(CmdArgs, options::OPT_L); + AddLibraryPaths(TC, Args, CmdArgs); TC.AddFilePathLibArgs(Args, CmdArgs); AddLinkerInputs(TC, Inputs, Args, CmdArgs, JA); Index: lib/Driver/ToolChains/Darwin.cpp =================================================================== --- lib/Driver/ToolChains/Darwin.cpp +++ lib/Driver/ToolChains/Darwin.cpp @@ -500,6 +500,7 @@ Args.AddAllArgs(CmdArgs, options::OPT_L); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); // Build the input file for -filelist (list of linker input files) in case we // need it later for (const auto &II : Inputs) { Index: lib/Driver/ToolChains/DragonFly.cpp =================================================================== --- lib/Driver/ToolChains/DragonFly.cpp +++ lib/Driver/ToolChains/DragonFly.cpp @@ -117,6 +117,7 @@ {options::OPT_L, options::OPT_T_Group, options::OPT_e}); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { CmdArgs.push_back("-L/usr/lib/gcc50"); Index: lib/Driver/ToolChains/FreeBSD.cpp =================================================================== --- lib/Driver/ToolChains/FreeBSD.cpp +++ lib/Driver/ToolChains/FreeBSD.cpp @@ -223,6 +223,7 @@ } Args.AddAllArgs(CmdArgs, options::OPT_L); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, options::OPT_T_Group); Args.AddAllArgs(CmdArgs, options::OPT_e); Index: lib/Driver/ToolChains/Fuchsia.cpp =================================================================== --- lib/Driver/ToolChains/Fuchsia.cpp +++ lib/Driver/ToolChains/Fuchsia.cpp @@ -98,6 +98,7 @@ Args.AddAllArgs(CmdArgs, options::OPT_L); Args.AddAllArgs(CmdArgs, options::OPT_u); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); addSanitizerRuntimes(ToolChain, Args, CmdArgs); Index: lib/Driver/ToolChains/Gnu.cpp =================================================================== --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -450,6 +450,7 @@ Args.AddAllArgs(CmdArgs, options::OPT_L); Args.AddAllArgs(CmdArgs, options::OPT_u); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); if (D.isUsingLTO()) Index: lib/Driver/ToolChains/Hexagon.cpp =================================================================== --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -324,6 +324,8 @@ //---------------------------------------------------------------------------- // Library Search Paths //---------------------------------------------------------------------------- + AddLibraryPaths(HTC, Args, CmdArgs); + const ToolChain::path_list &LibPaths = HTC.getFilePaths(); for (const auto &LibPath : LibPaths) CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath)); Index: lib/Driver/ToolChains/MinGW.cpp =================================================================== --- lib/Driver/ToolChains/MinGW.cpp +++ lib/Driver/ToolChains/MinGW.cpp @@ -185,6 +185,7 @@ } Args.AddAllArgs(CmdArgs, options::OPT_L); + AddLibraryPaths(TC, Args, CmdArgs); TC.AddFilePathLibArgs(Args, CmdArgs); AddLinkerInputs(TC, Inputs, Args, CmdArgs, JA); Index: lib/Driver/ToolChains/Minix.cpp =================================================================== --- lib/Driver/ToolChains/Minix.cpp +++ lib/Driver/ToolChains/Minix.cpp @@ -67,6 +67,7 @@ {options::OPT_L, options::OPT_T_Group, options::OPT_e}); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); getToolChain().addProfileRTLibs(Args, CmdArgs); Index: lib/Driver/ToolChains/Myriad.cpp =================================================================== --- lib/Driver/ToolChains/Myriad.cpp +++ lib/Driver/ToolChains/Myriad.cpp @@ -165,6 +165,7 @@ options::OPT_e, options::OPT_s, options::OPT_t, options::OPT_Z_Flag, options::OPT_r}); + AddLibraryPaths(TC, Args, CmdArgs); TC.AddFilePathLibArgs(Args, CmdArgs); bool NeedsSanitizerDeps = addSanitizerRuntimes(TC, Args, CmdArgs); Index: lib/Driver/ToolChains/NaCl.cpp =================================================================== --- lib/Driver/ToolChains/NaCl.cpp +++ lib/Driver/ToolChains/NaCl.cpp @@ -124,6 +124,7 @@ Args.AddAllArgs(CmdArgs, options::OPT_L); Args.AddAllArgs(CmdArgs, options::OPT_u); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) Index: lib/Driver/ToolChains/NetBSD.cpp =================================================================== --- lib/Driver/ToolChains/NetBSD.cpp +++ lib/Driver/ToolChains/NetBSD.cpp @@ -249,6 +249,7 @@ bool NeedsSanitizerDeps = addSanitizerRuntimes(getToolChain(), Args, CmdArgs); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); unsigned Major, Minor, Micro; getToolChain().getTriple().getOSVersion(Major, Minor, Micro); Index: lib/Driver/ToolChains/OpenBSD.cpp =================================================================== --- lib/Driver/ToolChains/OpenBSD.cpp +++ lib/Driver/ToolChains/OpenBSD.cpp @@ -165,6 +165,8 @@ } } + AddLibraryPaths(getToolChain(), Args, CmdArgs); + std::string Triple = getToolChain().getTripleString(); if (Triple.substr(0, 6) == "x86_64") Triple.replace(0, 6, "amd64"); Index: lib/Driver/ToolChains/PS4CPU.cpp =================================================================== --- lib/Driver/ToolChains/PS4CPU.cpp +++ lib/Driver/ToolChains/PS4CPU.cpp @@ -25,6 +25,7 @@ using namespace llvm::opt; using clang::driver::tools::AddLinkerInputs; +using clang::driver::tools::AddLibraryPaths; void tools::PS4cpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { @@ -125,6 +126,7 @@ CmdArgs.push_back("--no-demangle"); AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); + AddLibraryPaths(ToolChain, Args, CmdArgs); if (Args.hasArg(options::OPT_pthread)) { CmdArgs.push_back("-lpthread"); @@ -210,6 +212,7 @@ } Args.AddAllArgs(CmdArgs, options::OPT_L); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, options::OPT_T_Group); Args.AddAllArgs(CmdArgs, options::OPT_e); Index: lib/Driver/ToolChains/Solaris.cpp =================================================================== --- lib/Driver/ToolChains/Solaris.cpp +++ lib/Driver/ToolChains/Solaris.cpp @@ -92,6 +92,7 @@ Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); } + AddLibraryPaths(getToolChain(), Args, CmdArgs); getToolChain().AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group, Index: lib/Driver/ToolChains/WebAssembly.cpp =================================================================== --- lib/Driver/ToolChains/WebAssembly.cpp +++ lib/Driver/ToolChains/WebAssembly.cpp @@ -48,6 +48,7 @@ Args.AddAllArgs(CmdArgs, options::OPT_L); Args.AddAllArgs(CmdArgs, options::OPT_u); + AddLibraryPaths(ToolChain, Args, CmdArgs); ToolChain.AddFilePathLibArgs(Args, CmdArgs); if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) Index: lib/Driver/ToolChains/XCore.cpp =================================================================== --- lib/Driver/ToolChains/XCore.cpp +++ lib/Driver/ToolChains/XCore.cpp @@ -79,6 +79,7 @@ CmdArgs.push_back("-fexceptions"); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + AddLibraryPaths(getToolChain(), Args, CmdArgs); const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("xcc")); C.addCommand(llvm::make_unique(JA, *this, Exec, CmdArgs, Inputs));