]> git.sesse.net Git - x264/blobdiff - configure
Fix bug in b-adapt 1
[x264] / configure
index e7e869d6c2c5ece1e367d7e91fe829c9d1bb5799..53198e85a8d64924d19fc665032e4c07181bc1e7 100755 (executable)
--- a/configure
+++ b/configure
@@ -20,25 +20,26 @@ echo "  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS"
 echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS"
 echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"
 echo "  --host=HOST              build programs to run on HOST"
+echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools"
 echo ""
 exit 1
 fi
 
 cc_check() {
-    cat > conftest.c << EOF
-#include <$1>
-int main () { $3 return 0; }
-EOF
+    rm -f conftest.c
+    [ -n "$1" ] && echo "#include <$1>" > conftest.c
+    echo "int main () { $3 return 0; }" >> conftest.c
     $CC conftest.c $CFLAGS $LDFLAGS $2 -o conftest 2>$DEVNULL
-    TMP="$?"
-    return $TMP
 }
 
 as_check() {
     echo "$1" > conftest.asm
     $AS conftest.asm $ASFLAGS $2 -o conftest.o 2>$DEVNULL
-    TMP="$?"
-    return $TMP
+}
+
+die() {
+    echo "$@"
+    exit 1
 }
 
 rm -f config.h config.mak x264.pc conftest*
@@ -60,13 +61,11 @@ pic="no"
 vis="no"
 shared="no"
 
-CC="${CC-gcc}"
 CFLAGS="$CFLAGS -Wall -I."
 LDFLAGS="$LDFLAGS"
+ASFLAGS="$ASFLAGS"
 HAVE_GETOPT_LONG=1
-
-AS=""
-ASFLAGS=""
+cross_prefix=""
 
 EXE=""
 
@@ -145,12 +144,21 @@ for opt do
         --host=*)
             host="${opt#--host=}"
             ;;
+        --cross-prefix=*)
+            cross_prefix="${opt#--cross-prefix=}"
+            ;;
         *)
             echo "Unknown option $opt, ignored"
             ;;
     esac
 done
 
+CC="${CC-${cross_prefix}gcc}"
+AR="${AR-${cross_prefix}ar}"
+RANLIB="${RANLIB-${cross_prefix}ranlib}"
+STRIP="${STRIP-${cross_prefix}strip}"
+AS=""
+
 if [ "x$host" = x ]; then
     host=`./config.guess`
 fi
@@ -194,17 +202,19 @@ case $host_os in
     CFLAGS="$CFLAGS -I/usr/X11R6/include"
     LDFLAGS="$LDFLAGS -lm"
     ;;
-  linux*)
+  *linux*)
     SYS="LINUX"
     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
     LDFLAGS="$LDFLAGS -lm"
     ;;
   cygwin*)
     SYS="MINGW"
-    CFLAGS="$CFLAGS -mno-cygwin"
-    LDFLAGS="$LDFLAGS -mno-cygwin"
     EXE=".exe"
     DEVNULL="NUL"
+    if cc_check "" -mno-cygwin; then
+        CFLAGS="$CFLAGS -mno-cygwin"
+        LDFLAGS="$LDFLAGS -mno-cygwin"
+    fi
     ;;
   mingw*)
     SYS="MINGW"
@@ -218,8 +228,7 @@ case $host_os in
     HAVE_GETOPT_LONG=0
     ;;
   *)
-    echo "Unknown system $host, edit the configure"
-    exit 1
+    die "Unknown system $host, edit the configure"
     ;;
 esac
 
@@ -228,6 +237,9 @@ case $host_cpu in
     ARCH="X86"
     AS="yasm"
     ASFLAGS="$ASFLAGS -O2"
+    if [[ "$asm" == yes && "$CFLAGS" != *-march* ]]; then
+      CFLAGS="$CFLAGS -march=i686"
+    fi
     if [ "$SYS" = MACOSX ]; then
       ASFLAGS="$ASFLAGS -f macho -DPREFIX"
     elif [ "$SYS" = MINGW ]; then
@@ -243,8 +255,10 @@ case $host_cpu in
       ASFLAGS="$ASFLAGS -f macho64 -m amd64 -DPIC -DPREFIX"
       CFLAGS="$CFLAGS -arch x86_64"
       LDFLAGS="$LDFLAGS -arch x86_64"
+    elif [ "$SYS" = MINGW ]; then
+      ASFLAGS="$ASFLAGS -f win32 -m amd64 -DPREFIX"
     else
-      ASFLAGS="-f elf -m amd64"
+      ASFLAGS="$ASFLAGS -f elf -m amd64"
     fi
     ;;
   powerpc|powerpc64)
@@ -261,7 +275,7 @@ case $host_cpu in
       ARCH="UltraSparc"
       CFLAGS="$CFLAGS -mcpu=ultrasparc"
       LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
-      AS="as"
+      AS="${cross_prefix}as"
       ASFLAGS="$ASFLAGS -xarch=v8plusa"
     else
       ARCH="Sparc"
@@ -286,20 +300,29 @@ esac
 
 # check requirements
 
+cc_check || die "No working C compiler found."
+
 if [ $shared = yes -a \( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" \) ] ; then
     pic="yes"
 fi
 
 if [ $asm = yes -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then
-    if as_check "pinsrd xmm0, [esp], 0" ; then
-        CFLAGS="$CFLAGS -DHAVE_MMX"
-    else
+    if ! as_check "pinsrd xmm0, [esp], 0" ; then
         VER=`($AS --version || echo no assembler) 2>$DEVNULL | head -n 1`
         echo "Found $VER"
         echo "Minimum version is yasm-0.6.1"
         echo "If you really want to compile without asm, configure with --disable-asm."
         exit 1
     fi
+    if ! cc_check '' '' 'asm("pabsw %xmm0, %xmm0");' ; then
+        VER=`(as --version || echo no gnu as) 2>$DEVNULL | head -n 1`
+        echo "Found $VER"
+        echo "Minimum version is binutils-2.17"
+        echo "Your compiler can't handle inline SSSE3 asm."
+        echo "If you really want to compile without asm, configure with --disable-asm."
+        exit 1
+    fi
+    CFLAGS="$CFLAGS -DHAVE_MMX"
 fi
 [ $asm = no ] && AS=""
 [ "x$AS" = x ] && asm="no"
@@ -330,6 +353,10 @@ if test "$pthread" = "auto" ; then
                 pthread="yes"
                 libpthread="-lpthreadGC2 -lwsock32"
                 CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"
+            elif cc_check pthread.h "-lpthreadGC2 -lws2_32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
+                pthread="yes"
+                libpthread="-lpthreadGC2 -lws2_32"
+                CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"
             fi
             ;;
         OPENBSD)
@@ -366,8 +393,15 @@ if [ "$avis_input" = "auto" ] ; then
     fi
 fi
 if [ "$avis_input" = "yes" ] ; then
-    echo "#define AVIS_INPUT" >> config.h
-    LDFLAGS="$LDFLAGS -lvfw32"
+    if cc_check "stdlib.h" -lvfw32 ; then
+        echo "#define AVIS_INPUT" >> config.h
+        LDFLAGS="$LDFLAGS -lvfw32"
+    elif cc_check "stdlib.h" -lavifil32 ; then
+        echo "#define AVIS_INPUT" >> config.h
+        LDFLAGS="$LDFLAGS -lavifil32"
+    else
+        avis_input="no";
+    fi
 fi
 
 if [ "$pic" = "yes" ] ; then
@@ -412,6 +446,9 @@ CC=$CC
 CFLAGS=$CFLAGS
 ALTIVECFLAGS=$ALTIVECFLAGS
 LDFLAGS=$LDFLAGS
+AR=$AR
+RANLIB=$RANLIB
+STRIP=$STRIP
 AS=$AS
 ASFLAGS=$ASFLAGS
 EXE=$EXE