This patch adds support to building lib/builtins without a fully functioning toolchain. It allows you to bootstrap a cross-compiler, which previously couldn't be done with CMake.
This patch contains the following specific changes:
- Split builtin-specific code out of config-ix.cmake into builtin-config-ix.cmake
- Split some common CMake functionality needed by both builtins and sanitizers into base-config-ix.cmake
- Moved some macros and functions out of config-ix.cmake into more common places
- Added BuiltinTests.cmake which has some custom implementations of compiler testing that don't rely on having a functional liker or sysroot
- Made lib/builtins/CMakeLists.txt able to be a top-level CMake configuration
I realize this patch is quite large, and I can break parts of it apart. I wanted to present it as a monolithic piece so that the other changes make sense.
I have tested this on Darwin targeting embedded Darwin, and on FreeBSD x86_64 targeting FreeBSD AArch64.