[CMake] Add compiler-rt header files to the list of sources for targets
when building with an IDE so that header files show up in the UI.
This massively improves the development workflow in IDEs.
To implement this a new function compiler_rt_process_sources(...) has
been added that adds header files to the list of sources when the
generator is an IDE. For non-IDE generators (e.g. Ninja/Makefile) no
changes are made to the list of source files.
The function can be passed a list of headers via the
ADDITIONAL_HEADERS argument. For each runtime library a list of
explicit header files has been added and passed via
ADDITIONAL_HEADERS. For tsan and sanitizer_common a list of
headers was already present but it was stale and has been updated
to reflect the current state of the source tree.
The original version of this patch used file globbing (*.{h,inc,def})
to find the headers but the approach was changed due to this being a
CMake anti-pattern (if the list of headers changes CMake won't
automatically re-generate if globbing is used).
The LLVM repo contains a similar function named llvm_process_sources()
but we don't use it here for several reasons:
- It depends on the LLVM_ENABLE_OPTION cache variable which is not set in standalone compiler-rt builds.
- We would have to include(LLVMProcessSources) which I'd like to avoid because it would include a bunch of stuff we don't need.
Please rename "crt" to "compiler_rt" (throughout the patch). I don't think we're using "crt" to mean "compiler-rt" anywhere in the codebase.