Modify ABI tests in MIPS preconfigure.
authorSteve Ellcey <sellcey@mips.com>
Tue, 9 Sep 2014 17:01:51 +0000 (10:01 -0700)
committerSteve Ellcey <sellcey@mips.com>
Tue, 9 Sep 2014 17:01:51 +0000 (10:01 -0700)
ChangeLog
sysdeps/mips/preconfigure

index 3754779..100e923 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-09-09  Steve Ellcey  <sellcey@mips.com>
+
+       * sysdeps/mips/preconfigure: Modify ABI tests.
+
 2014-09-07  Carlos O'Donell  <carlos@systemhalted.org>
 
        * sysdeps/unix/sysv/linux/hppa/c++-types.data: New file.
index b215eb2..fb572d7 100644 (file)
@@ -1,34 +1,24 @@
-case "$machine" in
-mips64*)       base_machine=mips64
-               case "$CC $CFLAGS $CPPFLAGS " in
-               *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-               *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-               *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-               *) mips_cc_abi=default ;;
-               esac
-               case $config_os in
-               *abin32*) mips_config_abi=n32 ;;
-               *abi64*|*abin64*) mips_config_abi=64 ;;
-               *abi32*|*abio32*) mips_config_abi=32 ;;
-               *) mips_config_abi=$mips_cc_abi ;;
-               esac
-               case $mips_config_abi in
-               default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-               n32) machine=mips/mips64/n32 ;;
-               64) machine=mips/mips64/n64 ;;
-               32) machine=mips/mips32/kern64 ;;
-               esac
-               machine=$machine/$config_machine
-               if test $mips_config_abi != $mips_cc_abi; then
-                 # This won't make it to config.make, but we want to
-                 # set this in case configure tests depend on it.
-                 CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-               fi
-               ;;
-mips*)         base_machine=mips
-               case "$CC $CFLAGS $CPPFLAGS " in
-               *" -mips16 "*) machine=mips/mips32/mips16/$machine ;;
-               *) machine=mips/mips32/$machine ;;
-               esac
-               ;;
-esac
+abiflag=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | sed -n 's/^#define _MIPS_SIM \(.*\)/\1/p'`
+mips16flag=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | sed -n 's/^#define __mips16 \(.*\)/\1/p'`
+
+base_machine=mips
+if test "$abiflag" = "_ABIO32" ; then
+       if test "$mips16flag" = "1" ; then
+               machine=mips/mips32/mips16
+       else
+               machine=mips/mips32
+       fi
+elif test "$abiflag" = "_ABIN32" ; then
+       machine=mips/mips64/n32
+elif test "$abiflag" = "_ABI64" ; then
+       machine=mips/mips64/n64
+else
+       as_fn_error $? "Unable to determine ABI." "$LINENO" 5
+fi
+# $config_machine is not really needed here but the slash after $machine is
+# needed by the case statement in sysdeps/unix/sysv/linux/mips/configure.ac.
+machine=$machine/$config_machine
+
+if test "$abiflag" != "_ABIO32" -a "$mips16flag" = "1"; then
+       as_fn_error $? "mips16 is only supported with the O32 ABI." "$LINENO" 5
+fi