This is a tool specifically designed to generate
Xcode projects for the Swift repo (as well as a
couple of adjacent repos such as LLVM and Clang).
It aims to provide a much more user-friendly experience
than the CMake Xcode generation (`build-script --xcode`).
This ensures that log messages are printed as soon as a corresponding build step starts, instead of printing these messages in the end out of order.
For example, before for SwiftPM
```
--- Cleaning swiftpm ---
--- Building swiftpm ---
--- Running tests for swiftpm ---
--- Finished tests for swiftpm ---
--- Installing swiftpm ---
```
was printed at the end of the CI job log with no actual build phase output in between these markers. Now these build phase markers are printed in the correct order and one can infer which log messages were printed for each build phase.
This patch enables building `compiler-rt/lib/profile` for WebAssembly
targets. This is necessary to support `-fprofile-instr-generate` for
WebAssembly targets.
Often times this happens since one forget to add --invert to invert the failure
code in situations where the newer change succeeds and the older change fails...
so I added that admonition to the error message.
This change disables the use of llvm libunwind in libcxxabi, which is enabled by default in the rebranched scheme. (https://reviews.llvm.org/D150897) But the llvm libunwind is not supported in the WebAssembly target, so we need to disable it explicitly.
This is a preparation for the upcoming `rebranch` merge.
I saw the following failure on PR testing. Disabling swift-format tests while I investigate
```
error: supplementary output file map 'T:\\tmp\\TemporaryDirectory.mtdzGg\\supplementaryOutputs-1' is missing an entry for 'C:\\Users\\swift-ci\\jenkins\\workspace\\sourcekit-lsp-PR-windows\\swift-format\\Tests\\SwiftFormatTests\\API\\ConfigurationTests.swift' (this likely indicates a compiler issue; please submit a bug report (https://swift.org/contributing/#reporting-bugs))
```
The basic idea is that we build all libraries for the executable that will be included in the toolchain using CMake. swift-format then has a mode in its Package manifest that allows it to build just the test and test support targets, requiring all search paths to find those libraries to be passed in. We use that to only build swift-format's test using SwiftPM and re-use all the libraries that were already built using CMake.