bazel-contrib / toolchains_llvm

LLVM toolchain for bazel
Apache License 2.0
291 stars 209 forks source link

Make LLD work with clang18 #379

Closed dzbarsky closed 2 weeks ago

dzbarsky commented 2 weeks ago

Clang has custom code to inject the -platform_version flag when invoking lld. This takes effect when we pass -fuse-ld=lld, which we currently don't do for lld because want to point at the hermetic one. Switch to using --ld-path instead, which is supported since Clang12.

The current structure relies on sanitize_option generating 1 option per input, so I had to add the extra option check in the loop around it.

This is why LLD didn't work for me when we first added this support.

Kudos to @keith for the analysis above :)

I think we should follow-up soon and make LLD the default; that should allow a lot of simplification