Change in Xcode 7 prevents framework from compiling "building for OSX, but linking in object file built for iOS, for architecture x86_64"

An OS X app I'm working on won't compile now in Xcode 7. Previously in Xcode 6 everything was fine. I have a framework I put together awhile ago that links against several third party libraries (already compile .a). Worked like a charm before. In the original project (where the .a files were retreieved) has x86_64 and i386 in the list of valid architectures.


The thrid party library I got these .a files comes with the .a already compiled (no subprojects so I can't just create another target and recompile it). These are all open source, cross-platform libraries ...with forks all over the place on the net...tracking down the source code for a compatible version and recompiling under Xcode 7 to swap in could take some time... maybe even a few days.


I'm fairly certain that these .a's will run just fine on 64 bit Macs...I'm at the tail end of the development of this app and I've tested it out plenty of times with Xcode 6.4. Is there a workaround to this?


Thanks a lot.

If I do lipo -info on the .a I get:


armv7s armv7 i386 x86_64 arm64


Seems like using this in an OS X app should be perfectly fine. Is there a way I can tell the compiler to trust me on this?

So...I just used lipo to create a .a with all iOS architectures removed....


Now if I do lipo info on the .a the architectures are only : i386 x86_64


But Xcode still won't let me compile.

Just googled around. Ran into this blog post:


http://karp.id.au/post/xcode_7_linker_rules/


if I have a file that has the supported architecture on it...and if I strip out the iOS ones because Apple doesn't want us using fat libraries, I'm still prevented from building...


It seems pointless to prevent me from compiling because Xcode marked all the code as "iOS"...even though the code is the same. Guess there must be some reason why they are choosing to do this, though it feels a bit arbitrary to prevent a perfectly working library from running on a supported architecture.

Edit:

I just spent 75% of a day grabbing 5 popular open source, cross platform libraries an app i'm working on uses and created Xcode projects for each of them. Kind of a chore because they are all cross platform and require certain configurations in order to compile on OS X, and a lot of platform specific code for other platforms needed to be stripped out. There's like two billion lines of code here I didn't write, much of it written in the early to mid 1990's, so it was a bit tedious to go through. Someone else did all this already and put a project on github with these dependencies already compiled (though the new enforcement of these iOS markers burned me).


I did get my framework set up again...all seems well in the world. If you distribute frameworks/static libraries to third parties without the source code, you'll have to take this new rule into account.

Change in Xcode 7 prevents framework from compiling "building for OSX, but linking in object file built for iOS, for architecture x86_64"
 
 
Q