When `PRIVATE` sources are added to an `INTERFACE`
target A and A is a dependency of B - the target A
ends up in "direct dependencies" of the B targets
and it messes up the generated `fbuild.bff` file.
Fixes: #27644
The FASTBuild generator puts source files from different subdirectories
into different `FastbuildObjectListNode` instances. This ensures that
files with the same name will not write to the same object file. A unity
bucket can only contain files from a single `FastbuildObjectListNode`
instance, so a side effect of this logic is that unity buckets can only
contain files in the same subdirectory. This change fixes the problem by
skipping the subdirectory check logic for files with unity enabled.
Fixes: #27457
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.