X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=configure;h=eb72a1e6c04d089f1fbf8228688c9972cb19b0bf;hb=6fbdeff0e51f6afc38fbb1476a4db81322779da4;hp=38b36d8266ad2e3e17bf21d29819c4a1bc15702d;hpb=aacd348637e38795dd7ae3c7c8c908d8c0cd24fd;p=musl diff --git a/configure b/configure index 38b36d82..eb72a1e6 100755 --- a/configure +++ b/configure @@ -222,14 +222,16 @@ printf "%s\n" "$target" # Convert to just ARCH # case "$target" in +# Catch these early to simplify matching for 32-bit archs +mips64*|powerpc64*) fail "$0: unsupported target \"$target\"" ;; arm*) ARCH=arm ;; i?86*) ARCH=i386 ;; -x86_64-x32*|x32*) ARCH=x32 ;; +x86_64-x32*|x32*|x86_64*x32) ARCH=x32 ;; x86_64*) ARCH=x86_64 ;; -mips-*|mipsel-*) ARCH=mips ;; -microblaze-*) ARCH=microblaze ;; -powerpc-*) ARCH=powerpc ;; -sh-*) ARCH=sh ;; +mips*) ARCH=mips ;; +microblaze*) ARCH=microblaze ;; +powerpc*) ARCH=powerpc ;; +sh[1-9bel-]*|sh|superh*) ARCH=sh ;; unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; *) fail "$0: unknown or unsupported target \"$target\"" ;; esac @@ -408,6 +410,10 @@ printf "using compiler runtime libraries: %s\n" "$LIBCC" SUBARCH= t="$CFLAGS_C99FSE $CPPFLAGS $CFLAGS_AUTO $CFLAGS" +if test "$ARCH" = "x86_64" ; then +trycppif __ILP32__ "$t" && ARCH=x32 +fi + if test "$ARCH" = "arm" ; then trycppif __ARMEB__ "$t" && SUBARCH=${SUBARCH}eb trycppif __ARM_PCS_VFP "$t" && SUBARCH=${SUBARCH}hf @@ -421,8 +427,24 @@ fi test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ && SUBARCH=${SUBARCH}el -test "$ARCH" = "sh" && trycppif __LITTLE_ENDIAN__ "$t" \ -&& SUBARCH=${SUBARCH}el +if test "$ARCH" = "sh" ; then +trycppif __BIG_ENDIAN__ "$t" && SUBARCH=${SUBARCH}eb +if trycppif __SH_FPU_ANY__ "$t" ; then +# Some sh configurations are broken and replace double with float +# rather than using softfloat when the fpu is present but only +# supports single precision. Reject them. +printf "checking whether compiler's double type is IEEE double... " +echo 'typedef char dblcheck[(int)sizeof(double)-5];' > "$tmpc" +if $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then +printf "yes\n" +else +printf "no\n" +fail "$0: error: compiler's floating point configuration is unsupported" +fi +else +SUBARCH=${SUBARCH}-nofpu +fi +fi test "$SUBARCH" \ && printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH"