Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit629a518

Browse files
committed
[3.11]pythongh-114099: Refactor configure and Makefile to accomodate non-macOS frameworks (python#115120)
Part of the PEP 730 work to add iOS support.This change lays the groundwork for introducing iOS/tvOS/watchOSframeworks; it includes the structural refactoring needed so that iOSbranches can be added into in a subsequent PR.Summary of changes:* Updates config.sub to the 2024-01-01 release. This is the "as released" version of config.sub.* Adds a RESSRCDIR variable to allow sharing of macOS and iOS Makefile steps.* Adds an INSTALLTARGETS variable so platforms can customise which targets are actually installed. This will be used to exclude certain targets (e.g., binaries, manfiles) from iOS framework installs.* Adds a PYTHONFRAMEWORKINSTALLNAMEPREFIX variable; this is used as the install name for the library. This is needed to allow for iOS frameworks to specify an @rpath-based install name.* Evaluates MACHDEP earlier in the configure process so that ac_sys_system is available.* Modifies _PYTHON_HOST_PLATFORM evaluation for cross-platform builds so that the CPU architecture is differentiated from the host identifier. This will be used to generate a _PYTHON_HOST_PLATFORM definition that includes ABI information, not just CPU architecture.* Differentiates between SOABI_PLATFORM and PLATFORM_TRIPLET. SOABI_PLATFORM is used in binary module names, and includes the ABI, but not the OS or CPU architecture (e.g., math.cpython-313-iphonesimulator.dylib). PLATFORM_TRIPLET is used as the sys._multiarch value, and on iOS will contains the ABI and architecture (e.g., iphoneos-arm64). This differentiation hasn't historically been needed because while macOS is a multiarch platform, it uses a bare darwin as PLATFORM_TRIPLE.* Removes the use of the deprecated -Wl,-single_module flag when compiling macOS frameworks.* Some whitespace normalisation where there was a mix of spaces and tabs in a single block.
1 parent1fd6eae commit629a518

File tree

6 files changed

+640
-475
lines changed

6 files changed

+640
-475
lines changed

‎.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ Tools/unicode/data/
121121
/config.status.lineno
122122
# hendrikmuhs/ccache-action@v1
123123
/.ccache
124+
/cross-build/
124125
/platform
125126
/profile-clean-stamp
126127
/profile-run-stamp

‎Makefile.pre.in

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ PYTHONFRAMEWORK=@PYTHONFRAMEWORK@
181181
PYTHONFRAMEWORKDIR=@PYTHONFRAMEWORKDIR@
182182
PYTHONFRAMEWORKPREFIX=@PYTHONFRAMEWORKPREFIX@
183183
PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@
184+
PYTHONFRAMEWORKINSTALLNAMEPREFIX= @PYTHONFRAMEWORKINSTALLNAMEPREFIX@
185+
RESSRCDIR= @RESSRCDIR@
184186
# Deployment target selected during configure, to be checked
185187
# by distutils. The export statement is needed to ensure that the
186188
# deployment target is active during build.
@@ -344,6 +346,8 @@ IO_OBJS=\
344346
##########################################################################
345347

346348
LIBFFI_INCLUDEDIR=@LIBFFI_INCLUDEDIR@
349+
LIBFFI_LIBDIR=@LIBFFI_LIBDIR@
350+
LIBFFI_LIB=@LIBFFI_LIB@
347351

348352
##########################################################################
349353
# Parser
@@ -765,7 +769,7 @@ libpython3.so:libpython$(LDVERSION).so
765769
$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
766770

767771
libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
768-
$(CC) -dynamiclib-Wl,-single_module$(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
772+
$(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
769773

770774

771775
libpython$(VERSION).sl: $(LIBRARY_OBJS)
@@ -789,14 +793,13 @@ $(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
789793
# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
790794
# minimal framework (not including the Lib directory and such) in the current
791795
# directory.
792-
RESSRCDIR=Mac/Resources/framework
793796
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
794797
$(LIBRARY) \
795798
$(RESSRCDIR)/Info.plist
796799
$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
797800
$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
798-
-all_load $(LIBRARY)-Wl,-single_module\
799-
-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
801+
-all_load $(LIBRARY) \
802+
-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
800803
-compatibility_version $(VERSION) \
801804
-current_version $(VERSION) \
802805
-framework CoreFoundation $(LIBS);
@@ -1747,7 +1750,7 @@ multissltest: all
17471750
# prevent race conditions with PGO builds. PGO builds use recursive make,
17481751
# which can lead to two parallel `./python setup.py build` processes that
17491752
# step on each others toes.
1750-
install: @FRAMEWORKINSTALLFIRST@commoninstall bininstall maninstall @FRAMEWORKINSTALLLAST@
1753+
install: @FRAMEWORKINSTALLFIRST@@INSTALLTARGETS@ @FRAMEWORKINSTALLLAST@
17511754
if test "x$(ENSUREPIP)" != "xno" ; then \
17521755
case $(ENSUREPIP) in \
17531756
upgrade) ensurepip="--upgrade" ;; \
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
configure and Makefile were refactored to accomodate framework builds on
2+
Apple platforms other than macOS.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp