[PATCH] D37727: Driver: Remove custom MinGW linker detection

Martin Storsjö via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 12 04:57:40 PDT 2017


mstorsjo added a comment.

In https://reviews.llvm.org/D37727#867753, @martell wrote:

> In https://reviews.llvm.org/D37727#867627, @mstorsjo wrote:
>
> > I'm not sure I like this direction. In my setups, a build-time default isn't right since I'm using the same clang builds for both native-on-linux building (with the default `ld` as linker) and cross-building targeting windows (using `ldd`), and keeping the code that reads `-fuse-ld=` is essential.
>
>
> The `GetLinkerPath` function in `lib/Driver/ToolChain.cpp` that I replaced this with already checks `-fuse-ld` and does everything we need correctly.


Yup, figured it out later after reading it more thorhoughly later.

>> I haven't followed the changes closely on how this works with the build-time `CLANG_DEFAULT_LINKER`, but can't we just make the current code check this define if `-fuse-ld` isn't set?
> 
> If you specifically want a toolchain that uses lld by default for MINGW but ld for the platform and or host you should override the `getDefaultLinker` function in the Mingw driver with an out of tree patch.
>  This is now what I do in my own builds since applying this patch.

I do the same by adding `-rtlib=compiler-rt -stdlib=libc++ -fuse-ld=lld -Qunused-arguments` in the frontend script wrapper (a wrapper named `<arch>-w64-mingw32-clang` that just calls `clang -target <arch>-w64-mingw32 -rtlib=compiler-rt -stdlib=libc++ -fuse-ld=lld -Qunused-arguments`.


Repository:
  rL LLVM

https://reviews.llvm.org/D37727





More information about the cfe-commits mailing list