* maintenance: interface builder integration
Main reason -- to be able to compile Stub in Xcode without errors.
What was fixed:
Cannot code sign because the target does not have an Info.plist file
Info.plist is now generated and included into xcode project.
Undefined symbols for architecture arm64: "_main"
Stub int main() {} is now generated and included into xcode project.
multiple FrameworkName/FrameworkName.h not found
Error while compiling pre-compiled header file where all framework are being referenced. XCode doesn't seem to recognise single arch framework. Changes where done:
- propagate XCFrameworks instead of its framework.
- clang modules are enabled now;
- not all frameworks have umbrella header with same name, e.g.
FrameworkName/FrameworkName.h, logic added to look for Swift umbrellas as well. - if umbrella header is not found -- framework is not included into pre-compiled headers.
To have manual control over the logic and to be able to add extra imports and filter out not required config was extended with following section:
<config>
<tools>
<ibx>
<pch>
<include>MyFramework/MyFramework.h</include>
<include import="true">MyModule</include>
<filter exclude="true">*Promises*</filter>
</pch>
</ibx>
</tools>
</config>
pch section allow to include additional frameworks with include tags. if import attribute is specified -- @import will be used instead of #import (works for modules). filter tag allows to exclude from pre-compiled header files reference to not required framework. For example FBLPromises causes following error:
fatal error: module 'PromisesObjC' in AST file