-
-
Notifications
You must be signed in to change notification settings - Fork 31.4k
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
gh-114099: Add preprocessor declarations to support compilation on iOS #115023
Conversation
if (uid == 501) { | ||
struct passwd mp; | ||
mp.pw_name = "mobile"; | ||
mp.pw_passwd = "/smx7MYTQIi2M"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see it's easy enough to Google, but there should still be a comment explaining what this value is and where it comes from.
// iOS/tvOS/watchOS *define* some POSIX methods, | ||
// but raise a compiler error if they are used. | ||
#if TARGET_OS_IPHONE | ||
# undef HAVE_GETGROUPS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's a compiler error, as opposed to a runtime error, then autoconf should be able to detect the problem. The comment should explain why that wasn't sufficient.
// tvOS and watchOS don't provide a number of important POSIX functions. | ||
#if TARGET_OS_TV || TARGET_OS_WATCH | ||
# undef HAVE_SIGALTSTACK |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment as above.
// iOS/tvOS/watchOS *define* some POSIX methods, | ||
// but raise a compiler error if they are used. | ||
#if TARGET_OS_IPHONE | ||
# undef HAVE_GETENTROPY |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment as above.
// iOS/tvOS/watchOS *define* clock_settime, but it can't be used | ||
#if TARGET_OS_IPHONE | ||
# undef HAVE_CLOCK_SETTIME |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment as above.
Prompted by @mhsmith's review, I've dug deeper into how/why configure was incorrectly identifying these functions, and I I've got a cleaner approach for most of this patch. Closing on that basis. |
Part of the PEP 730 work to add iOS support.
Adds preprocessor declarations to C code to support compilation of the standard library on iOS/tvOS/watchOS.
These changes involve:
configure
, but raise a compilation or runtime error if actually used..dylib
extension on iOS dynamic librariesPLATFORM_TRIPLET
based on compiler behaviorThe preprocessor symbols used to identify Apple platforms are all provided by the
TargetConditionals.h
header, and form a heirarchy:TARGET_OS_IPHONE
- Generated code will run on a variant of iOS (firmware, devices, simulator)TARGET_OS_IOS
- Generated code will run on iOSTARGET_OS_MACCATALYST
- Generated code will run on macOSTARGET_OS_TV
- Generated code will run on tvOSTARGET_OS_WATCH
- Generated code will run on watchOSTARGET_OS_SIMULATOR
- Generated code will run on an iOS, tvOS, watchOS, or visionOS simulatorOf particular note:
TARGET_OS_IPHONE
is any "iPhone like" device - including iOS, tvOS, watchOS, and visionOS.TARGET_OS_IOS
is iOS only.