Search code examples
iosxcodexamarinobjective-sharpie

Objective Sharpie Does Not See Older iPhone SDKs when using iPhoneos 9.3


I am trying to bind a framework that has its own Info.plist which requires iphoneos8.2. Per the documentation

https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/tools/

I installed Xcode 6.2 which shows the iPhoneos8.2.sdk inside of Applications/Contents/... so that a sharpie command of

sharpie xcode -sdks -v

should return any sdk found at /Application/Xcode*.app. However, my output still just shows the 9.3 sdks. I also tried copying the 8.2 sdk into the Xcode.app/Contents/.. folders as suggested in other posts on SO to no avail. The output does see both Xcode 7.3.1 and 6.2 but it does not list sdk: iphoneos8.2 under the Xcode 6.2 only the macosx10.10 sdk. Like I said the 8.2 iphoneos8.2 is confirmed in the contents/developer/sdks folder for 6.2.

Does anyone know why the 8.2 sdk would not be found by sharpie?


Solution

  • So here's the short of why this doesn't appear.

    Objective Sharpie enumerates /Applications/Xcode*.app thus you would think it would pickup an old iphoneos sdk. However it cannot do that because it has a dependency on clang in which clang has a minimum compatibility version against the respective iphoneos, macosx, and watchos. Thus in this case, iphoneos must be > 8.3 and any that meet this requirement will be detected against the sharpie xcode -sdks command.

    These of course come directly from clang:

    http://clang.llvm.org/docs/AttributeReference.html#availability

    ios

    Apple’s iOS operating system. The minimum deployment target is specified by the -mios-version-min=*version* or -miphoneos-version-min=*version* command-line arguments.

    macos

    Apple’s Mac OS X operating system. The minimum deployment target is specified by the -mmacosx-version-min=*version* command-line argument. macosx is supported for backward-compatibility reasons, but it is deprecated.

    tvos

    Apple’s tvOS operating system. The minimum deployment target is specified by the -mtvos-version-min=*version* command-line argument.

    watchos

    Apple’s watchOS operating system. The minimum deployment target is specified by the -mwatchos-version-min=*version* command-line argument.