robovm icon indicating copy to clipboard operation
robovm copied to clipboard

* maintenance: interface builder integration

Open dkimitsa opened this issue 1 year ago • 0 comments

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

Also thumbv7 removed from default iOS target

dkimitsa avatar May 19 '24 11:05 dkimitsa