Add `umbrella-header` to specify umbrella headers
This is essentially the same as a "bridging" header, except without any ObjC (straight C). Upstream says it "can't be done"; let's see if Linux CI likes this implementation. Take *that*, anonymous compiler engineers. My motivation for this patch is essentially as a workaround for SR-655. https://bugs.swift.org/browse/SR-655 That is to say, I want to call some arbitrary C code, but due to that bug, I can't hide my C code behind a module / modulemap. Instead what I can do is just `#include <whatever>` in my umbrella header, and then the C imports are available to Swift. Internally, we emit a modulemap based on the umbrella header and then inject some compile flags (notably, `-import-underlying-module`) to make it load. This is the design I reverse-engineered from Xcode. That notwithstanding, it seems to be based entirely on public APIs and I guess we'll find out if it works on Linux. While my motivation is based on C imports, umbrella headers may be useful wherever Swift projects are sold. There are multiple features that get unlocked here, including access to the C preprocessor.
Showing with 42 additions and 1 deletion