]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-114099: Refactor configure and Makefile to accomodate non-macOS frameworks (#115120)
authorRussell Keith-Magee <russell@keith-magee.com>
Mon, 12 Feb 2024 23:10:24 +0000 (07:10 +0800)
committerGitHub <noreply@github.com>
Mon, 12 Feb 2024 23:10:24 +0000 (00:10 +0100)
Part of the PEP 730 work to add iOS support.

This change lays the groundwork for introducing iOS/tvOS/watchOS
frameworks; it includes the structural refactoring needed so that iOS
branches 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.

Makefile.pre.in
Misc/NEWS.d/next/Build/2024-02-07-08-23-48.gh-issue-114099.XcEXEZ.rst [new file with mode: 0644]
config.sub
configure
configure.ac

index 4dabe328ce0362ff5823a3f2352e17d271831bfd..e0527633ccd03bb19199381f4aa285fbbf106255 100644 (file)
@@ -184,6 +184,8 @@ PYTHONFRAMEWORK=    @PYTHONFRAMEWORK@
 PYTHONFRAMEWORKDIR=    @PYTHONFRAMEWORKDIR@
 PYTHONFRAMEWORKPREFIX= @PYTHONFRAMEWORKPREFIX@
 PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@
+PYTHONFRAMEWORKINSTALLNAMEPREFIX= @PYTHONFRAMEWORKINSTALLNAMEPREFIX@
+RESSRCDIR= @RESSRCDIR@
 # Deployment target selected during configure, to be checked
 # by distutils. The export statement is needed to ensure that the
 # deployment target is active during build.
@@ -866,7 +868,7 @@ libpython3.so:      libpython$(LDVERSION).so
        $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
 
 libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
-        $(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); \
+        $(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); \
 
 
 libpython$(VERSION).sl: $(LIBRARY_OBJS)
@@ -891,14 +893,13 @@ $(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
 # This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
 # minimal framework (not including the Lib directory and such) in the current
 # directory.
-RESSRCDIR=Mac/Resources/framework
 $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
                $(LIBRARY) \
                $(RESSRCDIR)/Info.plist
        $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
        $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
-               -all_load $(LIBRARY) -Wl,-single_module \
-               -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
+               -all_load $(LIBRARY) \
+               -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
                -compatibility_version $(VERSION) \
                -current_version $(VERSION) \
                -framework CoreFoundation $(LIBS);
@@ -2000,7 +2001,7 @@ multissltest: all
 # which can lead to two parallel `./python setup.py build` processes that
 # step on each others toes.
 .PHONY: install
-install: @FRAMEWORKINSTALLFIRST@ commoninstall bininstall maninstall @FRAMEWORKINSTALLLAST@
+install: @FRAMEWORKINSTALLFIRST@ @INSTALLTARGETS@ @FRAMEWORKINSTALLLAST@
        if test "x$(ENSUREPIP)" != "xno"  ; then \
                case $(ENSUREPIP) in \
                        upgrade) ensurepip="--upgrade" ;; \
diff --git a/Misc/NEWS.d/next/Build/2024-02-07-08-23-48.gh-issue-114099.XcEXEZ.rst b/Misc/NEWS.d/next/Build/2024-02-07-08-23-48.gh-issue-114099.XcEXEZ.rst
new file mode 100644 (file)
index 0000000..5e4acfb
--- /dev/null
@@ -0,0 +1,2 @@
+configure and Makefile were refactored to accomodate framework builds on
+Apple platforms other than macOS.
index d74fb6deac942a4e21f49fa752c3280e66c196a0..2c6a07ab3c34eabed8318ec0a37c0cc23b77a63f 100755 (executable)
@@ -1,14 +1,14 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2021 Free Software Foundation, Inc.
+#   Copyright 1992-2024 Free Software Foundation, Inc.
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
-timestamp='2021-08-14'
+timestamp='2024-01-01'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -76,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2021 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -130,7 +130,7 @@ IFS=$saved_IFS
 # Separate into logical components for further validation
 case $1 in
        *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
+               echo "Invalid configuration '$1': more than four components" >&2
                exit 1
                ;;
        *-*-*-*)
@@ -145,7 +145,8 @@ case $1 in
                        nto-qnx* | linux-* | uclinux-uclibc* \
                        | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
                        | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                       | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
+                       | windows-* )
                                basic_machine=$field1
                                basic_os=$maybe_os
                                ;;
@@ -943,7 +944,7 @@ $basic_machine
 EOF
                IFS=$saved_IFS
                ;;
-       # We use `pc' rather than `unknown'
+       # We use 'pc' rather than 'unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
        i*86 | x86_64)
@@ -1020,6 +1021,11 @@ case $cpu-$vendor in
                ;;
 
        # Here we normalize CPU types with a missing or matching vendor
+       armh-unknown | armh-alt)
+               cpu=armv7l
+               vendor=alt
+               basic_os=${basic_os:-linux-gnueabihf}
+               ;;
        dpx20-unknown | dpx20-bull)
                cpu=rs6000
                vendor=bull
@@ -1070,7 +1076,7 @@ case $cpu-$vendor in
        pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
                cpu=i586
                ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+       pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
                cpu=i686
                ;;
        pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1121,7 +1127,7 @@ case $cpu-$vendor in
        xscale-* | xscalee[bl]-*)
                cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
                ;;
-       arm64-*)
+       arm64-* | aarch64le-*)
                cpu=aarch64
                ;;
 
@@ -1175,7 +1181,7 @@ case $cpu-$vendor in
                case $cpu in
                        1750a | 580 \
                        | a29k \
-                       | aarch64 | aarch64_be \
+                       | aarch64 | aarch64_be | aarch64c | arm64ec \
                        | abacus \
                        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
                        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
@@ -1194,50 +1200,29 @@ case $cpu-$vendor in
                        | d10v | d30v | dlx | dsp16xx \
                        | e2k | elxsi | epiphany \
                        | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+                       | javascript \
                        | h8300 | h8500 \
                        | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
                        | hexagon \
                        | i370 | i*86 | i860 | i960 | ia16 | ia64 \
                        | ip2k | iq2000 \
                        | k1om \
+                       | kvx \
                        | le32 | le64 \
                        | lm32 \
-                       | loongarch32 | loongarch64 | loongarchx32 \
+                       | loongarch32 | loongarch64 \
                        | m32c | m32r | m32rle \
                        | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
                        | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
                        | m88110 | m88k | maxq | mb | mcore | mep | metag \
                        | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r3 | mipsisa32r3el \
-                       | mipsisa32r5 | mipsisa32r5el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r3 | mipsisa64r3el \
-                       | mipsisa64r5 | mipsisa64r5el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
+                       | mips* \
                        | mmix \
                        | mn10200 | mn10300 \
                        | moxie \
                        | mt \
                        | msp430 \
+                       | nanomips* \
                        | nds32 | nds32le | nds32be \
                        | nfp \
                        | nios | nios2 | nios2eb | nios2el \
@@ -1269,6 +1254,7 @@ case $cpu-$vendor in
                        | ubicom32 \
                        | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
                        | vax \
+                       | vc4 \
                        | visium \
                        | w65 \
                        | wasm32 | wasm64 \
@@ -1280,7 +1266,7 @@ case $cpu-$vendor in
                                ;;
 
                        *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+                               echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
                                exit 1
                                ;;
                esac
@@ -1301,11 +1287,12 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if test x$basic_os != x
+if test x"$basic_os" != x
 then
 
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
 # set os.
+obj=
 case $basic_os in
        gnu/linux*)
                kernel=linux
@@ -1336,6 +1323,10 @@ EOF
                kernel=linux
                os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
                ;;
+       managarm*)
+               kernel=managarm
+               os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
+               ;;
        *)
                kernel=
                os=$basic_os
@@ -1501,10 +1492,16 @@ case $os in
                        os=eabi
                        ;;
                    *)
-                       os=elf
+                       os=
+                       obj=elf
                        ;;
                esac
                ;;
+       aout* | coff* | elf* | pe*)
+               # These are machine code file formats, not OSes
+               obj=$os
+               os=
+               ;;
        *)
                # No normalization, but not necessarily accepted, that comes below.
                ;;
@@ -1523,12 +1520,15 @@ else
 # system, and we'll never get to this point.
 
 kernel=
+obj=
 case $cpu-$vendor in
        score-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        spu-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        *-acorn)
                os=riscix1.2
@@ -1538,28 +1538,35 @@ case $cpu-$vendor in
                os=gnu
                ;;
        arm*-semi)
-               os=aout
+               os=
+               obj=aout
                ;;
        c4x-* | tic4x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        c8051-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        clipper-intergraph)
                os=clix
                ;;
        hexagon-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        tic54x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        tic55x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        tic6x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
@@ -1581,19 +1588,24 @@ case $cpu-$vendor in
                os=sunos3
                ;;
        m68*-cisco)
-               os=aout
+               os=
+               obj=aout
                ;;
        mep-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        mips*-cisco)
-               os=elf
+               os=
+               obj=elf
                ;;
-       mips*-*)
-               os=elf
+       mips*-*|nanomips*-*)
+               os=
+               obj=elf
                ;;
        or32-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
                os=sysv3
@@ -1602,7 +1614,8 @@ case $cpu-$vendor in
                os=sunos4.1.1
                ;;
        pru-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        *-be)
                os=beos
@@ -1683,10 +1696,12 @@ case $cpu-$vendor in
                os=uxpv
                ;;
        *-rom68k)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-*bug)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-apple)
                os=macos
@@ -1704,10 +1719,11 @@ esac
 
 fi
 
-# Now, validate our (potentially fixed-up) OS.
+# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
+
 case $os in
        # Sometimes we do "kernel-libc", so those need to count as OSes.
-       musl* | newlib* | relibc* | uclibc*)
+       llvm* | musl* | newlib* | relibc* | uclibc*)
                ;;
        # Likewise for "kernel-abi"
        eabi* | gnueabi*)
@@ -1715,6 +1731,9 @@ case $os in
        # VxWorks passes extra cpu info in the 4th filed.
        simlinux | simwindows | spe)
                ;;
+       # See `case $cpu-$os` validation below
+       ghcjs)
+               ;;
        # Now accept the basic system types.
        # The portable systems comes first.
        # Each alternative MUST end in a * to match a version number.
@@ -1723,7 +1742,7 @@ case $os in
             | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
             | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
             | hiux* | abug | nacl* | netware* | windows* \
-            | os9* | macos* | osx* | ios* \
+            | os9* | macos* | osx* | ios* | tvos* | watchos* \
             | mpw* | magic* | mmixware* | mon960* | lnews* \
             | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
             | aos* | aros* | cloudabi* | sortix* | twizzler* \
@@ -1732,11 +1751,11 @@ case $os in
             | mirbsd* | netbsd* | dicos* | openedition* | ose* \
             | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
             | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+            | bosx* | nextstep* | cxux* | oabi* \
+            | ptx* | ecoff* | winnt* | domain* | vsta* \
             | udi* | lites* | ieee* | go32* | aux* | hcos* \
             | chorusrdb* | cegcc* | glidix* | serenity* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+            | cygwin* | msys* | moss* | proelf* | rtems* \
             | midipix* | mingw32* | mingw64* | mint* \
             | uxpv* | beos* | mpeix* | udk* | moxiebox* \
             | interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1748,49 +1767,117 @@ case $os in
             | skyos* | haiku* | rdos* | toppers* | drops* | es* \
             | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
             | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
+            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+            | fiwix* | mlibc* | cos* | mbr* | ironclad* )
                ;;
        # This one is extra strict with allowed versions
        sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
                # Don't forget version if it is 3.2v4 or newer.
                ;;
+       # This refers to builds using the UEFI calling convention
+       # (which depends on the architecture) and PE file format.
+       # Note that this is both a different calling convention and
+       # different file format than that of GNU-EFI
+       # (x86_64-w64-mingw32).
+       uefi)
+               ;;
        none)
                ;;
+       kernel* | msvc* )
+               # Restricted further below
+               ;;
+       '')
+               if test x"$obj" = x
+               then
+                       echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
+               fi
+               ;;
        *)
-               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+               echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+               exit 1
+               ;;
+esac
+
+case $obj in
+       aout* | coff* | elf* | pe*)
+               ;;
+       '')
+               # empty is fine
+               ;;
+       *)
+               echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+       # The "javascript-unknown-ghcjs" triple is used by GHC; we
+       # accept it here in order to tolerate that, but reject any
+       # variations.
+       javascript-ghcjs)
+               ;;
+       javascript-* | *-ghcjs)
+               echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
                exit 1
                ;;
 esac
 
 # As a final step for OS-related things, validate the OS-kernel combination
 # (given a valid OS), if there is a kernel.
-case $kernel-$os in
-       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
-                  | linux-musl* | linux-relibc* | linux-uclibc* )
+case $kernel-$os-$obj in
+       linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+                   | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+                   | linux-relibc*- | linux-uclibc*- )
+               ;;
+       uclinux-uclibc*- )
+               ;;
+       managarm-mlibc*- | managarm-kernel*- )
                ;;
-       uclinux-uclibc* )
+       windows*-msvc*-)
                ;;
-       -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+       -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+                   | -uclibc*- )
                # These are just libc implementations, not actual OSes, and thus
                # require a kernel.
-               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+               echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
                exit 1
                ;;
-       kfreebsd*-gnu* | kopensolaris*-gnu*)
+       -kernel*- )
+               echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+               exit 1
                ;;
-       vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+       *-kernel*- )
+               echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+               exit 1
                ;;
-       nto-qnx*)
+       *-msvc*- )
+               echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+               exit 1
                ;;
-       os2-emx)
+       kfreebsd*-gnu*- | kopensolaris*-gnu*-)
+               ;;
+       vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+               ;;
+       nto-qnx*-)
+               ;;
+       os2-emx-)
                ;;
-       *-eabi* | *-gnueabi*)
+       *-eabi*- | *-gnueabi*-)
                ;;
-       -*)
+       none--*)
+               # None (no kernel, i.e. freestanding / bare metal),
+               # can be paired with an machine code file format
+               ;;
+       -*-)
                # Blank kernel with real OS is always fine.
                ;;
-       *-*)
-               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+       --*)
+               # Blank kernel and OS with real machine code file format is always fine.
+               ;;
+       *-*-*)
+               echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
                exit 1
                ;;
 esac
@@ -1873,7 +1960,7 @@ case $vendor in
                ;;
 esac
 
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
 exit
 
 # Local variables:
index 705a778cafced35d8f2d0de4cd8f8175819b2e61..ba2d49df7c65fee8afbdcd84fecf3af13b8468d2 100755 (executable)
--- a/configure
+++ b/configure
@@ -972,7 +972,7 @@ HAS_XCRUN
 EXPORT_MACOSX_DEPLOYMENT_TARGET
 CONFIGURE_MACOSX_DEPLOYMENT_TARGET
 _PYTHON_HOST_PLATFORM
-MACHDEP
+INSTALLTARGETS
 FRAMEWORKINSTALLAPPSPREFIX
 FRAMEWORKUNIXTOOLSPREFIX
 FRAMEWORKPYTHONW
@@ -980,6 +980,8 @@ FRAMEWORKALTINSTALLLAST
 FRAMEWORKALTINSTALLFIRST
 FRAMEWORKINSTALLLAST
 FRAMEWORKINSTALLFIRST
+RESSRCDIR
+PYTHONFRAMEWORKINSTALLNAMEPREFIX
 PYTHONFRAMEWORKINSTALLDIR
 PYTHONFRAMEWORKPREFIX
 PYTHONFRAMEWORKDIR
@@ -989,6 +991,7 @@ LIPO_INTEL64_FLAGS
 LIPO_32BIT_FLAGS
 ARCH_RUN_32BIT
 UNIVERSALSDK
+MACHDEP
 PKG_CONFIG_LIBDIR
 PKG_CONFIG_PATH
 PKG_CONFIG
@@ -4004,6 +4007,77 @@ if test "$with_pkg_config" = yes -a -z "$PKG_CONFIG"; then
   as_fn_error $? "pkg-config is required" "$LINENO" 5]
 fi
 
+# Set name for machine-dependent library files
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5
+printf %s "checking MACHDEP... " >&6; }
+if test -z "$MACHDEP"
+then
+    # avoid using uname for cross builds
+    if test "$cross_compiling" = yes; then
+       # ac_sys_system and ac_sys_release are used for setting
+       # a lot of different things including 'define_xopen_source'
+       # in the case statement below.
+       case "$host" in
+       *-*-linux-android*)
+               ac_sys_system=Linux-android
+               ;;
+       *-*-linux*)
+               ac_sys_system=Linux
+               ;;
+       *-*-cygwin*)
+               ac_sys_system=Cygwin
+               ;;
+       *-*-vxworks*)
+           ac_sys_system=VxWorks
+           ;;
+       *-*-emscripten)
+           ac_sys_system=Emscripten
+           ;;
+       *-*-wasi)
+           ac_sys_system=WASI
+           ;;
+       *)
+               # for now, limit cross builds to known configurations
+               MACHDEP="unknown"
+               as_fn_error $? "cross build not supported for $host" "$LINENO" 5
+       esac
+       ac_sys_release=
+    else
+       ac_sys_system=`uname -s`
+       if test "$ac_sys_system" = "AIX" \
+       -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
+               ac_sys_release=`uname -v`
+       else
+               ac_sys_release=`uname -r`
+       fi
+    fi
+    ac_md_system=`echo $ac_sys_system |
+                       tr -d '/ ' | tr '[A-Z]' '[a-z]'`
+    ac_md_release=`echo $ac_sys_release |
+                       tr -d '/ ' | sed 's/^[A-Z]\.//' | sed 's/\..*//'`
+    MACHDEP="$ac_md_system$ac_md_release"
+
+    case $MACHDEP in
+       aix*) MACHDEP="aix";;
+       linux*) MACHDEP="linux";;
+       cygwin*) MACHDEP="cygwin";;
+       darwin*) MACHDEP="darwin";;
+       '')     MACHDEP="unknown";;
+    esac
+
+    if test "$ac_sys_system" = "SunOS"; then
+       # For Solaris, there isn't an OS version specific macro defined
+       # in most compilers, so we define one here.
+       SUNOS_VERSION=`echo $ac_sys_release | sed -e 's!\.\(0-9\)$!.0\1!g' | tr -d '.'`
+
+printf "%s\n" "#define Py_SUNOS_VERSION $SUNOS_VERSION" >>confdefs.h
+
+    fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$MACHDEP\"" >&5
+printf "%s\n" "\"$MACHDEP\"" >&6; }
+
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-universalsdk" >&5
 printf %s "checking for --enable-universalsdk... " >&6; }
 # Check whether --enable-universalsdk was given.
@@ -4127,11 +4201,15 @@ then :
                PYTHONFRAMEWORKDIR=no-framework
                PYTHONFRAMEWORKPREFIX=
                PYTHONFRAMEWORKINSTALLDIR=
+               PYTHONFRAMEWORKINSTALLNAMEPREFIX=
+               RESSRCDIR=
                FRAMEWORKINSTALLFIRST=
                FRAMEWORKINSTALLLAST=
                FRAMEWORKALTINSTALLFIRST=
                FRAMEWORKALTINSTALLLAST=
                FRAMEWORKPYTHONW=
+               INSTALLTARGETS="commoninstall bininstall maninstall"
+
                if test "x${prefix}" = "xNONE"; then
                        FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
                else
@@ -4144,65 +4222,76 @@ then :
                PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
                FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
                FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
-               FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
-               FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
-               FRAMEWORKPYTHONW="frameworkpythonw"
-               FRAMEWORKINSTALLAPPSPREFIX="/Applications"
 
-               if test "x${prefix}" = "xNONE" ; then
-                       FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+               case $ac_sys_system in #(
+                       Darwin) :
+                               FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
+                               FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
+                               FRAMEWORKPYTHONW="frameworkpythonw"
+                               FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                               INSTALLTARGETS="commoninstall bininstall maninstall"
 
-               else
-                       FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
-               fi
+                               if test "x${prefix}" = "xNONE" ; then
+                                       FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 
-               case "${enableval}" in
-               /System*)
-                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
-                       if test "${prefix}" = "NONE" ; then
-                               # See below
-                               FRAMEWORKUNIXTOOLSPREFIX="/usr"
-                       fi
-                       ;;
+                               else
+                                       FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+                               fi
 
-               /Library*)
-                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
-                       ;;
+                               case "${enableval}" in
+                               /System*)
+                                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                                       if test "${prefix}" = "NONE" ; then
+                                               # See below
+                                               FRAMEWORKUNIXTOOLSPREFIX="/usr"
+                                       fi
+                                       ;;
+
+                               /Library*)
+                                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                                       ;;
+
+                               */Library/Frameworks)
+                                       MDIR="`dirname "${enableval}"`"
+                                       MDIR="`dirname "${MDIR}"`"
+                                       FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
+
+                                       if test "${prefix}" = "NONE"; then
+                                               # User hasn't specified the
+                                               # --prefix option, but wants to install
+                                               # the framework in a non-default location,
+                                               # ensure that the compatibility links get
+                                               # installed relative to that prefix as well
+                                               # instead of in /usr/local.
+                                               FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
+                                       fi
+                                       ;;
 
-               */Library/Frameworks)
-                       MDIR="`dirname "${enableval}"`"
-                       MDIR="`dirname "${MDIR}"`"
-                       FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
-
-                       if test "${prefix}" = "NONE"; then
-                               # User hasn't specified the
-                               # --prefix option, but wants to install
-                               # the framework in a non-default location,
-                               # ensure that the compatibility links get
-                               # installed relative to that prefix as well
-                               # instead of in /usr/local.
-                               FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
-                       fi
-                       ;;
-
-               *)
-                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
-                       ;;
-               esac
+                               *)
+                                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                                       ;;
+                               esac
 
-               prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
+                               prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
+                               PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix}
+                               RESSRCDIR=Mac/Resources/framework
 
-               # Add files for Mac specific code to the list of output
-               # files:
-               ac_config_files="$ac_config_files Mac/Makefile"
+                               # Add files for Mac specific code to the list of output
+                               # files:
+                               ac_config_files="$ac_config_files Mac/Makefile"
 
-               ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile"
+                               ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile"
 
-               ac_config_files="$ac_config_files Mac/Resources/framework/Info.plist"
+                               ac_config_files="$ac_config_files Mac/Resources/framework/Info.plist"
 
-               ac_config_files="$ac_config_files Mac/Resources/app/Info.plist"
+                               ac_config_files="$ac_config_files Mac/Resources/app/Info.plist"
 
-       esac
+                               ;;
+                       *)
+                               as_fn_error $? "Unknown platform for framework build" "$LINENO" 5
+                               ;;
+                       esac
+               esac
 
 else $as_nop
 
@@ -4210,11 +4299,14 @@ else $as_nop
        PYTHONFRAMEWORKDIR=no-framework
        PYTHONFRAMEWORKPREFIX=
        PYTHONFRAMEWORKINSTALLDIR=
+       PYTHONFRAMEWORKINSTALLNAMEPREFIX=
+       RESSRCDIR=
        FRAMEWORKINSTALLFIRST=
        FRAMEWORKINSTALLLAST=
        FRAMEWORKALTINSTALLFIRST=
        FRAMEWORKALTINSTALLLAST=
        FRAMEWORKPYTHONW=
+       INSTALLTARGETS="commoninstall bininstall maninstall"
        if test "x${prefix}" = "xNONE" ; then
                FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
        else
@@ -4239,79 +4331,11 @@ fi
 
 
 
-printf "%s\n" "#define _PYTHONFRAMEWORK \"${PYTHONFRAMEWORK}\"" >>confdefs.h
 
 
-# Set name for machine-dependent library files
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5
-printf %s "checking MACHDEP... " >&6; }
-if test -z "$MACHDEP"
-then
-    # avoid using uname for cross builds
-    if test "$cross_compiling" = yes; then
-       # ac_sys_system and ac_sys_release are used for setting
-       # a lot of different things including 'define_xopen_source'
-       # in the case statement below.
-       case "$host" in
-       *-*-linux-android*)
-               ac_sys_system=Linux-android
-               ;;
-       *-*-linux*)
-               ac_sys_system=Linux
-               ;;
-       *-*-cygwin*)
-               ac_sys_system=Cygwin
-               ;;
-       *-*-vxworks*)
-           ac_sys_system=VxWorks
-           ;;
-       *-*-emscripten)
-           ac_sys_system=Emscripten
-           ;;
-       *-*-wasi)
-           ac_sys_system=WASI
-           ;;
-       *)
-               # for now, limit cross builds to known configurations
-               MACHDEP="unknown"
-               as_fn_error $? "cross build not supported for $host" "$LINENO" 5
-       esac
-       ac_sys_release=
-    else
-       ac_sys_system=`uname -s`
-       if test "$ac_sys_system" = "AIX" \
-       -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
-               ac_sys_release=`uname -v`
-       else
-               ac_sys_release=`uname -r`
-       fi
-    fi
-    ac_md_system=`echo $ac_sys_system |
-                       tr -d '/ ' | tr '[A-Z]' '[a-z]'`
-    ac_md_release=`echo $ac_sys_release |
-                       tr -d '/ ' | sed 's/^[A-Z]\.//' | sed 's/\..*//'`
-    MACHDEP="$ac_md_system$ac_md_release"
-
-    case $MACHDEP in
-       aix*) MACHDEP="aix";;
-       linux*) MACHDEP="linux";;
-       cygwin*) MACHDEP="cygwin";;
-       darwin*) MACHDEP="darwin";;
-       '')     MACHDEP="unknown";;
-    esac
-
-    if test "$ac_sys_system" = "SunOS"; then
-       # For Solaris, there isn't an OS version specific macro defined
-       # in most compilers, so we define one here.
-       SUNOS_VERSION=`echo $ac_sys_release | sed -e 's!\.\(0-9\)$!.0\1!g' | tr -d '.'`
+printf "%s\n" "#define _PYTHONFRAMEWORK \"${PYTHONFRAMEWORK}\"" >>confdefs.h
 
-printf "%s\n" "#define Py_SUNOS_VERSION $SUNOS_VERSION" >>confdefs.h
-
-    fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$MACHDEP\"" >&5
-printf "%s\n" "\"$MACHDEP\"" >&6; }
 
 
 if test "$cross_compiling" = yes; then
@@ -4319,27 +4343,27 @@ if test "$cross_compiling" = yes; then
        *-*-linux*)
                case "$host_cpu" in
                arm*)
-                       _host_cpu=arm
+                       _host_ident=arm
                        ;;
                *)
-                       _host_cpu=$host_cpu
+                       _host_ident=$host_cpu
                esac
                ;;
        *-*-cygwin*)
-               _host_cpu=
+               _host_ident=
                ;;
        *-*-vxworks*)
-               _host_cpu=$host_cpu
+               _host_ident=$host_cpu
                ;;
        wasm32-*-* | wasm64-*-*)
-               _host_cpu=$host_cpu
+               _host_ident=$host_cpu
                ;;
        *)
                # for now, limit cross builds to known configurations
                MACHDEP="unknown"
                as_fn_error $? "cross build not supported for $host" "$LINENO" 5
        esac
-       _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
+       _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}"
 fi
 
 # Some systems cannot stand _XOPEN_SOURCE being defined at all; they
@@ -6769,8 +6793,6 @@ case $ac_sys_system in #(
  ;;
 esac
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5
-printf "%s\n" "$MULTIARCH" >&6; }
 
 if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
   if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
@@ -6780,6 +6802,14 @@ elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then
   MULTIARCH=$PLATFORM_TRIPLET
 fi
 
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5
+printf "%s\n" "$MULTIARCH" >&6; }
+
+case $ac_sys_system in #(
+  *) :
+    SOABI_PLATFORM=$PLATFORM_TRIPLET
+ ;;
+esac
 
 if test x$MULTIARCH != x; then
   MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
@@ -7271,7 +7301,7 @@ fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDLIBRARY" >&5
 printf %s "checking LDLIBRARY... " >&6; }
 
-# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
+# Apple framework builds need more magic. LDLIBRARY is the dynamic
 # library that we build, but we do not want to link against it (we
 # will find it with a -framework option). For this reason there is an
 # extra variable BLDLIBRARY against which Python and the extension
@@ -7279,9 +7309,14 @@ printf %s "checking LDLIBRARY... " >&6; }
 # LDLIBRARY, but empty for MacOSX framework builds.
 if test "$enable_framework"
 then
-  LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-  RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
+  case $ac_sys_system in
+    Darwin)
+      LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';;
+    *)
+      as_fn_error $? "Unknown platform for framework build" "$LINENO" 5;;
+  esac
   BLDLIBRARY=''
+  RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
 else
   BLDLIBRARY='$(LDLIBRARY)'
 fi
@@ -7294,64 +7329,64 @@ printf "%s\n" "#define Py_ENABLE_SHARED 1" >>confdefs.h
 
   case $ac_sys_system in
     CYGWIN*)
-          LDLIBRARY='libpython$(LDVERSION).dll.a'
-          DLLLIBRARY='libpython$(LDVERSION).dll'
-          ;;
+      LDLIBRARY='libpython$(LDVERSION).dll.a'
+      DLLLIBRARY='libpython$(LDVERSION).dll'
+      ;;
     SunOS*)
-         LDLIBRARY='libpython$(LDVERSION).so'
-         BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
-         RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
-         INSTSONAME="$LDLIBRARY".$SOVERSION
-         if test "$with_pydebug" != yes
-         then
-             PY3LIBRARY=libpython3.so
-         fi
-          ;;
+      LDLIBRARY='libpython$(LDVERSION).so'
+      BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
+      RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+      INSTSONAME="$LDLIBRARY".$SOVERSION
+      if test "$with_pydebug" != yes
+      then
+        PY3LIBRARY=libpython3.so
+      fi
+      ;;
     Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*)
-         LDLIBRARY='libpython$(LDVERSION).so'
-         BLDLIBRARY='-L. -lpython$(LDVERSION)'
-         RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
-         INSTSONAME="$LDLIBRARY".$SOVERSION
-         if test "$with_pydebug" != yes
-          then
-             PY3LIBRARY=libpython3.so
-         fi
-         ;;
+      LDLIBRARY='libpython$(LDVERSION).so'
+      BLDLIBRARY='-L. -lpython$(LDVERSION)'
+      RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+      INSTSONAME="$LDLIBRARY".$SOVERSION
+      if test "$with_pydebug" != yes
+      then
+        PY3LIBRARY=libpython3.so
+      fi
+      ;;
     hp*|HP*)
-         case `uname -m` in
-               ia64)
-                       LDLIBRARY='libpython$(LDVERSION).so'
-                       ;;
-               *)
-                       LDLIBRARY='libpython$(LDVERSION).sl'
-                       ;;
-         esac
-         BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
-         RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
-         ;;
+      case `uname -m` in
+        ia64)
+          LDLIBRARY='libpython$(LDVERSION).so'
+          ;;
+        *)
+          LDLIBRARY='libpython$(LDVERSION).sl'
+          ;;
+      esac
+      BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
+      RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
+      ;;
     Darwin*)
-       LDLIBRARY='libpython$(LDVERSION).dylib'
-       BLDLIBRARY='-L. -lpython$(LDVERSION)'
-       RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
-       ;;
+      LDLIBRARY='libpython$(LDVERSION).dylib'
+      BLDLIBRARY='-L. -lpython$(LDVERSION)'
+      RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
+      ;;
     AIX*)
-       LDLIBRARY='libpython$(LDVERSION).so'
-       RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
-       ;;
+      LDLIBRARY='libpython$(LDVERSION).so'
+      RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
+      ;;
 
   esac
 else # shared is disabled
   PY_ENABLE_SHARED=0
   case $ac_sys_system in
     CYGWIN*)
-          BLDLIBRARY='$(LIBRARY)'
-          LDLIBRARY='libpython$(LDVERSION).dll.a'
-          ;;
+      BLDLIBRARY='$(LIBRARY)'
+      LDLIBRARY='libpython$(LDVERSION).dll.a'
+      ;;
   esac
 fi
 
 if test "$cross_compiling" = yes; then
-       RUNSHARED=
+  RUNSHARED=
 fi
 
 
@@ -23898,7 +23933,7 @@ printf %s "checking ABIFLAGS... " >&6; }
 printf "%s\n" "$ABIFLAGS" >&6; }
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SOABI" >&5
 printf %s "checking SOABI... " >&6; }
-SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
+SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${SOABI_PLATFORM:+-$SOABI_PLATFORM}
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5
 printf "%s\n" "$SOABI" >&6; }
 
@@ -23907,7 +23942,7 @@ printf "%s\n" "$SOABI" >&6; }
 if test "$Py_DEBUG" = 'true'; then
   # Similar to SOABI but remove "d" flag from ABIFLAGS
 
-  ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
+  ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${SOABI_PLATFORM:+-$SOABI_PLATFORM}
 
 printf "%s\n" "#define ALT_SOABI \"${ALT_SOABI}\"" >>confdefs.h
 
index dee7ed552b370f0e4ff275d353248b9c91dc339f..b39af7422c4c7ca71f11a4c1eaf4979276ff1dda 100644 (file)
@@ -307,6 +307,74 @@ if test "$with_pkg_config" = yes -a -z "$PKG_CONFIG"; then
   AC_MSG_ERROR([pkg-config is required])]
 fi
 
+# Set name for machine-dependent library files
+AC_ARG_VAR([MACHDEP], [name for machine-dependent library files])
+AC_MSG_CHECKING([MACHDEP])
+if test -z "$MACHDEP"
+then
+    # avoid using uname for cross builds
+    if test "$cross_compiling" = yes; then
+       # ac_sys_system and ac_sys_release are used for setting
+       # a lot of different things including 'define_xopen_source'
+       # in the case statement below.
+       case "$host" in
+       *-*-linux-android*)
+               ac_sys_system=Linux-android
+               ;;
+       *-*-linux*)
+               ac_sys_system=Linux
+               ;;
+       *-*-cygwin*)
+               ac_sys_system=Cygwin
+               ;;
+       *-*-vxworks*)
+           ac_sys_system=VxWorks
+           ;;
+       *-*-emscripten)
+           ac_sys_system=Emscripten
+           ;;
+       *-*-wasi)
+           ac_sys_system=WASI
+           ;;
+       *)
+               # for now, limit cross builds to known configurations
+               MACHDEP="unknown"
+               AC_MSG_ERROR([cross build not supported for $host])
+       esac
+       ac_sys_release=
+    else
+       ac_sys_system=`uname -s`
+       if test "$ac_sys_system" = "AIX" \
+       -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
+               ac_sys_release=`uname -v`
+       else
+               ac_sys_release=`uname -r`
+       fi
+    fi
+    ac_md_system=`echo $ac_sys_system |
+                       tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
+    ac_md_release=`echo $ac_sys_release |
+                       tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
+    MACHDEP="$ac_md_system$ac_md_release"
+
+    case $MACHDEP in
+       aix*) MACHDEP="aix";;
+       linux*) MACHDEP="linux";;
+       cygwin*) MACHDEP="cygwin";;
+       darwin*) MACHDEP="darwin";;
+       '')     MACHDEP="unknown";;
+    esac
+
+    if test "$ac_sys_system" = "SunOS"; then
+       # For Solaris, there isn't an OS version specific macro defined
+       # in most compilers, so we define one here.
+       SUNOS_VERSION=`echo $ac_sys_release | sed -e 's!\.\([0-9]\)$!.0\1!g' | tr -d '.'`
+       AC_DEFINE_UNQUOTED([Py_SUNOS_VERSION], [$SUNOS_VERSION],
+                          [The version of SunOS/Solaris as reported by `uname -r' without the dot.])
+    fi
+fi
+AC_MSG_RESULT(["$MACHDEP"])
+
 AC_MSG_CHECKING([for --enable-universalsdk])
 AC_ARG_ENABLE([universalsdk],
        AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@],
@@ -424,11 +492,15 @@ AC_ARG_ENABLE([framework],
                PYTHONFRAMEWORKDIR=no-framework
                PYTHONFRAMEWORKPREFIX=
                PYTHONFRAMEWORKINSTALLDIR=
+               PYTHONFRAMEWORKINSTALLNAMEPREFIX=
+               RESSRCDIR=
                FRAMEWORKINSTALLFIRST=
                FRAMEWORKINSTALLLAST=
                FRAMEWORKALTINSTALLFIRST=
                FRAMEWORKALTINSTALLLAST=
                FRAMEWORKPYTHONW=
+               INSTALLTARGETS="commoninstall bininstall maninstall"
+
                if test "x${prefix}" = "xNONE"; then
                        FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
                else
@@ -441,71 +513,85 @@ AC_ARG_ENABLE([framework],
                PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
                FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
                FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
-               FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
-               FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
-               FRAMEWORKPYTHONW="frameworkpythonw"
-               FRAMEWORKINSTALLAPPSPREFIX="/Applications"
 
-               if test "x${prefix}" = "xNONE" ; then
-                       FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+               case $ac_sys_system in #(
+                       Darwin) :
+                               FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
+                               FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
+                               FRAMEWORKPYTHONW="frameworkpythonw"
+                               FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                               INSTALLTARGETS="commoninstall bininstall maninstall"
 
-               else
-                       FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
-               fi
+                               if test "x${prefix}" = "xNONE" ; then
+                                       FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 
-               case "${enableval}" in
-               /System*)
-                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
-                       if test "${prefix}" = "NONE" ; then
-                               # See below
-                               FRAMEWORKUNIXTOOLSPREFIX="/usr"
-                       fi
-                       ;;
+                               else
+                                       FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+                               fi
 
-               /Library*)
-                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
-                       ;;
+                               case "${enableval}" in
+                               /System*)
+                                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                                       if test "${prefix}" = "NONE" ; then
+                                               # See below
+                                               FRAMEWORKUNIXTOOLSPREFIX="/usr"
+                                       fi
+                                       ;;
+
+                               /Library*)
+                                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                                       ;;
+
+                               */Library/Frameworks)
+                                       MDIR="`dirname "${enableval}"`"
+                                       MDIR="`dirname "${MDIR}"`"
+                                       FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
+
+                                       if test "${prefix}" = "NONE"; then
+                                               # User hasn't specified the
+                                               # --prefix option, but wants to install
+                                               # the framework in a non-default location,
+                                               # ensure that the compatibility links get
+                                               # installed relative to that prefix as well
+                                               # instead of in /usr/local.
+                                               FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
+                                       fi
+                                       ;;
 
-               */Library/Frameworks)
-                       MDIR="`dirname "${enableval}"`"
-                       MDIR="`dirname "${MDIR}"`"
-                       FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
-
-                       if test "${prefix}" = "NONE"; then
-                               # User hasn't specified the
-                               # --prefix option, but wants to install
-                               # the framework in a non-default location,
-                               # ensure that the compatibility links get
-                               # installed relative to that prefix as well
-                               # instead of in /usr/local.
-                               FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
-                       fi
-                       ;;
+                               *)
+                                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
+                                       ;;
+                               esac
 
-               *)
-                       FRAMEWORKINSTALLAPPSPREFIX="/Applications"
-                       ;;
+                               prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
+                               PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix}
+                               RESSRCDIR=Mac/Resources/framework
+
+                               # Add files for Mac specific code to the list of output
+                               # files:
+                               AC_CONFIG_FILES([Mac/Makefile])
+                               AC_CONFIG_FILES([Mac/PythonLauncher/Makefile])
+                               AC_CONFIG_FILES([Mac/Resources/framework/Info.plist])
+                               AC_CONFIG_FILES([Mac/Resources/app/Info.plist])
+                               ;;
+                       *)
+                               AC_MSG_ERROR([Unknown platform for framework build])
+                               ;;
+                       esac
                esac
-
-               prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
-
-               # Add files for Mac specific code to the list of output
-               # files:
-               AC_CONFIG_FILES([Mac/Makefile])
-               AC_CONFIG_FILES([Mac/PythonLauncher/Makefile])
-               AC_CONFIG_FILES([Mac/Resources/framework/Info.plist])
-               AC_CONFIG_FILES([Mac/Resources/app/Info.plist])
-       esac
        ],[
        PYTHONFRAMEWORK=
        PYTHONFRAMEWORKDIR=no-framework
        PYTHONFRAMEWORKPREFIX=
        PYTHONFRAMEWORKINSTALLDIR=
+       PYTHONFRAMEWORKINSTALLNAMEPREFIX=
+       RESSRCDIR=
        FRAMEWORKINSTALLFIRST=
        FRAMEWORKINSTALLLAST=
        FRAMEWORKALTINSTALLFIRST=
        FRAMEWORKALTINSTALLLAST=
        FRAMEWORKPYTHONW=
+       INSTALLTARGETS="commoninstall bininstall maninstall"
        if test "x${prefix}" = "xNONE" ; then
                FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
        else
@@ -519,6 +605,8 @@ AC_SUBST([PYTHONFRAMEWORKIDENTIFIER])
 AC_SUBST([PYTHONFRAMEWORKDIR])
 AC_SUBST([PYTHONFRAMEWORKPREFIX])
 AC_SUBST([PYTHONFRAMEWORKINSTALLDIR])
+AC_SUBST([PYTHONFRAMEWORKINSTALLNAMEPREFIX])
+AC_SUBST([RESSRCDIR])
 AC_SUBST([FRAMEWORKINSTALLFIRST])
 AC_SUBST([FRAMEWORKINSTALLLAST])
 AC_SUBST([FRAMEWORKALTINSTALLFIRST])
@@ -526,105 +614,38 @@ AC_SUBST([FRAMEWORKALTINSTALLLAST])
 AC_SUBST([FRAMEWORKPYTHONW])
 AC_SUBST([FRAMEWORKUNIXTOOLSPREFIX])
 AC_SUBST([FRAMEWORKINSTALLAPPSPREFIX])
+AC_SUBST([INSTALLTARGETS])
 
 AC_DEFINE_UNQUOTED([_PYTHONFRAMEWORK], ["${PYTHONFRAMEWORK}"],
                    [framework name])
 
-# Set name for machine-dependent library files
-AC_ARG_VAR([MACHDEP], [name for machine-dependent library files])
-AC_MSG_CHECKING([MACHDEP])
-if test -z "$MACHDEP"
-then
-    # avoid using uname for cross builds
-    if test "$cross_compiling" = yes; then
-       # ac_sys_system and ac_sys_release are used for setting
-       # a lot of different things including 'define_xopen_source'
-       # in the case statement below.
-       case "$host" in
-       *-*-linux-android*)
-               ac_sys_system=Linux-android
-               ;;
-       *-*-linux*)
-               ac_sys_system=Linux
-               ;;
-       *-*-cygwin*)
-               ac_sys_system=Cygwin
-               ;;
-       *-*-vxworks*)
-           ac_sys_system=VxWorks
-           ;;
-       *-*-emscripten)
-           ac_sys_system=Emscripten
-           ;;
-       *-*-wasi)
-           ac_sys_system=WASI
-           ;;
-       *)
-               # for now, limit cross builds to known configurations
-               MACHDEP="unknown"
-               AC_MSG_ERROR([cross build not supported for $host])
-       esac
-       ac_sys_release=
-    else
-       ac_sys_system=`uname -s`
-       if test "$ac_sys_system" = "AIX" \
-       -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
-               ac_sys_release=`uname -v`
-       else
-               ac_sys_release=`uname -r`
-       fi
-    fi
-    ac_md_system=`echo $ac_sys_system |
-                       tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
-    ac_md_release=`echo $ac_sys_release |
-                       tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
-    MACHDEP="$ac_md_system$ac_md_release"
-
-    case $MACHDEP in
-       aix*) MACHDEP="aix";;
-       linux*) MACHDEP="linux";;
-       cygwin*) MACHDEP="cygwin";;
-       darwin*) MACHDEP="darwin";;
-       '')     MACHDEP="unknown";;
-    esac
-
-    if test "$ac_sys_system" = "SunOS"; then
-       # For Solaris, there isn't an OS version specific macro defined
-       # in most compilers, so we define one here.
-       SUNOS_VERSION=`echo $ac_sys_release | sed -e 's!\.\([0-9]\)$!.0\1!g' | tr -d '.'`
-       AC_DEFINE_UNQUOTED([Py_SUNOS_VERSION], [$SUNOS_VERSION],
-                          [The version of SunOS/Solaris as reported by `uname -r' without the dot.])
-    fi
-fi
-AC_MSG_RESULT(["$MACHDEP"])
-
 AC_SUBST([_PYTHON_HOST_PLATFORM])
 if test "$cross_compiling" = yes; then
        case "$host" in
        *-*-linux*)
                case "$host_cpu" in
                arm*)
-                       _host_cpu=arm
+                       _host_ident=arm
                        ;;
                *)
-                       _host_cpu=$host_cpu
+                       _host_ident=$host_cpu
                esac
                ;;
        *-*-cygwin*)
-               _host_cpu=
+               _host_ident=
                ;;
        *-*-vxworks*)
-               _host_cpu=$host_cpu
+               _host_ident=$host_cpu
                ;;
        wasm32-*-* | wasm64-*-*)
-               _host_cpu=$host_cpu
+               _host_ident=$host_cpu
                ;;
        *)
                # for now, limit cross builds to known configurations
                MACHDEP="unknown"
                AC_MSG_ERROR([cross build not supported for $host])
        esac
-       _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
+       _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}"
 fi
 
 # Some systems cannot stand _XOPEN_SOURCE being defined at all; they
@@ -935,6 +956,14 @@ else
 fi
 rm -f conftest.out
 
+dnl On some platforms, using a true "triplet" for MULTIARCH would be redundant.
+dnl For example, `arm64-apple-darwin` is redundant, because there isn't a
+dnl non-Apple Darwin. Including the CPU architecture can also be potentially
+dnl redundant - on macOS, for example, it's possible to do a single compile
+dnl pass that includes multiple architectures, so it would be misleading for
+dnl MULTIARCH (and thus the sysconfigdata module name) to include a single CPU
+dnl architecture. PLATFORM_TRIPLET will be a pair or single value for these
+dnl platforms.
 AC_MSG_CHECKING([for multiarch])
 AS_CASE([$ac_sys_system],
   [Darwin*], [MULTIARCH=""],
@@ -942,7 +971,6 @@ AS_CASE([$ac_sys_system],
   [MULTIARCH=$($CC --print-multiarch 2>/dev/null)]
 )
 AC_SUBST([MULTIARCH])
-AC_MSG_RESULT([$MULTIARCH])
 
 if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
   if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
@@ -952,6 +980,16 @@ elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then
   MULTIARCH=$PLATFORM_TRIPLET
 fi
 AC_SUBST([PLATFORM_TRIPLET])
+AC_MSG_RESULT([$MULTIARCH])
+
+dnl Even if we *do* include the CPU architecture in the MULTIARCH value, some
+dnl platforms don't need the CPU architecture in the SOABI tag. These platforms
+dnl will have multiple sysconfig modules (one for each CPU architecture), but
+dnl use a single "fat" binary at runtime. SOABI_PLATFORM is the component of
+dnl the PLATFORM_TRIPLET that will be used in binary module extensions.
+AS_CASE([$ac_sys_system],
+  [SOABI_PLATFORM=$PLATFORM_TRIPLET]
+)
 
 if test x$MULTIARCH != x; then
   MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\""
@@ -1294,7 +1332,7 @@ fi
 
 AC_MSG_CHECKING([LDLIBRARY])
 
-# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
+# Apple framework builds need more magic. LDLIBRARY is the dynamic
 # library that we build, but we do not want to link against it (we
 # will find it with a -framework option). For this reason there is an
 # extra variable BLDLIBRARY against which Python and the extension
@@ -1302,9 +1340,14 @@ AC_MSG_CHECKING([LDLIBRARY])
 # LDLIBRARY, but empty for MacOSX framework builds.
 if test "$enable_framework"
 then
-  LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-  RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
+  case $ac_sys_system in
+    Darwin)
+      LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';;
+    *)
+      AC_MSG_ERROR([Unknown platform for framework build]);;
+  esac
   BLDLIBRARY=''
+  RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
 else
   BLDLIBRARY='$(LDLIBRARY)'
 fi
@@ -1316,64 +1359,64 @@ if test $enable_shared = "yes"; then
             [Defined if Python is built as a shared library.])
   case $ac_sys_system in
     CYGWIN*)
-          LDLIBRARY='libpython$(LDVERSION).dll.a'
-          DLLLIBRARY='libpython$(LDVERSION).dll'
-          ;;
+      LDLIBRARY='libpython$(LDVERSION).dll.a'
+      DLLLIBRARY='libpython$(LDVERSION).dll'
+      ;;
     SunOS*)
-         LDLIBRARY='libpython$(LDVERSION).so'
-         BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
-         RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
-         INSTSONAME="$LDLIBRARY".$SOVERSION
-         if test "$with_pydebug" != yes
-         then
-             PY3LIBRARY=libpython3.so
-         fi
-          ;;
+      LDLIBRARY='libpython$(LDVERSION).so'
+      BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
+      RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+      INSTSONAME="$LDLIBRARY".$SOVERSION
+      if test "$with_pydebug" != yes
+      then
+        PY3LIBRARY=libpython3.so
+      fi
+      ;;
     Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*)
-         LDLIBRARY='libpython$(LDVERSION).so'
-         BLDLIBRARY='-L. -lpython$(LDVERSION)'
-         RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
-         INSTSONAME="$LDLIBRARY".$SOVERSION
-         if test "$with_pydebug" != yes
-          then
-             PY3LIBRARY=libpython3.so
-         fi
-         ;;
+      LDLIBRARY='libpython$(LDVERSION).so'
+      BLDLIBRARY='-L. -lpython$(LDVERSION)'
+      RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+      INSTSONAME="$LDLIBRARY".$SOVERSION
+      if test "$with_pydebug" != yes
+      then
+        PY3LIBRARY=libpython3.so
+      fi
+      ;;
     hp*|HP*)
-         case `uname -m` in
-               ia64)
-                       LDLIBRARY='libpython$(LDVERSION).so'
-                       ;;
-               *)
-                       LDLIBRARY='libpython$(LDVERSION).sl'
-                       ;;
-         esac
-         BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
-         RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
-         ;;
+      case `uname -m` in
+        ia64)
+          LDLIBRARY='libpython$(LDVERSION).so'
+          ;;
+        *)
+          LDLIBRARY='libpython$(LDVERSION).sl'
+          ;;
+      esac
+      BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
+      RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
+      ;;
     Darwin*)
-       LDLIBRARY='libpython$(LDVERSION).dylib'
-       BLDLIBRARY='-L. -lpython$(LDVERSION)'
-       RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
-       ;;
+      LDLIBRARY='libpython$(LDVERSION).dylib'
+      BLDLIBRARY='-L. -lpython$(LDVERSION)'
+      RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
+      ;;
     AIX*)
-       LDLIBRARY='libpython$(LDVERSION).so'
-       RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
-       ;;
+      LDLIBRARY='libpython$(LDVERSION).so'
+      RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
+      ;;
 
   esac
 else # shared is disabled
   PY_ENABLE_SHARED=0
   case $ac_sys_system in
     CYGWIN*)
-          BLDLIBRARY='$(LIBRARY)'
-          LDLIBRARY='libpython$(LDVERSION).dll.a'
-          ;;
+      BLDLIBRARY='$(LIBRARY)'
+      LDLIBRARY='libpython$(LDVERSION).dll.a'
+      ;;
   esac
 fi
 
 if test "$cross_compiling" = yes; then
-       RUNSHARED=
+  RUNSHARED=
 fi
 
 AC_ARG_VAR([HOSTRUNNER], [Program to run CPython for the host platform])
@@ -5824,7 +5867,7 @@ AC_SUBST([SOABI])
 AC_MSG_CHECKING([ABIFLAGS])
 AC_MSG_RESULT([$ABIFLAGS])
 AC_MSG_CHECKING([SOABI])
-SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
+SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${SOABI_PLATFORM:+-$SOABI_PLATFORM}
 AC_MSG_RESULT([$SOABI])
 
 # Release build, debug build (Py_DEBUG), and trace refs build (Py_TRACE_REFS)
@@ -5832,7 +5875,7 @@ AC_MSG_RESULT([$SOABI])
 if test "$Py_DEBUG" = 'true'; then
   # Similar to SOABI but remove "d" flag from ABIFLAGS
   AC_SUBST([ALT_SOABI])
-  ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
+  ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${SOABI_PLATFORM:+-$SOABI_PLATFORM}
   AC_DEFINE_UNQUOTED([ALT_SOABI], ["${ALT_SOABI}"],
             [Alternative SOABI used in debug build to load C extensions built in release mode])
 fi