changeset 29651:151a1c2a5658

Use a compilation check to distinguish between x86 and x86_64, uname and CFLAGS checks alone are not reliable.
author reimar
date Sat, 19 Sep 2009 13:36:58 +0000
parents df76c6b66c8e
children 224efd8fe6eb
files configure
diffstat 1 files changed, 19 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/configure	Sat Sep 19 13:18:48 2009 +0000
+++ b/configure	Sat Sep 19 13:36:58 2009 +0000
@@ -1392,16 +1392,8 @@
 
       # x86/x86pc is used by QNX
       case "$(uname -m 2>&1)" in
-      i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;;
+      x86_64|amd64|i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;;
       ia64) host_arch=ia64 ;;
-      x86_64|amd64)
-        if [ -n "$($_cc -dumpmachine | sed -n '/^x86_64-/p;/^amd64-/p')" -a \
-             -z "$(echo $CFLAGS $_cc | grep -- -m32)" ]; then
-          host_arch=x86_64
-        else
-          host_arch=i386
-        fi
-      ;;
       macppc|ppc) host_arch=ppc ;;
       ppc64) host_arch=ppc64 ;;
       alpha) host_arch=alpha ;;
@@ -1442,14 +1434,6 @@
   fi
 fi
 
-echo "Detected operating system: $system_name"
-echo "Detected host architecture: $host_arch"
-
-if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
-  die "Runtime CPU detection only works for x86, x86-64 and PPC!"
-fi
-
-
 extra_cflags="-I. $extra_cflags"
 _timer=timer-linux.c
 _getch=getch2.c
@@ -1532,6 +1516,24 @@
 echo >> "$TMPLOG"
 
 
+if x86 ; then
+  cat > $TMPC << EOF
+int main(void) {
+    int test[sizeof(char *)-7];
+    return 0;
+}
+EOF
+  cc_check && host_arch=x86_64 || host_arch=i386
+fi
+
+echo "Detected operating system: $system_name"
+echo "Detected host architecture: $host_arch"
+
+if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
+  die "Runtime CPU detection only works for x86, x86-64 and PPC!"
+fi
+
+
 # Checking CC version...
 # Intel C++ Compilers (no autoselect, use CC=/some/binary ./configure)
 if test "$(basename $_cc)" = "icc" || test "$(basename $_cc)" = "ecc"; then