r330244 - [MinGW] Look for a cross sysroot relative to the clang binary
Martin Storsjö via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 18 10:39:55 PDT 2018
Hi Douglas,
I wasn't able to reproducd the issue myself, but I think I know what the
issue was, and I committed a fix attempt.
// Martin
On Wed, 18 Apr 2018, Martin Storsjö via cfe-commits wrote:
> Hi Douglas,
>
> Yes, I saw it - trying to look into it right now.
>
> // Martin
>
> On Wed, 18 Apr 2018, douglas.yung at sony.com wrote:
>
>> Hi Martin,
>>
>> Your commit is causing a few test failures on the PS4 Windows bot,
> can you take a look?
>>
>>
> http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/16544
>>
>> Failing Tests (13):
>> Clang :: CodeGenCXX/mingw-w64-exceptions.c
>> Clang :: Driver/clang-translation.c
>> Clang :: Driver/cxa-atexit.cpp
>> Clang :: Driver/default-image-name.c
>> Clang :: Driver/fsjlj-exceptions.c
>> Clang :: Driver/incremental-linker-compatible.c
>> Clang :: Driver/mingw-libgcc.c
>> Clang :: Driver/mingw-msvcrt.c
>> Clang :: Driver/no-integrated-as-win.c
>> Clang :: Driver/pic.c
>> Clang :: Driver/windows-pic.cpp
>> Clang :: Index/index-attrs.c
>> Clang :: Index/index-attrs.cpp
>>
>> Douglas Yung
>>
>>> -----Original Message-----
>>> From: cfe-commits [mailto:cfe-commits-bounces at lists.llvm.org] On
> Behalf Of
>>> Martin Storsjo via cfe-commits
>>> Sent: Wednesday, April 18, 2018 1:47
>>> To: cfe-commits at lists.llvm.org
>>> Subject: r330244 - [MinGW] Look for a cross sysroot relative to
> the clang
>>> binary
>>>
>>> Author: mstorsjo
>>> Date: Wed Apr 18 01:47:26 2018
>>> New Revision: 330244
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=330244&view=rev
>>> Log:
>>> [MinGW] Look for a cross sysroot relative to the clang binary
>>>
>>> If found, prefer this over looking for a similar gcc later in the
>>> system path.
>>>
>>> Differential Revision: https://reviews.llvm.org/D45504
>>>
>>> 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=330244&r1=330243&r2=3302
>>> 44&view=diff
>>>
> ==============================================================================
>>> --- cfe/trunk/lib/Driver/ToolChains/MinGW.cpp (original)
>>> +++ cfe/trunk/lib/Driver/ToolChains/MinGW.cpp Wed Apr 18 01:47:26
> 2018
>>> @@ -275,7 +275,8 @@ void toolchains::MinGW::findGccLibDir()
>>> Archs.emplace_back(getTriple().getArchName());
>>> Archs[0] += "-w64-mingw32";
>>> Archs.emplace_back("mingw32");
>>> - Arch = Archs[0].str();
>>> + if (Arch.empty())
>>> + Arch = Archs[0].str();
>>> // lib: Arch Linux, Ubuntu, Windows
>>> // lib64: openSUSE Linux
>>> for (StringRef CandidateLib : {"lib", "lib64"}) {
>>> @@ -302,6 +303,24 @@ llvm::ErrorOr<std::string> toolchains::M
>>> return make_error_code(std::errc::no_such_file_or_directory);
>>> }
>>>
>>> +llvm::ErrorOr<std::string>
> toolchains::MinGW::findClangRelativeSysroot() {
>>> + llvm::SmallVector<llvm::SmallString<32>, 2> Subdirs;
>>> + Subdirs.emplace_back(getTriple().str());
>>> + Subdirs.emplace_back(getTriple().getArchName());
>>> + Subdirs[1] += "-w64-mingw32";
>>> + Twine ClangRoot =
>>> + llvm::sys::path::parent_path(getDriver().getInstalledDir())
> +
>>> + llvm::sys::path::get_separator();
>>> + for (StringRef CandidateSubdir : Subdirs) {
>>> + Twine Subdir = ClangRoot + CandidateSubdir;
>>> + if (llvm::sys::fs::is_directory(Subdir)) {
>>> + Arch = CandidateSubdir;
>>> + return Subdir.str();
>>> + }
>>> + }
>>> + 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) {
>>> @@ -309,6 +328,10 @@ toolchains::MinGW::MinGW(const Driver &D
>>>
>>> if (getDriver().SysRoot.size())
>>> Base = getDriver().SysRoot;
>>> + // Look for <clang-bin>/../<triplet>; if found, use
> <clang-bin>/.. as the
>>> + // base as it could still be a base for a gcc setup with
> libgcc.
>>> + else if (llvm::ErrorOr<std::string> TargetSubdir =
>>> findClangRelativeSysroot())
>>> + Base = llvm::sys::path::parent_path(TargetSubdir.get());
>>> else if (llvm::ErrorOr<std::string> GPPName = findGcc())
>>> Base = llvm::sys::path::parent_path(
>>> llvm::sys::path::parent_path(GPPName.get()));
>>>
>>> Modified: cfe/trunk/lib/Driver/ToolChains/MinGW.h
>>> URL: http://llvm.org/viewvc/llvm-
>>>
> project/cfe/trunk/lib/Driver/ToolChains/MinGW.h?rev=330244&r1=330243&r2=330244
>>> &view=diff
>>>
> ==============================================================================
>>> --- cfe/trunk/lib/Driver/ToolChains/MinGW.h (original)
>>> +++ cfe/trunk/lib/Driver/ToolChains/MinGW.h Wed Apr 18 01:47:26
> 2018
>>> @@ -96,6 +96,7 @@ private:
>>> mutable std::unique_ptr<tools::gcc::Compiler> Compiler;
>>> void findGccLibDir();
>>> llvm::ErrorOr<std::string> findGcc();
>>> + llvm::ErrorOr<std::string> findClangRelativeSysroot();
>>> };
>>>
>>> } // end namespace toolchains
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list