IWMMXT configure support + runtime selection patch by (Gildas Bazin, gbazin : altern...
[ffmpeg.git] / configure
index a479dee..ae2aef4 100755 (executable)
--- a/configure
+++ b/configure
@@ -53,6 +53,7 @@ echo "  --cpu=CPU                force cpu to CPU  [$cpu]"
 echo "  --tune=PROCESSOR         tune code for a particular CPU (may fails or misperforms on other CPUs)"
 echo "  --powerpc-perf-enable    enable performance report on PPC (requires enabling PMC)"
 echo "  --disable-mmx            disable mmx usage"
+echo "  --disable-iwmmxt         disable iwmmxt usage"
 echo "  --disable-altivec        disable AltiVec usage"
 echo "  --disable-audio-oss      disable OSS audio support [default=no]"
 echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
@@ -112,6 +113,7 @@ cpu=`uname -m`
 tune="generic"
 powerpc_perf="no"
 mmx="default"
+iwmmxt="default"
 altivec="default"
 mmi="default"
 case "$cpu" in
@@ -403,9 +405,9 @@ CODEC_LIST=`grep 'register_avcodec(&[a-z]' $source_path/libavcodec/allcodecs.c
 
 for opt do
   case "$opt" in
-  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
+  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`; force_prefix=yes
   ;;
-  --libdir=*) libdir=`echo $opt | cut -d '=' -f 2`
+  --libdir=*) libdir=`echo $opt | cut -d '=' -f 2`; force_libdir=yes
   ;;
   --mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
   ;;
@@ -413,7 +415,7 @@ for opt do
   ;;
   --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
   ;;
-  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
+  --cc=*) cc=`echo $opt | cut -d '=' -f 2-`
   ;;
   --make=*) make=`echo $opt | cut -d '=' -f 2`
   ;;
@@ -433,6 +435,8 @@ for opt do
   ;;
   --disable-mmx) mmx="no"
   ;;
+  --disable-iwmmxt) iwmmxt="no"
+  ;;
   --disable-altivec) altivec="no"
   ;;
   --enable-gprof) gprof="yes"
@@ -614,6 +618,20 @@ if test $mmx = "default"; then
     fi
 fi
 
+# check iwmmxt support
+if test $iwmmxt = "default" -a $cpu = "armv4l"; then
+    cat > $TMPC << EOF
+        int main(void) { 
+        __asm__ __volatile__ ("wunpckelub wr6, wr4");
+        }
+EOF
+
+    iwmmxt=no
+    if ${cross_prefix}${cc} -o $TMPO $TMPC 2> /dev/null ; then
+        iwmmxt=yes
+    fi
+fi
+
 #Darwin CC versions
 needmdynamicnopic="no"
 if test $targetos = Darwin; then
@@ -792,8 +810,8 @@ if test "$mingw32" = "yes" ; then
     SLIBPREF=""
     SLIBSUF=".dll"
     EXESUF=".exe"
-    prefix="/c/Program Files/FFmpeg"
-    bindir="$prefix"
+    if test "$force_prefix" != yes; then prefix="/c/Program Files/FFmpeg"; fi
+    if test "$force_libdir" != yes; then bindir="$prefix"; fi
 fi
 
 cc="${cross_prefix}${cc}"
@@ -1144,6 +1162,9 @@ if test $cpu = "x86" -o $cpu = "x86_64"; then
 echo "MMX enabled      $mmx"
 echo "Vector Builtins  $builtin_vector"
 fi
+if test $cpu = "armv4l"; then
+echo "IWMMXT enabled   $iwmmxt"
+fi
 if test $cpu = "mips"; then
 echo "MMI enabled      $mmi"
 fi
@@ -1299,6 +1320,10 @@ if test "$builtin_vector" = "yes" ; then
   echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
   echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
 fi
+if test "$iwmmxt" = "yes" ; then
+  echo "TARGET_IWMMXT=yes" >> config.mak
+  echo "#define HAVE_IWMMXT 1" >> $TMPH
+fi
 if test "$mmi" = "yes" ; then
   echo "TARGET_MMI=yes" >> config.mak
   echo "#define HAVE_MMI 1" >> $TMPH