-
-
Notifications
You must be signed in to change notification settings - Fork 34.5k
bpo-41100: Support macOS 11 and Apple Silicon #22855
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
Changes from 1 commit
919efcc
69c39f3
3940c86
deda5f0
ea3c200
552bca8
e0c23a1
e637a77
02fb660
ba2f5a3
8e3b454
87c942b
515fbe6
eee5437
3a1d4f2
2f019f4
cec3da7
86b5cf3
d604cef
dde0ba4
7ac26c4
191a2d7
e6d195b
cfb02ba
003dae8
004ba4e
6019346
54576ab
6af77ab
b653df9
98af7b3
817d9bf
8684d9d
0b44610
36deb92
33d5710
c3113eb
587e53e
24ef276
e0614bc
e6478fa
3f72949
5daff99
6681261
b17a3d5
7e64e95
fef2e93
24eb0d0
296666b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -120,6 +120,8 @@ support ppc (Xcode 4 on 10.6 and later systems). The flavor can be specified | |
| using the configure option ``--with-universal-archs=VALUE``. The following | ||
| values are available: | ||
|
|
||
| * ``universal2``: ``arm64``, ``x86_64`` | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should not
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't want to change the meaning of existing sets. It is also not possible to build fat binaries with arm64 and ppc or i386 with a single compiler, the current compiler in Xcode only supports arm64 and x86_64.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For 3.10 we can reconsider the sets of architectures to support, possibly defaulting to "universal2" and only keeping that and "intel" (for folks still needing 32-bit support). But that's for another issue. |
||
|
|
||
| * ``intel``: ``i386``, ``x86_64`` | ||
|
|
||
| * ``intel-32``: ``i386`` | ||
|
|
@@ -155,6 +157,8 @@ following combinations of SDKs and universal-archs flavors are available: | |
|
|
||
| * 10.15 and later SDKs support ``intel-64`` only | ||
|
|
||
| * 11.0 and later SDKs support ``universal2`` | ||
|
|
||
| The makefile for a framework build will also install ``python3.x-32`` | ||
| binaries when the universal architecture includes at least one 32-bit | ||
| architecture (that is, for all flavors but ``64-bit`` and ``intel-64``). | ||
|
|
@@ -352,6 +356,39 @@ A framework install also installs some applications in ``/Applications/Python X. | |
| And lastly a framework installation installs files in ``/usr/local/bin``, all of | ||
| them symbolic links to files in ``/Library/Frameworks/Python.framework/Versions/X.Y/bin``. | ||
|
|
||
| Weak linking support | ||
| ==================== | ||
|
|
||
| The CPython sources support building with the latest SDK while targetting deployment | ||
| to macOS 10.9. This is done through weak linking of symbols introduced in macOS | ||
| 10.10 or later and checking for their availability at runtime. | ||
|
|
||
| This requires the use of Apple's compiler toolchain on macOS 10.13 or later. | ||
|
|
||
| The basic implementation pattern is: | ||
|
|
||
| * ``HAVE_<FUNCTION>`` is a macro defined (or not) by the configure script | ||
|
|
||
| * ``HAVE_<FUNCTION>_RUNTIME`` is a macro defined in the relevant source | ||
| files. This expands to a call to ``__builtin_available`` when using | ||
| a new enough Apple compiler, and to a true value otherwise. | ||
|
|
||
| * Use ``HAVE_<FUNCTION>_RUNTIME`` before calling ``<function>``. This macro | ||
| *must* be used a the sole expression in an if statement:: | ||
|
|
||
| if (HAVE_<FUNCTION>_RUNTIME) { | ||
| /* <function> is available */ | ||
| } | ||
|
|
||
| Or: | ||
|
|
||
| if (HAVE_<FUNCTION>_RUNTIME) {} else { | ||
| /* <function> is not available */ | ||
| } | ||
|
|
||
| Using other patterns (such as ``!HAVE_<FUNCTION>_RUNTIME``) is not supported | ||
| by Apple's compilers. | ||
|
|
||
|
|
||
| Resources | ||
| ========= | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.