| From d2abe7328cea770425405aa0da2f4c2dac89fcad Mon Sep 17 00:00:00 2001 |
| From: Matthias Schoepfer <matthias.schoepfer@ithinx.io> |
| Date: Fri, 31 May 2019 15:34:34 +0200 |
| Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft |
| |
| float |
| |
| When (cross) compiling for softfloat mips, __mips_hard_float will not be |
| defined and detection of OS triplet in configure.ac / configure will fail. |
| |
| This also has to do with the custom detection of the build triplet. Trying |
| to do this in a more autoconf/autotools manner. |
| |
| Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196] |
| Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io> |
| |
| --- |
| configure.ac | 196 ++++++--------------------------------------------- |
| 1 file changed, 21 insertions(+), 175 deletions(-) |
| |
| diff --git a/configure.ac b/configure.ac |
| index 358b6ea..085fc0b 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -907,181 +907,27 @@ then |
| fi |
| |
| |
| -AC_MSG_CHECKING([for the platform triplet based on compiler characteristics]) |
| -cat > conftest.c <<EOF |
| -#undef bfin |
| -#undef cris |
| -#undef fr30 |
| -#undef linux |
| -#undef hppa |
| -#undef hpux |
| -#undef i386 |
| -#undef mips |
| -#undef powerpc |
| -#undef sparc |
| -#undef unix |
| -#if defined(__ANDROID__) |
| - # Android is not a multiarch system. |
| -#elif defined(__linux__) |
| -# if defined(__x86_64__) && defined(__LP64__) |
| - x86_64-linux-gnu |
| -# elif defined(__x86_64__) && defined(__ILP32__) |
| - x86_64-linux-gnux32 |
| -# elif defined(__i386__) |
| - i386-linux-gnu |
| -# elif defined(__aarch64__) && defined(__AARCH64EL__) |
| -# if defined(__ILP32__) |
| - aarch64_ilp32-linux-gnu |
| -# else |
| - aarch64-linux-gnu |
| -# endif |
| -# elif defined(__aarch64__) && defined(__AARCH64EB__) |
| -# if defined(__ILP32__) |
| - aarch64_be_ilp32-linux-gnu |
| -# else |
| - aarch64_be-linux-gnu |
| -# endif |
| -# elif defined(__alpha__) |
| - alpha-linux-gnu |
| -# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP) |
| -# if defined(__ARMEL__) |
| - arm-linux-gnueabihf |
| -# else |
| - armeb-linux-gnueabihf |
| -# endif |
| -# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP) |
| -# if defined(__ARMEL__) |
| - arm-linux-gnueabi |
| -# else |
| - armeb-linux-gnueabi |
| -# endif |
| -# elif defined(__hppa__) |
| - hppa-linux-gnu |
| -# elif defined(__ia64__) |
| - ia64-linux-gnu |
| -# elif defined(__m68k__) && !defined(__mcoldfire__) |
| - m68k-linux-gnu |
| -# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL) |
| -# if _MIPS_SIM == _ABIO32 |
| - mipsisa32r6el-linux-gnu |
| -# elif _MIPS_SIM == _ABIN32 |
| - mipsisa64r6el-linux-gnuabin32 |
| -# elif _MIPS_SIM == _ABI64 |
| - mipsisa64r6el-linux-gnuabi64 |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) |
| -# if _MIPS_SIM == _ABIO32 |
| - mipsisa32r6-linux-gnu |
| -# elif _MIPS_SIM == _ABIN32 |
| - mipsisa64r6-linux-gnuabin32 |
| -# elif _MIPS_SIM == _ABI64 |
| - mipsisa64r6-linux-gnuabi64 |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -# elif defined(__mips_hard_float) && defined(_MIPSEL) |
| -# if _MIPS_SIM == _ABIO32 |
| - mipsel-linux-gnu |
| -# elif _MIPS_SIM == _ABIN32 |
| - mips64el-linux-gnuabin32 |
| -# elif _MIPS_SIM == _ABI64 |
| - mips64el-linux-gnuabi64 |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -# elif defined(__mips_hard_float) |
| -# if _MIPS_SIM == _ABIO32 |
| - mips-linux-gnu |
| -# elif _MIPS_SIM == _ABIN32 |
| - mips64-linux-gnuabin32 |
| -# elif _MIPS_SIM == _ABI64 |
| - mips64-linux-gnuabi64 |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -# elif defined(__or1k__) |
| - or1k-linux-gnu |
| -# elif defined(__powerpc__) && defined(__SPE__) |
| - powerpc-linux-gnuspe |
| -# elif defined(__powerpc64__) |
| -# if defined(__LITTLE_ENDIAN__) |
| - powerpc64le-linux-gnu |
| -# else |
| - powerpc64-linux-gnu |
| -# endif |
| -# elif defined(__powerpc__) |
| - powerpc-linux-gnu |
| -# elif defined(__s390x__) |
| - s390x-linux-gnu |
| -# elif defined(__s390__) |
| - s390-linux-gnu |
| -# elif defined(__sh__) && defined(__LITTLE_ENDIAN__) |
| - sh4-linux-gnu |
| -# elif defined(__sparc__) && defined(__arch64__) |
| - sparc64-linux-gnu |
| -# elif defined(__sparc__) |
| - sparc-linux-gnu |
| -# elif defined(__riscv) |
| -# if __riscv_xlen == 32 |
| - riscv32-linux-gnu |
| -# elif __riscv_xlen == 64 |
| - riscv64-linux-gnu |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -#elif defined(__FreeBSD_kernel__) |
| -# if defined(__LP64__) |
| - x86_64-kfreebsd-gnu |
| -# elif defined(__i386__) |
| - i386-kfreebsd-gnu |
| -# else |
| -# error unknown platform triplet |
| -# endif |
| -#elif defined(__gnu_hurd__) |
| - i386-gnu |
| -#elif defined(__APPLE__) |
| - darwin |
| -#elif defined(__VXWORKS__) |
| - vxworks |
| -#elif defined(__wasm32__) |
| -# if defined(__EMSCRIPTEN__) |
| - wasm32-emscripten |
| -# elif defined(__wasi__) |
| - wasm32-wasi |
| -# else |
| -# error unknown wasm32 platform |
| -# endif |
| -#elif defined(__wasm64__) |
| -# if defined(__EMSCRIPTEN) |
| - wasm64-emscripten |
| -# elif defined(__wasi__) |
| - wasm64-wasi |
| -# else |
| -# error unknown wasm64 platform |
| -# endif |
| -#else |
| -# error unknown platform triplet |
| -#endif |
| - |
| -EOF |
| - |
| -if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then |
| - PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` |
| - case "$build_os" in |
| - linux-musl*) |
| - PLATFORM_TRIPLET=`echo "$PLATFORM_TRIPLET" | sed 's/linux-gnu/linux-musl/'` |
| - ;; |
| - esac |
| - AC_MSG_RESULT([$PLATFORM_TRIPLET]) |
| -else |
| - AC_MSG_RESULT([none]) |
| -fi |
| -rm -f conftest.c conftest.out |
| +AC_CANONICAL_TARGET |
| +## Not using $target to filter out vendor |
| +## Need to handle macos, vxworks and hurd special (?) :-/ |
| +case ${target_os} in |
| + darwin*) |
| + PLATFORM_TRIPLET=darwin |
| + ;; |
| + hurd*) |
| + PLATFORM_TRIPLET=i386-gnu |
| + ;; |
| + vxworks*) |
| + PLATFORM_TRIPLET=vxworks |
| + ;; |
| + *) |
| + if test "${target_cpu}" != "i686"; then |
| + PLATFORM_TRIPLET=${target_cpu}-${target_os} |
| + else |
| + PLATFORM_TRIPLET=i386-${target_os} |
| + fi |
| + ;; |
| +esac |
| |
| AC_MSG_CHECKING([for multiarch]) |
| AS_CASE([$ac_sys_system], |