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.