1From bb409432f03dd8256865292e382ad16613737829 Mon Sep 17 00:00:00 2001
2From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
3Date: Fri, 31 May 2019 15:34:34 +0200
4Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
5
6 float
7
8When (cross) compiling for softfloat mips, __mips_hard_float will not be
9defined and detection of OS triplet in configure.ac / configure will fail.
10
11This also has to do with the custom detection of the build triplet. Trying
12to do this in a more autoconf/autotools manner.
13
14Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
15Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
16
17---
18 configure.ac | 175 +++++++--------------------------------------------
19 1 file changed, 21 insertions(+), 154 deletions(-)
20
21diff --git a/configure.ac b/configure.ac
22index 4230ef2..ee08b1b 100644
23--- a/configure.ac
24+++ b/configure.ac
25@@ -718,160 +718,27 @@ then
26 fi
27
28
29-AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
30-cat >> conftest.c <<EOF
31-#undef bfin
32-#undef cris
33-#undef fr30
34-#undef linux
35-#undef hppa
36-#undef hpux
37-#undef i386
38-#undef mips
39-#undef powerpc
40-#undef sparc
41-#undef unix
42-#if defined(__ANDROID__)
43-    # Android is not a multiarch system.
44-#elif defined(__linux__)
45-# if defined(__x86_64__) && defined(__LP64__)
46-        x86_64-linux-gnu
47-# elif defined(__x86_64__) && defined(__ILP32__)
48-        x86_64-linux-gnux32
49-# elif defined(__i386__)
50-        i386-linux-gnu
51-# elif defined(__aarch64__) && defined(__AARCH64EL__)
52-#  if defined(__ILP32__)
53-        aarch64_ilp32-linux-gnu
54-#  else
55-        aarch64-linux-gnu
56-#  endif
57-# elif defined(__aarch64__) && defined(__AARCH64EB__)
58-#  if defined(__ILP32__)
59-        aarch64_be_ilp32-linux-gnu
60-#  else
61-        aarch64_be-linux-gnu
62-#  endif
63-# elif defined(__alpha__)
64-        alpha-linux-gnu
65-# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
66-#  if defined(__ARMEL__)
67-        arm-linux-gnueabihf
68-#  else
69-        armeb-linux-gnueabihf
70-#  endif
71-# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
72-#  if defined(__ARMEL__)
73-        arm-linux-gnueabi
74-#  else
75-        armeb-linux-gnueabi
76-#  endif
77-# elif defined(__hppa__)
78-        hppa-linux-gnu
79-# elif defined(__ia64__)
80-        ia64-linux-gnu
81-# elif defined(__m68k__) && !defined(__mcoldfire__)
82-        m68k-linux-gnu
83-# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL)
84-#  if _MIPS_SIM == _ABIO32
85-        mipsisa32r6el-linux-gnu
86-#  elif _MIPS_SIM == _ABIN32
87-        mipsisa64r6el-linux-gnuabin32
88-#  elif _MIPS_SIM == _ABI64
89-        mipsisa64r6el-linux-gnuabi64
90-#  else
91-#   error unknown platform triplet
92-#  endif
93-# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6)
94-#  if _MIPS_SIM == _ABIO32
95-        mipsisa32r6-linux-gnu
96-#  elif _MIPS_SIM == _ABIN32
97-        mipsisa64r6-linux-gnuabin32
98-#  elif _MIPS_SIM == _ABI64
99-        mipsisa64r6-linux-gnuabi64
100-#  else
101-#   error unknown platform triplet
102-#  endif
103-# elif defined(__mips_hard_float) && defined(_MIPSEL)
104-#  if _MIPS_SIM == _ABIO32
105-        mipsel-linux-gnu
106-#  elif _MIPS_SIM == _ABIN32
107-        mips64el-linux-gnuabin32
108-#  elif _MIPS_SIM == _ABI64
109-        mips64el-linux-gnuabi64
110-#  else
111-#   error unknown platform triplet
112-#  endif
113-# elif defined(__mips_hard_float)
114-#  if _MIPS_SIM == _ABIO32
115-        mips-linux-gnu
116-#  elif _MIPS_SIM == _ABIN32
117-        mips64-linux-gnuabin32
118-#  elif _MIPS_SIM == _ABI64
119-        mips64-linux-gnuabi64
120-#  else
121-#   error unknown platform triplet
122-#  endif
123-# elif defined(__or1k__)
124-        or1k-linux-gnu
125-# elif defined(__powerpc__) && defined(__SPE__)
126-        powerpc-linux-gnuspe
127-# elif defined(__powerpc64__)
128-#  if defined(__LITTLE_ENDIAN__)
129-        powerpc64le-linux-gnu
130-#  else
131-        powerpc64-linux-gnu
132-#  endif
133-# elif defined(__powerpc__)
134-        powerpc-linux-gnu
135-# elif defined(__s390x__)
136-        s390x-linux-gnu
137-# elif defined(__s390__)
138-        s390-linux-gnu
139-# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
140-        sh4-linux-gnu
141-# elif defined(__sparc__) && defined(__arch64__)
142-        sparc64-linux-gnu
143-# elif defined(__sparc__)
144-        sparc-linux-gnu
145-# elif defined(__riscv)
146-#  if __riscv_xlen == 32
147-        riscv32-linux-gnu
148-#  elif __riscv_xlen == 64
149-        riscv64-linux-gnu
150-#  else
151-#   error unknown platform triplet
152-#  endif
153-# else
154-#   error unknown platform triplet
155-# endif
156-#elif defined(__FreeBSD_kernel__)
157-# if defined(__LP64__)
158-        x86_64-kfreebsd-gnu
159-# elif defined(__i386__)
160-        i386-kfreebsd-gnu
161-# else
162-#   error unknown platform triplet
163-# endif
164-#elif defined(__gnu_hurd__)
165-        i386-gnu
166-#elif defined(__APPLE__)
167-        darwin
168-#elif defined(__VXWORKS__)
169-        vxworks
170-#else
171-# error unknown platform triplet
172-#endif
173-
174-EOF
175-
176-if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
177-  PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' 	'`
178-  AC_MSG_RESULT([$PLATFORM_TRIPLET])
179-else
180-  AC_MSG_RESULT([none])
181-fi
182-rm -f conftest.c conftest.out
183+AC_CANONICAL_TARGET
184+## Not using $target to filter out vendor
185+## Need to handle macos, vxworks and hurd special (?) :-/
186+case ${target_os} in
187+     darwin*)
188+     	PLATFORM_TRIPLET=darwin
189+	;;
190+     hurd*)
191+     	PLATFORM_TRIPLET=i386-gnu
192+	;;
193+     vxworks*)
194+     	PLATFORM_TRIPLET=vxworks
195+	;;
196+     *)
197+        if test "${target_cpu}" != "i686"; then
198+		PLATFORM_TRIPLET=${target_cpu}-${target_os}
199+	else
200+		PLATFORM_TRIPLET=i386-${target_os}
201+	fi
202+	;;
203+esac
204
205 AC_MSG_CHECKING([for multiarch])
206 AS_CASE([$ac_sys_system],
207