-
Notifications
You must be signed in to change notification settings - Fork 989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feature] SDK Version for apple OSes #9608
Comments
Thanks for reporting the issue @NoWiseMan Let me know more about your use case. Have you faced any problem consuming any package at some point? |
Thank you for your very fast response. Yes, custom settings also work. But I see no real difference between custom settings and an option. But there is a big difference when conan gives an error when the consumer has a lower SDK version than the package. Apple platforms have, say, this triple of important values.
compiler version has an equivalent in conan, since it is linked to settings.compiler.version. We have had this problem since last year. Xcode 12.0 came with macOS SDK 10.15, and Xcode 12.1 brought macOS SDK 11.0 (with support for ARM, and some new APIs). |
Oh I forget: The SDK version, can change the behaviour of the whole application |
Thanks for your great explanation. Yeah, you're right and it could make sense to have it "natively". |
We might want to generalize any solution here. I've had a similar problem on Linux where I need to support RHEL 6 with has a very old version of |
@dheater The problem with this fine grained subsettings, like something for As @NoWiseMan is commenting the Apple SDKs seems to be exact matches, as they add new behavior, but can also remove APIs, and completely break. So consumers might want to make sure they all match an exact SDK, always. So I am not sure this can be generalized to the Linux libc one without causing there more pain than the one it tries to solve. |
For Mac development I am specifying the minimum SDK. I can build with a newer SDK and it seems to provide backwards compatibility. In my profile:
|
@NoWiseMan could please you confirm the above @dheater Regarding |
We finally decided to wait a bit, until we release the Xcode toolchain and build helper and have more information about how everything works with the Apple sdk's so I'm moving this 1.43 milestone. |
@memsharded Yes, it is possible for an API to be removed, added, or deprecated. There may also be different behavior of the API that is still present. This is more likely in the higher layers of AppKit than in the API for C++ libraries. But yes, there can be big changes. @dheater |
Frameworks created with Xcode 13.1 and macOS SDK 12.0 cannot be used with Xcode 13.0. |
This has been implemented in #10608, will be released in 1.46. Feedback once released welcome |
I was looking into where this new |
Is this for situations where you might want Edit: Okay, I think I answered my own question. Looking at the attached PRs, this is more about having finer grained control over which SDK is chosen by the build tools when building. Setting the SDK version allows for passing |
Yes, I think this is the reason, maybe @czoido can confirm |
New year, new versions (conan-io#15015). I updated the lists based on: * https://en.wikipedia.org/wiki/MacOS_version_history#Releases * https://en.wikipedia.org/wiki/TvOS#tvOS_17 * https://en.wikipedia.org/wiki/WatchOS#watchOS_10 * https://en.wikipedia.org/wiki/IOS_version_history#iOS_17_/_iPadOS_17 * https://en.wikipedia.org/wiki/Xcode#Toolchain_versions (I did not add 15.1, since the list seems to only include x.0 versions) I added the latest minor beta version (without the beta suffix) as the last version in each list. If I understand it correctly (conan-io#9608 (comment)) the SDK versions should basically match the OS versions, so I updated them accordingly.
This is the second year Apple has made a major change to the SDK within the same major release of Xcode.
With Xcode 12.0 Apple shipped macOS SDK 10.15 and with Xcode 12.1 they changed it to macOS SDK 11.0.
Now it looks the same (probably because iOS 15 came out earlier than macOS 12)
Xcode 13.0 comes with macOS SDK 11.0 and it is sure that one of the next minor updates, probably 13.1, will bring us macOS SDK 12.
Changing an SDK is a big deal as it removes APIs, brings new APIs and can give changes in the behavior of your application. So it's time to have the ability to differentiate Conan packages by SDK version.
The same is true for all other Apple operating systems.
I can add an option myself, or it can become an additional setting under OS
my suggestion would be, these additions in the settings.yml
A consumer of such a package must have the same or higher sdk_version, otherwise there will be linker warnings.
Within a dependency tree there should be no differences in sdk_version for the same package
The text was updated successfully, but these errors were encountered: