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