LLVM external tools such as Clang, lld, and Polly, can be built as part
of a unified CMake build. This is done by placing checkouts of these
projects in the llvm/tools directory (at least, this is how it was
done before the LLVM project began migrating to a monorepo model. I
don't know if or how this changed in a monorepo configuration).
To keep these projects from showing up as unstaged changes in a user's
Git checkout of LLVM, these projects are included in the .gitignore
file: tools/clang, tools/lld, etc.
Apple's Swift project is also capable of being built as part of a
unified CMake build (admittedly this is not the typically recommended
way of building the project, but the Swift project does include
extensive CMake code to make this type of build possible). When this
is done, it's placed in tools/swift. It also relies on another
dependency, which is placed in tools/cmark. Include these two
projects in the .gitignore, to make it easier for users to perform
unified builds.