Previously, LLVM was directly editing `CMAKE_EXE_LINKER_FLAGS`. This is a user-facing CMake cache variable not meant to be modified by project code. This was causing issues for downstream consumers building non-C/C++ targets as part of the LLVM build. Modern CMake provides `add_link_options()`, a cleaner way to set linker flags that propagate to every target in a directory tree. Generator expressions and the `LINKER:` prefix syntax ensure that this is only applied to executable targets with the proper language and linker argument wrapping.
See docs/CMake.html for instructions on how to build LLVM with CMake.