r300555 - Driver: Better detection of mingw-gcc
Alex L via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 18 07:49:12 PDT 2017
I think you've got the wrong Phabricator link in the commit log.
On 18 April 2017 at 15:27, Martell Malone via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
> Author: martell
> Date: Tue Apr 18 09:27:36 2017
> New Revision: 300555
>
> URL: http://llvm.org/viewvc/llvm-project?rev=300555&view=rev
> Log:
> Driver: Better detection of mingw-gcc
>
> Stop blindly searching for "gcc.exe" on windows.
> Stop assuming "/usr" on unix, fixes cross compiling.
>
> Reviewers: mati865, yaron.keren
>
> Subscribers: ismail, rnk
>
> Differential revision: https://reviews.llvm.org/D15005
>
> Modified:
> cfe/trunk/lib/Driver/ToolChains/MinGW.cpp
> cfe/trunk/lib/Driver/ToolChains/MinGW.h
>
> Modified: cfe/trunk/lib/Driver/ToolChains/MinGW.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/
> ToolChains/MinGW.cpp?rev=300555&r1=300554&r2=300555&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Driver/ToolChains/MinGW.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChains/MinGW.cpp Tue Apr 18 09:27:36 2017
> @@ -285,28 +285,30 @@ void toolchains::MinGW::findGccLibDir()
> }
> }
>
> +llvm::ErrorOr<std::string> toolchains::MinGW::findGcc() {
> + llvm::SmallVector<llvm::SmallString<32>, 2> Gccs;
> + Gccs.emplace_back(getTriple().getArchName());
> + Gccs[0] += "-w64-mingw32-gcc";
> + Gccs.emplace_back("mingw32-gcc");
> + // Please do not add "gcc" here
> + for (StringRef CandidateGcc : Gccs)
> + if (llvm::ErrorOr<std::string> GPPName = llvm::sys::findProgramByName(
> CandidateGcc))
> + return GPPName;
> + return make_error_code(std::errc::no_such_file_or_directory);
> +}
> +
> toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple,
> const ArgList &Args)
> : ToolChain(D, Triple, Args), CudaInstallation(D, Triple, Args) {
> getProgramPaths().push_back(getDriver().getInstalledDir());
>
> -// In Windows there aren't any standard install locations, we search
> -// for gcc on the PATH. In Linux the base is always /usr.
> -#ifdef LLVM_ON_WIN32
> if (getDriver().SysRoot.size())
> Base = getDriver().SysRoot;
> - else if (llvm::ErrorOr<std::string> GPPName =
> - llvm::sys::findProgramByName("gcc"))
> + else if (llvm::ErrorOr<std::string> GPPName = findGcc())
> Base = llvm::sys::path::parent_path(
> llvm::sys::path::parent_path(GPPName.get()));
> else
> Base = llvm::sys::path::parent_path(getDriver().getInstalledDir());
> -#else
> - if (getDriver().SysRoot.size())
> - Base = getDriver().SysRoot;
> - else
> - Base = "/usr";
> -#endif
>
> Base += llvm::sys::path::get_separator();
> findGccLibDir();
>
> Modified: cfe/trunk/lib/Driver/ToolChains/MinGW.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/
> ToolChains/MinGW.h?rev=300555&r1=300554&r2=300555&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Driver/ToolChains/MinGW.h (original)
> +++ cfe/trunk/lib/Driver/ToolChains/MinGW.h Tue Apr 18 09:27:36 2017
> @@ -93,6 +93,7 @@ private:
> mutable std::unique_ptr<tools::gcc::Preprocessor> Preprocessor;
> mutable std::unique_ptr<tools::gcc::Compiler> Compiler;
> void findGccLibDir();
> + llvm::ErrorOr<std::string> findGcc();
> };
>
> } // end namespace toolchains
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170418/1bd064c5/attachment.html>
More information about the cfe-commits
mailing list