`include-what-you-use` diagnostics, in practice, are specific to
the environment's compiler and standard library. Update includes
to satisfy IWYU for our CI job under Debian 13. Some patterns:
* Types named in virtual `override` signatures no longer require
includes since the overridden signature already names them.
* A function argument's type needs to be included even if its constructor
is called only by implicit conversion. For example, constructing a
`std::function` from a lambda now requires `<functional>`.
* Some prior mysterious `<type_traits>` inclusions are no longer required.
Create a single place to store target data to prevent duplication.
This moves `targetType` and `targetLabels` out of the snippet files
and into a target map in the `cmakeContent` file referenced by each
snippet.
Fixes: #27244
We were writing "-deps" alias in the generated file
even if we didn't have any dependencies, which is excessive
and makes FASTBuild do more work then necessary.
Two optimizations here:
1. Remove non-mandatory aliases (I only used them for debugging).
2. Make objects lists' name shorter
Both of those improvements contribute to the decrease of the FASTBuild DB file, since they are getting serialized.
List of changes:
1. Remove unneeded aliases
2. Don't write VS Solution on Apple
3. Use external script to perform clean
4. Fix small bug when empty environment was
resulting in invalid file.
It greatly reduces the size of .fdb file and
makes FASTBuild run much faster in different cases.
Compilation is complicated. Caching / distribution is even more
complicated. Sometimes there are bugs (in compilers as well as in
FASTBuild), so export the option to disable those features for CMake
targets.
Fix `ApplyLinkRuleLauncher()` to apply `RULE_LAUNCH_COMPILE`.
Remove ApplyCompileRuleLauncher since it's not used and `RULE_LAUNCH_COMPILE` is handled in `AddCompilerLaunchersForLanguages()`
Fixes: #27183