Most CMake configuration under compiler-rt/lib/*/tests have almost-the-same-but-not-quite functions of the form add_X_[unit]tests for compiling and running the tests.
Much of the logic is duplicated with minor variations across different sub-folders.
This can harm productivity for multiple reasons:
- For newcomers, resulting CMake files are very large, hard to understand, and hide the intention of the code.
- Changes for enabling certain architectures end up being unnecessarily large, as they get duplicated across multiple folders.
- Adding new sub-projects requires more effort than it should, as a developer has to again copy-n-paste the configuration, and it's not even clear from which sub-project it should be copy-n-pasted.
With this change the logic of compile-and-generate-a-set-of-tests is extracted into a function, which hopefully makes writing and reading CMake much easier.
As a part of refactoring, I've changed affected macros to functions, as it's much easier to write "safer" CMake code using functions (if such thing exists).
Should arch be in the doc string as well.