[MPlayer-dev-eng] [PATCH] properly check for i386 vs. x86_64

Reimar Döffinger Reimar.Doeffinger at gmx.de
Thu Sep 17 20:52:06 CEST 2009


Hello,
current check is unreliable and e.g. fails on systems with 32 bit gcc
but -m64 used or just plain wrong uname -m/uname -p
It is a bit ugly because TMPC is set so late (must be after OS detection
to be together with TMPEXE).
It might make sense to split apart OS and CPU detection instead.
Index: configure
===================================================================
--- configure   (revision 29686)
+++ configure   (working copy)
@@ -1389,16 +1389,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 ;;
@@ -1439,14 +1431,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
@@ -1529,6 +1513,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




More information about the MPlayer-dev-eng mailing list