simplify
[libav.git] / configure
index 7aa9f56..083cf65 100755 (executable)
--- a/configure
+++ b/configure
@@ -4,7 +4,8 @@
 #
 
 # make sure we are running under a compatible shell
-(: ${foo%%bar}) 2>/dev/null
+unset foo
+(: ${foo%%bar}) 2>/dev/null && ! (: ${foo?}) 2>/dev/null
 if test "$?" != 0; then
     if test "x$FFMPEG_CONFIGURE_EXEC" = x; then
         FFMPEG_CONFIGURE_EXEC=1
@@ -30,6 +31,7 @@ show_help(){
   echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
   echo "  --mandir=DIR             install man page in DIR [PREFIX/man]"
   echo "  --enable-mp3lame         enable MP3 encoding via libmp3lame [default=no]"
+  echo "  --enable-libnut          enable NUT support via libnut [default=no]"
   echo "  --enable-libogg          enable Ogg support via libogg [default=no]"
   echo "  --enable-vorbis          enable Vorbis support via libvorbis [default=no]"
   echo "  --enable-faad            enable FAAD support via libfaad [default=no]"
@@ -56,6 +58,8 @@ show_help(){
   echo "  --enable-pthreads        use pthreads [default=no]"
   echo "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
   echo "                           and libraw1394 [default=no]"
+  echo "  --enable-swscaler        software scaler support [default=no]"
+  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
   echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
   echo "                           and ffmpeg will be under GPL [default=no]"
   echo ""
@@ -69,12 +73,13 @@ show_help(){
   echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
   echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
   echo "  --build-suffix=SUFFIX    suffix for application specific build []"
-  echo "  --cpu=CPU                force cpu to CPU  [$cpu]"
-  echo "  --tune=CPU               tune code for a particular CPU"
-  echo "                           (may fail or perform badly on other CPUs)"
+  echo "  --arch=ARCH              select architecture  [$arch]"
+  echo "  --cpu=CPU                selects the minimum cpu required (affects
+                                   instruction selection, may crash on older CPUs)"
   echo "  --powerpc-perf-enable    enable performance report on PPC"
   echo "                           (requires enabling PMC)"
   echo "  --disable-mmx            disable MMX usage"
+  echo "  --disable-armv5te        disable armv5te usage"
   echo "  --disable-iwmmxt         disable iwmmxt usage"
   echo "  --disable-altivec        disable AltiVec usage"
   echo "  --disable-audio-oss      disable OSS audio support [default=no]"
@@ -84,15 +89,17 @@ show_help(){
   echo "  --disable-bktr           disable bktr video grabbing [default=no]"
   echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
   echo "  --disable-network        disable network support [default=no]"
+  echo "  --disable-ipv6           disable ipv6 support [default=no]"
   echo "  --disable-zlib           disable zlib [default=no]"
-  echo "  --disable-simple_idct    disable simple IDCT routines [default=no]"
   echo "  --disable-vhook          disable video hooking support"
   echo "  --enable-gprof           enable profiling with gprof [$gprof]"
   echo "  --disable-debug          disable debugging symbols"
   echo "  --disable-opts           disable compiler optimizations"
+  echo "  --enable-extra-warnings  enable more compiler warnings"
   echo "  --disable-mpegaudio-hp   faster (but less accurate)"
   echo "                           MPEG audio decoding [default=no]"
   echo "  --disable-protocols      disable I/O protocols support [default=no]"
+  echo "  --disable-ffmpeg         disable ffmpeg build"
   echo "  --disable-ffserver       disable ffserver build"
   echo "  --disable-ffplay         disable ffplay build"
   echo "  --enable-small           optimize for size instead of speed"
@@ -155,8 +162,54 @@ EOF
     exit 1
 }
 
+toupper(){
+    echo "$@" | tr '[a-z]' '[A-Z]'
+}
+
+set_all(){
+    value=$1
+    shift
+    for var in $*; do
+        eval $var=$value
+    done
+}
+
+enable(){
+    set_all yes $*
+}
+
+disable(){
+    set_all no $*
+}
+
 enabled(){
-    eval test "\$$1" = "yes"
+    eval test "x\$$1" = "xyes"
+}
+
+enabled_all(){
+    for opt; do
+        enabled $opt || return 1
+    done
+}
+
+enabled_any(){
+    for opt; do
+        enabled $opt && return 0
+    done
+}
+
+print_config(){
+    pfx=$1
+    header=$2
+    makefile=$3
+    shift 3
+    for cfg; do
+        if enabled $cfg; then
+            ucname="${pfx}`toupper $cfg`"
+            echo "#define ${ucname} 1" >> $header
+            echo "${ucname}=yes" >> $makefile
+        fi
+    done
 }
 
 flags_saved(){
@@ -213,27 +266,29 @@ add_extralibs(){
     append extralibs "$@"
 }
 
+check_cmd(){
+    log "$@"
+    "$@" >>$logfile 2>&1
+}
+
 check_cc(){
     log check_cc "$@"
     cat >$TMPC
     log_file $TMPC
-    log $cc $CFLAGS "$@" -c -o $TMPO $TMPC
-    $cc $CFLAGS "$@" -c -o $TMPO $TMPC >>$logfile 2>&1
+    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
 }
 
 check_cpp(){
     log check_cpp "$@"
     cat >$TMPC
     log_file $TMPC
-    log $cc $CFLAGS "$@" -E -o $TMPO $TMPC
-    $cc $CFLAGS "$@" -E -o $TMPO $TMPC >>$logfile 2>&1
+    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
 }
 
 check_ld(){
     log check_ld "$@"
     check_cc || return
-    log $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
-    $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs >>$logfile 2>&1
+    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
 }
 
 check_cflags(){
@@ -298,11 +353,75 @@ require(){
     check_lib $header $func "$@" || die "ERROR: $name not found"
 }
 
-filter_out(){
-    pattern="$1"
-    shift
-    echo "$@" | sed "s%\\<$pattern\\>%%g"
-}
+CONFIG_LIST='
+    encoders
+    decoders
+    parsers
+    muxers
+    demuxers
+    a52
+    a52bin
+    amr
+    amr_nb
+    amr_nb_fixed
+    amr_wb
+    audio_beos
+    audio_oss
+    avisynth
+    beos_netserver
+    bktr
+    dc1394
+    dts
+    dv1394
+    faac
+    faad
+    faadbin
+    ffmpeg
+    ffplay
+    ffserver
+    gpl
+    ipv6
+    libgsm
+    libnut
+    libogg
+    libvorbis
+    memalign_hack
+    mp3lame
+    mpegaudio_hp
+    network
+    pp
+    protocols
+    swscaler
+    vhook
+    video4linux
+    video4linux2
+    x264
+    xvid
+    zlib
+'
+
+HAVE_LIST='
+    altivec_h
+    beosthreads
+    byteswap_h
+    dcbzl
+    dlfcn
+    dlopen
+    freetype2
+    gprof
+    imlib2
+    localtime_r
+    lrintf
+    malloc_h
+    memalign
+    mlib
+    os2threads
+    pthreads
+    sdl
+    sdl_video_size
+    threads
+    w32threads
+'
 
 # set temporary file name
 if test ! -z "$TMPDIR" ; then
@@ -335,79 +454,87 @@ ar="ar"
 ranlib="ranlib"
 make="make"
 strip="strip"
-cpu=`uname -m`
-tune="generic"
+arch=`uname -m`
+cpu="generic"
 powerpc_perf="no"
 mmx="default"
+cmov="no"
+cmov_is_fast="no"
+armv5te="default"
 iwmmxt="default"
 altivec="default"
+dcbzl="no"
 mmi="default"
-case "$cpu" in
+case "$arch" in
   i386|i486|i586|i686|i86pc|BePC)
-    cpu="x86"
+    arch="x86_32"
   ;;
   x86_64|amd64)
-    cpu="x86"
-    canon_arch="`cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
+    arch="x86_32"
+    canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
     if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
       if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
-        cpu="x86_64"
+        arch="x86_64"
       fi
     fi
   ;;
-  # armv4l is a subset of armv5tel
-  armv4l|armv5tel)
-    cpu="armv4l"
+  # armv4l is a subset of armv[567]*l
+  arm|armv[4567]*l)
+    arch="armv4l"
   ;;
   alpha)
-    cpu="alpha"
+    arch="alpha"
   ;;
   "Power Macintosh"|ppc|ppc64|powerpc)
-    cpu="powerpc"
+    arch="powerpc"
   ;;
   mips|mipsel|IP*)
-    cpu="mips"
+    arch="mips"
   ;;
   sun4u|sparc64)
-    cpu="sparc64"
+    arch="sparc64"
   ;;
   sparc)
-    cpu="sparc"
+    arch="sparc"
   ;;
   sh4)
-    cpu="sh4"
+    arch="sh4"
   ;;
   parisc|parisc64)
-    cpu="parisc"
+    arch="parisc"
   ;;
   s390|s390x)
-    cpu="s390"
+    arch="s390"
   ;;
   m68k)
-    cpu="m68k"
+    arch="m68k"
   ;;
   ia64)
-    cpu="ia64"
+    arch="ia64"
+  ;;
+  bfin)
+    arch="bfin"
   ;;
   *)
-    cpu="unknown"
+    arch="unknown"
   ;;
 esac
 gprof="no"
-v4l="yes"
-v4l2="yes"
+video4linux="yes"
+video4linux2="yes"
 bktr="no"
 audio_oss="yes"
 audio_beos="no"
 dv1394="yes"
 dc1394="no"
 network="yes"
+ipv6="yes"
 zlib="yes"
 libgsm="no"
 mp3lame="no"
+libnut="no"
 libogg="no"
-vorbis="no"
-theora="no"
+libvorbis="no"
 faad="no"
 faadbin="no"
 faac="no"
@@ -424,26 +551,29 @@ lstatic="yes"
 lshared="no"
 optimize="yes"
 debug="yes"
+extrawarnings="no"
 dostrip="yes"
 installstrip="-s"
 extralibs="-lm"
-simpleidct="yes"
 bigendian="no"
 inttypes="yes"
 emu_fast_int="no"
 vhook="default"
+avisynth="no"
 dlfcn="no"
 dlopen="no"
 mpegaudio_hp="yes"
 SHFLAGS='-shared -Wl,-soname,$@'
-VHOOKFLAGS="$SHFLAGS"
-netserver="no"
+VHOOKSHFLAGS='$(SHFLAGS)'
+beos_netserver="no"
 need_inet_aton="no"
 protocols="yes"
+ffmpeg="yes"
 ffserver="yes"
 ffplay="yes"
 LIBOBJFLAGS=""
 FFLDFLAGS=-Wl,--warn-common
+LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
 FFSERVERLDFLAGS=-Wl,-E
 LDCONFIG="ldconfig"
 LIBPREF="lib"
@@ -460,10 +590,13 @@ amr_nb="no"
 amr_wb="no"
 amr_nb_fixed="no"
 amr_if2="no"
-sunmlib="no"
+mlib="no"
 pthreads="no"
+swscaler="no"
 gpl="no"
-memalignhack="no"
+memalign_hack="no"
+asmalign_pot="unknown"
+LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
 
 # OS specific
 targetos=`uname -s`
@@ -471,7 +604,7 @@ case $targetos in
 BeOS)
 PREFIX="/boot/home/config"
 # helps building libavcodec
-CFLAGS="$CFLAGS -DPIC -fomit-frame-pointer"
+add_cflags "-DPIC -fomit-frame-pointer"
 # 3 gcc releases known for BeOS, each with ugly bugs
 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
 case "$gcc_version" in
@@ -479,29 +612,30 @@ case "$gcc_version" in
 mmx="no"
 ;;
 *20010315*) echo "BeBits gcc"
-CFLAGS="$CFLAGS -fno-expensive-optimizations"
+add_cflags "-fno-expensive-optimizations"
 ;;
 esac
 SHFLAGS=-nostart
 # disable Linux things
 audio_oss="no"
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 dv1394="no"
 # enable BeOS things
 audio_beos="yes"
+beosthreads="yes"
 # no need for libm, but the inet stuff
 # Check for BONE
 if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
 extralibs="-lbind -lsocket"
 else
-netserver="yes"
+beos_netserver="yes"
 need_inet_aton="yes"
 extralibs="-lnet"
 fi ;;
 SunOS)
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 audio_oss="no"
 dv1394="no"
 make="gmake"
@@ -509,48 +643,48 @@ FFLDFLAGS=""
 FFSERVERLDFLAGS=""
 SHFLAGS="-shared -Wl,-h,\$@"
 need_inet_aton="yes"
-extralibs="$extralibs -lsocket -lnsl"
+add_extralibs "-lsocket -lnsl"
 ;;
 NetBSD)
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 bktr="yes"
 audio_oss="yes"
 dv1394="no"
 make="gmake"
-extralibs="$extralibs -lossaudio"
+add_extralibs "-lossaudio"
 ;;
 OpenBSD)
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 bktr="yes"
 audio_oss="yes"
 dv1394="no"
 make="gmake"
 LIBOBJFLAGS="\$(PIC)"
-LDCONFIG="ldconfig -m \$(libdir)"
-extralibs="$extralibs -lossaudio"
+LDCONFIG="ldconfig -m \$(shlibdir)"
+add_extralibs "-lossaudio"
 ;;
 FreeBSD)
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 bktr="yes"
 audio_oss="yes"
 dv1394="no"
 make="gmake"
-CFLAGS="$CFLAGS -pthread"
+add_cflags "-pthread"
 ;;
 GNU/kFreeBSD)
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 bktr="yes"
 audio_oss="yes"
 dv1394="no"
-CFLAGS="$CFLAGS -pthread"
+add_cflags "-pthread"
 ;;
 BSD/OS)
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 bktr="yes"
 audio_oss="yes"
 dv1394="no"
@@ -561,12 +695,12 @@ installstrip=""
 ;;
 Darwin)
 cc="cc"
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 audio_oss="no"
 dv1394="no"
-SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(libdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
-VHOOKFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(libdir)/vhook/$@'
+SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
+VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
 extralibs=""
 strip="strip -x"
 installstrip=""
@@ -575,6 +709,7 @@ SLIBSUF=".dylib"
 SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
 FFSERVERLDFLAGS=-Wl,-bind_at_load
+LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
 ;;
 MINGW32*)
 # Note: the rest of the mingw32 config is done afterwards as mingw32
@@ -584,11 +719,12 @@ mingw32="yes"
 CYGWIN*)
 targetos=CYGWIN
 shlibdir='${PREFIX}/bin'
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 audio_oss="yes"
 dv1394="no"
-vhook="no"
+VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
+VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
 extralibs=""
 EXESUF=".exe"
 SLIBPREF="cyg"
@@ -598,12 +734,13 @@ SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
 SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
 ;;
 Linux)
+LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
 ;;
 IRIX*)
 targetos=IRIX
 ranlib="echo ignoring ranlib"
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 audio_oss="no"
 make="gmake"
 ;;
@@ -612,7 +749,7 @@ TMPE=$TMPE".exe"
 ar="emxomfar -p128"
 ranlib="echo ignoring ranlib"
 strip="echo ignoring strip"
-CFLAGS="$CFLAGS -Zomf"
+add_cflags "-Zomf"
 FFLDFLAGS="-Zomf -Zstack 16384 -s"
 SHFLAGS="-Zdll -Zomf"
 FFSERVERLDFLAGS=""
@@ -623,14 +760,14 @@ SLIBSUF=".dll"
 EXESUF=".exe"
 extralibs=""
 pkg_requires=""
-v4l="no"
-v4l2="no"
+video4linux="no"
+video4linux2="no"
 audio_oss="no"
 dv1394="no"
 ffserver="no"
 vhook="no"
 os2="yes"
-
+os2threads="yes"
 ;;
 *)
 targetos="${targetos}-UNKNOWN"
@@ -638,13 +775,15 @@ targetos="${targetos}-UNKNOWN"
 esac
 
 # find source path
-source_path="`dirname $0`"
+source_path="`dirname \"$0\"`"
 source_path_used="yes"
 if test -z "$source_path" -o "$source_path" = "." ; then
-    source_path=`pwd`
+    source_path="`pwd`"
     source_path_used="no"
 else
     source_path="`cd \"$source_path\"; pwd`"
+    echo "$source_path" | grep -q '[[:blank:]]' &&
+      die "Out of tree builds are impossible with whitespace in source path."
 fi
 
 if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
@@ -656,11 +795,13 @@ for opt do
   FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
 done
 
-ENCODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_encoder)' $source_path/libavcodec/allcodecs.c  | sed 's/.*&\(.*\)).*/\1/'`
-DECODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_decoder)' $source_path/libavcodec/allcodecs.c  | sed 's/.*&\(.*\)).*/\1/'`
-PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' $source_path/libavcodec/allcodecs.c  | sed 's/.*&\(.*\)).*/\1/'`
-MUXER_LIST=`grep 'av_register_output_format(&[a-z]' $source_path/libavformat/allformats.c  | sed 's/.*&\(.*\)).*/\1/'`
-DEMUXER_LIST=`grep 'av_register_input_format(&[a-z]' $source_path/libavformat/allformats.c  | sed 's/.*&\(.*\)).*/\1/'`
+ENCODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_encoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
+DECODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_decoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
+PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
+MUXER_LIST=`grep 'av_register_output_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
+DEMUXER_LIST=`grep 'av_register_input_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
+
+enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
 
 for opt do
   optval="${opt#*=}"
@@ -689,31 +830,33 @@ for opt do
   ;;
   --make=*) make="$optval"
   ;;
-  --extra-cflags=*) CFLAGS="$CFLAGS $optval"
+  --extra-cflags=*) add_cflags "$optval"
   ;;
-  --extra-ldflags=*) EXTRALDFLAGS="$optval"
+  --extra-ldflags=*) add_ldflags "$optval"
   ;;
-  --extra-libs=*) extralibs="$optval"
+  --extra-libs=*) add_extralibs "$optval"
   ;;
   --build-suffix=*) BUILDSUF="$optval"
   ;;
-  --cpu=*) cpu="$optval"
+  --arch=*) arch="$optval"
   ;;
-  --tune=*) tune="$optval"
+  --cpu=*) cpu="$optval"
   ;;
   --powerpc-perf-enable) powerpc_perf="yes"
   ;;
   --disable-mmx) mmx="no"
   ;;
+  --disable-armv5te) armv5te="no"
+  ;;
   --disable-iwmmxt) iwmmxt="no"
   ;;
   --disable-altivec) altivec="no"
   ;;
   --enable-gprof) gprof="yes"
   ;;
-  --disable-v4l) v4l="no"
+  --disable-v4l) video4linux="no"
   ;;
-  --disable-v4l2) v4l2="no"
+  --disable-v4l2) video4linux2="no"
   ;;
   --disable-bktr) bktr="no"
   ;;
@@ -725,6 +868,8 @@ for opt do
   ;;
   --disable-network) network="no"; ffserver="no"
   ;;
+  --disable-ipv6) ipv6="no";
+  ;;
   --disable-zlib) zlib="no"
   ;;
   --enable-a52) a52="yes"
@@ -739,10 +884,12 @@ for opt do
   ;;
   --enable-mp3lame) mp3lame="yes"
   ;;
+  --enable-libnut) libnut="yes"
+  ;;
   --enable-libogg) libogg="yes"
     pkg_requires="$pkg_requires ogg >= 1.1"
   ;;
-  --enable-vorbis) vorbis="yes"
+  --enable-vorbis) libvorbis="yes"
     pkg_requires="$pkg_requires vorbis vorbisenc"
   ;;
   --enable-faad) faad="yes"
@@ -755,13 +902,13 @@ for opt do
   ;;
   --enable-x264) x264="yes"
   ;;
+  --enable-avisynth) avisynth="yes";
+  ;;
   --enable-dc1394) dc1394="yes"
     pkg_requires="$pkg_requires libraw1394"
   ;;
   --disable-vhook) vhook="no"
   ;;
-  --disable-simple_idct) simpleidct="no"
-  ;;
   --enable-mingw32) mingw32="yes"
   ;;
   --enable-mingwce) mingwce="yes"
@@ -778,10 +925,14 @@ for opt do
   ;;
   --disable-opts) optimize="no"
   ;;
+  --enable-extra-warnings) extrawarnings="yes"
+  ;;
   --disable-mpegaudio-hp) mpegaudio_hp="no"
   ;;
   --disable-protocols) protocols="no"; network="no"; ffserver="no"
   ;;
+  --disable-ffmpeg) ffmpeg="no"
+  ;;
   --disable-ffserver) ffserver="no"
   ;;
   --disable-ffplay) ffplay="no"
@@ -796,45 +947,47 @@ for opt do
   ;;
   --enable-amr_if2) amr="yes"; amr_if2="yes"
   ;;
-  --enable-sunmlib) sunmlib="yes"
+  --enable-sunmlib) mlib="yes"
   ;;
   --enable-pthreads) pthreads="yes"
   ;;
+  --enable-swscaler) swscaler="yes"
+  ;;
   --enable-gpl) gpl="yes"
   ;;
-  --enable-memalign-hack) memalignhack="yes"
+  --enable-memalign-hack) memalign_hack="yes"
   ;;
   --disable-strip) dostrip="no"
   ;;
-  --enable-encoder=*) ENCODER_LIST="$ENCODER_LIST ${optval}_encoder"
+  --enable-encoder=*) enable ${optval}_encoder
   ;;
-  --enable-decoder=*) DECODER_LIST="$DECODER_LIST ${optval}_decoder"
+  --enable-decoder=*) enable ${optval}_decoder
   ;;
-  --disable-encoder=*) ENCODER_LIST="`filter_out ${optval}_encoder $ENCODER_LIST`"
+  --disable-encoder=*) disable ${optval}_encoder
   ;;
-  --disable-decoder=*) DECODER_LIST="`filter_out ${optval}_decoder $DECODER_LIST`"
+  --disable-decoder=*) disable ${optval}_decoder
   ;;
-  --disable-encoders) ENCODER_LIST=""
+  --disable-encoders) disable $ENCODER_LIST
   ;;
-  --disable-decoders) DECODER_LIST=""
+  --disable-decoders) disable $DECODER_LIST
   ;;
-  --enable-muxer=*) MUXER_LIST="$MUXER_LIST ${optval}_muxer"
+  --enable-muxer=*) enable ${optval}_muxer
   ;;
-  --disable-muxer=*) MUXER_LIST="`filter_out ${optval}_muxer $MUXER_LIST`"
+  --disable-muxer=*) disable ${optval}_muxer
   ;;
-  --disable-muxers) MUXER_LIST=""; ffserver="no"
+  --disable-muxers) disable $MUXER_LIST; ffserver="no"
   ;;
-  --enable-demuxer=*) DEMUXER_LIST="$DEMUXER_LIST ${optval}_demuxer"
+  --enable-demuxer=*) enable ${optval}_demuxer
   ;;
-  --disable-demuxer=*) DEMUXER_LIST="`filter_out ${optval}_demuxer $DEMUXER_LIST`"
+  --disable-demuxer=*) disable ${optval}_demuxer
   ;;
-  --disable-demuxers) DEMUXER_LIST=""
+  --disable-demuxers) disable $DEMUXER_LIST
   ;;
-  --enable-parser=*) PARSER_LIST="$PARSER_LIST ${optval}_parser"
+  --enable-parser=*) enable ${optval}_parser
   ;;
-  --disable-parser=*) PARSER_LIST="`filter_out ${optval}_parser $PARSER_LIST`"
+  --disable-parser=*) disable ${optval}_parser
   ;;
-  --disable-parsers) PARSER_LIST=""
+  --disable-parsers) disable $PARSER_LIST
   ;;
   --help) show_help
   ;;
@@ -864,27 +1017,34 @@ you do not need to pass additional options.
 EOF
         exit 1
     fi
-    v4l="no"
-    v4l2="no"
+    video4linux="no"
+    video4linux2="no"
     bktr="no"
     audio_oss="no"
     dv1394="no"
     dc1394="no"
     ffserver="no"
     network="no"
+    if enabled mingw32; then
+        w32threads="yes"
+    fi
     if test "$mingwce" = "yes"; then
         protocols="no"
     fi
-    FFLDFLAGS='-Wl,--output-def,$(@:.dll=.def),--out-implib,lib$(SLIBNAME:$(SLIBSUF)=.dll.a)'
     SLIBPREF=""
     SLIBSUF=".dll"
     EXESUF=".exe"
+    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
+    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
+    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
+    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
     if test "$force_prefix" != yes; then PREFIX="$PROGRAMFILES/FFmpeg"; fi
-    if test "$force_libdir" != yes; then bindir="$PREFIX"; fi
+    if test "$force_libdir" != yes; then bindir='${PREFIX}'; fi
+    shlibdir='${PREFIX}'
 fi
 
-# Combine FFLDFLAGS, EXTRALDFLAGS and the LDFLAGS environment variable.
-LDFLAGS="$FFLDFLAGS $EXTRALDFLAGS $LDFLAGS"
+# Combine FFLDFLAGS and the LDFLAGS environment variable.
+LDFLAGS="$FFLDFLAGS $LDFLAGS"
 
 test -n "$cross_prefix" && cross_compile=yes
 cc="${cross_prefix}${cc}"
@@ -903,19 +1063,10 @@ EOF
     exit 1;
 fi
 
-if test "$theora" = "yes" ; then
-    if test "$libogg" = "no"; then
-        echo "libogg must be enabled to enable Theora."
-        fail="yes"
-        theora="no"
-    fi
-fi
-
-if test "$vorbis" = "yes" ; then
+if test "$libvorbis" = "yes" ; then
     if test "$libogg" = "no"; then
         echo "libogg must be enabled to enable Vorbis."
         fail="yes"
-        vorbis="no"
     fi
 fi
 
@@ -965,64 +1116,59 @@ EOF
         fi
     fi
 
-
-    if test "$fail" = "yes"; then
-        exit 1
+    if test "$swscaler" != "no"; then
+        echo "The software scaler is under GPL and --enable-gpl is not specified."
+        fail="yes"
     fi
 fi
 
+if test "$fail" = "yes"; then
+    exit 1
+fi
+
 # compute MMX state
 if test $mmx = "default"; then
-    if test $cpu = "x86" -o $cpu = "x86_64"; then
+    if test $arch = "x86_32" -o $arch = "x86_64"; then
         mmx="yes"
     else
         mmx="no"
     fi
 fi
 
-# check iwmmxt support
-if test $iwmmxt = "default" -a $cpu = "armv4l"; then
-    iwmmxt=no
-    check_cc <<EOF && iwmmxt=yes
-        int main(void) {
-        __asm__ __volatile__ ("wunpckelub wr6, wr4");
-        }
-EOF
-fi
-
 #Darwin CC versions
 needmdynamicnopic="no"
 if test $targetos = Darwin; then
     if test -n "`$cc -v 2>&1 | grep xlc`"; then
-        CFLAGS="$CFLAGS -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
+        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
     else
         gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
         case "$gcc_version" in
             *2.95*)
-                CFLAGS="$CFLAGS -no-cpp-precomp -pipe"
+                add_cflags "-no-cpp-precomp -pipe"
                 ;;
             *[34].*)
-                CFLAGS="$CFLAGS -no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
+                add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
                 if test "$lshared" = no; then
                    needmdynamicnopic="yes"
                 fi
                 ;;
             *)
-                CFLAGS="$CFLAGS -no-cpp-precomp -pipe"
+                add_cflags "-no-cpp-precomp -pipe"
                 if test "$lshared" = no; then
                    needmdynamicnopic="yes"
                 fi
                 ;;
         esac
     fi
-    if test $optimize != "no"; then
-        CFLAGS="$CFLAGS -fomit-frame-pointer"
-    fi
+fi
+
+if test $optimize != "no"; then
+    add_cflags "-fomit-frame-pointer"
 fi
 
 # Can only do AltiVec on PowerPC
 if test $altivec = "default"; then
-    if test $cpu = "powerpc"; then
+    if test $arch = "powerpc"; then
         altivec="yes"
     else
         altivec="no"
@@ -1032,70 +1178,99 @@ fi
 # Add processor-specific flags
 TUNECPU="generic"
 POWERPCMODE="32bits"
-if test $tune != "generic"; then
-    case $tune in
+if test $cpu != "generic"; then
+    case $cpu in
         601|ppc601|PowerPC601)
-            CFLAGS="$CFLAGS -mcpu=601"
+            add_cflags "-mcpu=601"
             if test $altivec = "yes"; then
                 echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
             fi
             TUNECPU=ppc601
         ;;
         603*|ppc603*|PowerPC603*)
-            CFLAGS="$CFLAGS -mcpu=603"
+            add_cflags "-mcpu=603"
             if test $altivec = "yes"; then
                 echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
             fi
             TUNECPU=ppc603
         ;;
         604*|ppc604*|PowerPC604*)
-            CFLAGS="$CFLAGS -mcpu=604"
+            add_cflags "-mcpu=604"
             if test $altivec = "yes"; then
                 echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
             fi
             TUNECPU=ppc604
         ;;
         G3|g3|75*|ppc75*|PowerPC75*)
-            CFLAGS="$CFLAGS -mcpu=750 -mtune=750 -mpowerpc-gfxopt"
+            add_cflags "-mcpu=750 -mpowerpc-gfxopt"
             if test $altivec = "yes"; then
                 echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
             fi
             TUNECPU=ppc750
         ;;
         G4|g4|745*|ppc745*|PowerPC745*)
-            CFLAGS="$CFLAGS -mcpu=7450 -mtune=7450 -mpowerpc-gfxopt"
+            add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
             if test $altivec = "no"; then
                 echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
             fi
             TUNECPU=ppc7450
         ;;
         74*|ppc74*|PowerPC74*)
-            CFLAGS="$CFLAGS -mcpu=7400 -mtune=7400 -mpowerpc-gfxopt"
+            add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
             if test $altivec = "no"; then
                 echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
             fi
             TUNECPU=ppc7400
         ;;
         G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
-            CFLAGS="$CFLAGS -mcpu=970 -mtune=970 -mpowerpc-gfxopt -mpowerpc64"
+            add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
             if test $altivec = "no"; then
                 echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
             fi
             TUNECPU=ppc970
             POWERPCMODE="64bits"
         ;;
-        i[3456]86|pentium|pentiumpro|pentium-mmx|pentium[234]|prescott|k6|k6-[23]|athlon|athlon-tbird|athlon-4|athlon-[mx]p|winchip-c6|winchip2|c3|nocona|athlon64|k8|opteron|athlon-fx)
-            CFLAGS="$CFLAGS -march=$tune"
+        # targets that do NOT support conditional mov (cmov)
+        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
+            add_cflags "-march=$cpu"
+            cmov="no"
+        ;;
+        # targets that do support conditional mov (cmov)
+        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx)
+            add_cflags "-march=$cpu"
+            cmov="yes"
+            cmov_is_fast="yes"
+        ;;
+        # targets that do support conditional mov but on which it's slow
+        pentium4|prescott|nocona)
+            add_cflags "-march=$cpu"
+            cmov="yes"
+            cmov_is_fast="no"
         ;;
         sparc64)
-            CFLAGS="$CFLAGS -mcpu=v9 -mtune=v9"
+            add_cflags "-mcpu=v9"
         ;;
         *)
-        echo "WARNING: Unknown CPU \"$tune\", ignored."
+        echo "WARNING: Unknown CPU \"$cpu\", ignored."
         ;;
     esac
 fi
 
+# make sure we can execute files in $TMPDIR
+cat >$TMPE 2>>$logfile <<EOF
+#! /bin/sh
+EOF
+chmod +x $TMPE >>$logfile 2>&1
+if ! $TMPE >>$logfile 2>&1; then
+    cat <<EOF
+Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
+variable to another directory and make sure that $TMPDIR1 is not mounted
+noexec.
+EOF
+    die "Sanity test failed."
+fi
+rm $TMPE
+
 # compiler sanity check
 check_exec <<EOF
 int main(){
@@ -1106,28 +1281,42 @@ if test "$?" != 0; then
     echo "$cc is unable to create an executable file."
     if test -z "$cross_prefix" -a "$cross_compile" = no; then
         echo "If $cc is a cross-compiler, use the --cross-compile option."
+        echo "Only do this if you know what cross compiling means."
     fi
     die "C compiler test failed."
 fi
 
+# check for assembler specific support
+
+if test $arch = "powerpc"; then
+check_cc <<EOF && dcbzl=yes
+int main(void) {
+    register long zero = 0;
+    char data[1024];
+    asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
+return 0;
+}
+EOF
+fi
+
 # check for SIMD availability
 
 # AltiVec flags: The FSF version of GCC differs from the Apple version
-if test $cpu = "powerpc"; then
+if test $arch = "powerpc"; then
     if test $altivec = "yes"; then
         if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
-            CFLAGS="$CFLAGS -faltivec"
+            add_cflags "-faltivec"
         else
-            CFLAGS="$CFLAGS -maltivec -mabi=altivec"
+            add_cflags "-maltivec -mabi=altivec"
         fi
     fi
 fi
 
-check_header altivec.h && _altivec_h=yes || _altivec_h=no
+check_header altivec.h && altivec_h=yes || altivec_h=no
 
 # check if our compiler supports Motorola AltiVec C API
 if test $altivec = "yes"; then
-    if test $_altivec_h = "yes"; then
+    if test $altivec_h = "yes"; then
         inc_altivec_h="#include <altivec.h>"
     else
         inc_altivec_h=
@@ -1142,9 +1331,29 @@ int main(void) {
 EOF
 fi
 
+# check armv5te instructions support
+if test $armv5te = "default" -a $arch = "armv4l"; then
+    armv5te=no
+    check_cc <<EOF && armv5te=yes
+        int main(void) {
+        __asm__ __volatile__ ("qadd r0, r0, r0");
+        }
+EOF
+fi
+
+# check iwmmxt support
+if test $iwmmxt = "default" -a $arch = "armv4l"; then
+    iwmmxt=no
+    check_cc <<EOF && iwmmxt=yes
+        int main(void) {
+        __asm__ __volatile__ ("wunpckelub wr6, wr4");
+        }
+EOF
+fi
+
 # mmi only available on mips
 if test $mmi = "default"; then
-    if test $cpu = "mips"; then
+    if test $arch = "mips"; then
         mmi="yes"
     else
         mmi="no"
@@ -1159,31 +1368,6 @@ int main(void) {
 }
 EOF
 
-# test gcc version to see if vector builtins can be used
-# currently only used on i386 for MMX builtins
-check_cc -msse <<EOF && builtin_vector=yes || builtin_vector=no
-#include <xmmintrin.h>
-int main(void) {
-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
-return 0;
-#else
-#error no vector builtins
-#endif
-}
-EOF
-
-# test for mm3dnow.h
-test "$cpu" = "x86_64" && march=k8 || march=athlon
-check_cc -march=$march <<EOF && mm3dnow=yes || mm3dnow=no
-#include <mm3dnow.h>
-int main(void) {
-__m64 b1;
-b1 = _m_pswapd(b1);
-_m_femms();
-return 0;
-}
-EOF
-
 # ---
 # big/little-endian test
 if test "$cross_compile" = "no"; then
@@ -1196,7 +1380,7 @@ int main(int argc, char ** argv){
 EOF
 else
     # programs cannot be launched if cross compiling, so make a static guess
-    if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then
+    if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
         bigendian="yes"
     fi
 fi
@@ -1218,19 +1402,22 @@ EOF
 # ---
 # check availability of some header files
 
-_memalign=no
-_malloc_h=no
+memalign=no
+malloc_h=no
 if check_header malloc.h; then
-    _malloc_h=yes
-    _memalign=yes
-    check_func memalign || _memalign="no"
+    malloc_h=yes
+    memalign=yes
+    check_func memalign || memalign="no"
 fi
 
-if test "$_memalign" = "no" -a "$mmx" = "yes" -a \
-        "$memalignhack" != "yes" -a "$targetos" != "Darwin" ; then
+if test "$memalign" = "no" -a "$mmx" = "yes" -a \
+        "$memalign_hack" != "yes" -a "$targetos" != "Darwin" -a \
+        "$targetos" != "FreeBSD" ; then
     die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
 fi
 
+check_header byteswap.h && byteswap_h=yes || byteswap_h=no
+
 check_func localtime_r && localtime_r=yes || localtime_r=no
 enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
 
@@ -1245,16 +1432,16 @@ if enabled pthreads; then
 fi
 
 # these are off by default, so fail if requested and not available
-enabled dts     && require libdts dts.h dts_init -ldts
+enabled dts     && require libdts dts.h dts_init -ldts -lm
 enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
-enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame
-enabled vorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
+enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
+enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
 enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
-enabled theora  && require libtheora theora/theora.h theora_info_init -ltheora
+enabled libnut  && require libnut nut.h nut_demuxer_init -lnut
 enabled xvid    && require XviD xvid.h xvid_global -lxvidcore
 enabled x264    && require x264 x264.h x264_encoder_open -lx264
 enabled dc1394  && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
-enabled sunmlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
+enabled mlib    && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
 
 # Ugh, faac uses stdcall calling convention on win32 so we can't use
 # the generic test functions
@@ -1288,8 +1475,24 @@ EOF
     restore_flags
 fi
 
+# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
+if enabled avisynth; then
+    save_flags
+    temp_extralibs -lvfw32
+    check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
+#include <windows.h>
+#include <vfw.h>
+int main(){
+    AVIFileInit();
+    return 0;
+}
+EOF
+    restore_flags
+fi
+
+
 # test for lrintf in math.h
-check_exec <<EOF && have_lrintf=yes || have_lrintf=no
+check_exec <<EOF && lrintf=yes || lrintf=no
 #define _ISOC9X_SOURCE  1
 #include <math.h>
 int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
@@ -1322,10 +1525,18 @@ if test "$vhook" = "default"; then
     vhook="$dlopen"
 fi
 
-if test "$vhook" = "yes" -o "$a52bin" = "yes" -o "$faadbin" = "yes"; then
+if enabled_any vhook a52bin faadbin; then
     add_extralibs $ldl
 fi
 
+if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
+    vhook="no"
+    echo
+    echo "At the moment vhooks don't work on Cygwin static builds."
+    echo "Patches welcome."
+    echo
+fi
+
 if enabled vhook; then
     check_ldflags -rdynamic
     check_ldflags -export-dynamic
@@ -1404,7 +1615,7 @@ fi
 ##########################################
 # IPv6 check
 
-enabled network && check_ld <<EOF && ipv6=yes || ipv6=no
+enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -1419,7 +1630,7 @@ int main( void ) {
 EOF
 
 # check for video4linux2 --- V4L2_PIX_FMT_YUV420
-enabled v4l2 && check_cc <<EOF || v4l2="no"
+enabled video4linux2 && check_cc <<EOF || video4linux2="no"
 #include <sys/time.h>
 #include <asm/types.h>
 #include <linux/videodev2.h>
@@ -1433,19 +1644,23 @@ enabled debug && add_cflags -g
 check_cflags -Wdeclaration-after-statement
 check_cflags -Wall
 check_cflags -Wno-switch
+check_cflags -Wdisabled-optimization
+check_cflags -Wpointer-arith
+check_cflags -Wredundant-decls
+enabled extrawarnings && check_cflags -Winline
 
 # add some linker flags
-check_ldflags '-Wl,--as-needed' '-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec' '-Wl,-rpath-link,\$(BUILD_ROOT)/libavformat' '-Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
+check_ldflags $LDLATEFLAGS
 
 # not all compilers support -Os
 test "$optimize" = "small" && check_cflags -Os
 
 if enabled optimize; then
     if test -n "`$cc -v 2>&1 | grep xlc`"; then
-        CFLAGS="$CFLAGS -O5"
-        LDFLAGS="$LDFLAGS -O5"
+        add_cflags  "-O5"
+        add_ldflags "-O5"
     else
-        CFLAGS="-O3 $CFLAGS"
+        add_cflags "-O3"
     fi
 fi
 
@@ -1453,48 +1668,57 @@ fi
 if test "$lshared" = "yes" ; then
     # LIBOBJFLAGS may have already been set in the OS configuration
     if test -z "$LIBOBJFLAGS" ; then
-        case "$cpu" in
+        case "$arch" in
             x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
         esac
     fi
 fi
 
 if test "$gprof" = "yes" ; then
-    CFLAGS="$CFLAGS -p"
-    LDFLAGS="$LDFLAGS -p"
+    add_cflags  "-p"
+    add_ldflags "-p"
+fi
+
+# find if .align arg is power-of-two or not
+if test $asmalign_pot = "unknown"; then
+    asmalign_pot="no"
+    echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
 fi
 
 echo "install prefix   $PREFIX"
 echo "source path      $source_path"
 echo "C compiler       $cc"
 echo "make             $make"
-echo "CPU              $cpu ($tune)"
+echo "ARCH             $arch ($cpu)"
 if test "$BUILDSUF" != ""; then
     echo "build suffix     $BUILDSUF"
 fi
 echo "big-endian       $bigendian"
 echo "inttypes.h       $inttypes"
 echo "broken inttypes.h $emu_fast_int"
-if test $cpu = "x86" -o $cpu = "x86_64"; then
+if test $arch = "x86_32" -o $arch = "x86_64"; then
     echo "MMX enabled      $mmx"
-    echo "Vector Builtins  $builtin_vector"
-    echo "3DNow! Builtins  $mm3dnow"
+    echo "CMOV enabled     $cmov"
+    echo "CMOV is fast     $cmov_is_fast"
 fi
-if test $cpu = "armv4l"; then
+if test $arch = "armv4l"; then
+    echo "ARMv5TE enabled  $armv5te"
     echo "IWMMXT enabled   $iwmmxt"
 fi
-if test $cpu = "mips"; then
+if test $arch = "mips"; then
     echo "MMI enabled      $mmi"
 fi
-if test $cpu = "powerpc"; then
+if test $arch = "powerpc"; then
     echo "AltiVec enabled  $altivec"
+    echo "dcbzl available  $dcbzl"
 fi
 echo "gprof enabled    $gprof"
 echo "zlib enabled     $zlib"
 echo "libgsm enabled   $libgsm"
 echo "mp3lame enabled  $mp3lame"
+echo "libnut enabled   $libnut"
 echo "libogg enabled   $libogg"
-echo "Vorbis enabled   $vorbis"
+echo "Vorbis enabled   $libvorbis"
 echo "FAAD enabled     $faad"
 echo "faadbin enabled  $faadbin"
 echo "FAAC enabled     $faac"
@@ -1504,6 +1728,8 @@ echo "a52 support      $a52"
 echo "a52 dlopened     $a52bin"
 echo "DTS support      $dts"
 echo "pp support       $pp"
+echo "Software Scaler enabled $swscaler"
+echo "AVISynth enabled $avisynth"
 echo "debug symbols    $debug"
 echo "strip symbols    $dostrip"
 echo "optimize         $optimize"
@@ -1519,7 +1745,7 @@ if test "$vhook" = "yes"; then
     echo "Imlib2 support   $imlib2"
     echo "FreeType support $freetype2"
 fi
-echo "Sun medialib support"  $sunmlib
+echo "Sun medialib support"  $mlib
 echo "pthreads support"      $pthreads
 echo "AMR-NB float support"  $amr_nb
 echo "AMR-NB fixed support"  $amr_nb_fixed
@@ -1529,12 +1755,40 @@ echo "network support      $network"
 if test "$network" = "yes" ; then
     echo "IPv6 support         $ipv6"
 fi
+echo ".align is power-of-two" $asmalign_pot
 if test "$gpl" = "no" ; then
     echo "License: LGPL"
 else
     echo "License: GPL"
 fi
 
+if test "$amr_wb" = "yes" ; then
+  echo
+  echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
+  echo "V5.1.0 from "
+  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
+  echo "and extracted the source to libavcodec/amrwb_float"
+fi
+
+if test "$amr_nb" = "yes" ; then
+  echo
+  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
+  echo "REL-5 V5.1.0 from "
+  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
+  echo "and extracted the source to libavcodec/amr_float"
+  echo "If you try this on alpha, you may need to change Word32 to int in amr/typedef.h"
+fi
+
+if test "$amr_nb_fixed" = "yes" ; then
+  echo
+  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
+  echo "REL-5 version 5.1.0 from "
+  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
+  echo "and extracted src to libavcodec/amr"
+  echo "You must also add -DMMS_IO and remove -pedantic-errors to/from CFLAGS in libavcodec/amr/makefile."
+  echo "i.e. CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO"
+fi
+
 echo "Creating config.mak and config.h..."
 
 date >> config.log
@@ -1562,18 +1816,17 @@ else
     echo "INSTALLSTRIP=" >> config.mak
 fi
 
-# SHCFLAGS is a copy of CFLAGS without -mdynamic-no-pic, used when building
-# shared modules on OS/X (vhook/Makefile).
-SHCFLAGS="$CFLAGS"
+VHOOKCFLAGS="-fPIC $CFLAGS"
 test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
 
 echo "OPTFLAGS=$CFLAGS" >> config.mak
-echo "SHCFLAGS=$SHCFLAGS">>config.mak
+echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
 echo "LDFLAGS=$LDFLAGS" >> config.mak
 echo "LDCONFIG=$LDCONFIG" >> config.mak
 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
 echo "SHFLAGS=$SHFLAGS" >> config.mak
-echo "VHOOKFLAGS=$VHOOKFLAGS" >> config.mak
+echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
+echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
 echo "BUILD_STATIC=$lstatic" >> config.mak
 echo "BUILDSUF=$BUILDSUF" >> config.mak
@@ -1588,27 +1841,31 @@ echo "SLIBPREF=$SLIBPREF" >> config.mak
 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
 echo "TARGET_OS=$targetos" >> config.mak
-if test "$cpu" = "x86" ; then
+if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
   echo "TARGET_ARCH_X86=yes" >> config.mak
   echo "#define ARCH_X86 1" >> $TMPH
-elif test "$cpu" = "x86_64" ; then
+fi
+if test "$arch" = "x86_32" ; then
+  echo "TARGET_ARCH_X86_32=yes" >> config.mak
+  echo "#define ARCH_X86_32 1" >> $TMPH
+elif test "$arch" = "x86_64" ; then
   echo "TARGET_ARCH_X86_64=yes" >> config.mak
   echo "#define ARCH_X86_64 1" >> $TMPH
-elif test "$cpu" = "armv4l" ; then
+elif test "$arch" = "armv4l" ; then
   echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
   echo "#define ARCH_ARMV4L 1" >> $TMPH
-elif test "$cpu" = "alpha" ; then
+elif test "$arch" = "alpha" ; then
   echo "TARGET_ARCH_ALPHA=yes" >> config.mak
   echo "#define ARCH_ALPHA 1" >> $TMPH
-elif test "$cpu" = "sparc64" ; then
+elif test "$arch" = "sparc64" ; then
   echo "TARGET_ARCH_SPARC64=yes" >> config.mak
   echo "#define ARCH_SPARC64 1" >> $TMPH
   echo "TARGET_ARCH_SPARC=yes" >> config.mak
   echo "#define ARCH_SPARC 1" >> $TMPH
-elif test "$cpu" = "sparc" ; then
+elif test "$arch" = "sparc" ; then
   echo "TARGET_ARCH_SPARC=yes" >> config.mak
   echo "#define ARCH_SPARC 1" >> $TMPH
-elif test "$cpu" = "powerpc" ; then
+elif test "$arch" = "powerpc" ; then
   echo "TARGET_ARCH_POWERPC=yes" >> config.mak
   echo "#define ARCH_POWERPC 1" >> $TMPH
   if test $POWERPCMODE = "32bits"; then
@@ -1619,24 +1876,27 @@ elif test "$cpu" = "powerpc" ; then
   if test "$powerpc_perf" = "yes"; then
     echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
   fi
-elif test "$cpu" = "mips" ; then
+elif test "$arch" = "mips" ; then
   echo "TARGET_ARCH_MIPS=yes" >> config.mak
   echo "#define ARCH_MIPS 1" >> $TMPH
-elif test "$cpu" = "sh4" ; then
+elif test "$arch" = "sh4" ; then
   echo "TARGET_ARCH_SH4=yes" >> config.mak
   echo "#define ARCH_SH4 1" >> $TMPH
-elif test "$cpu" = "parisc" ; then
+elif test "$arch" = "parisc" ; then
   echo "TARGET_ARCH_PARISC=yes" >> config.mak
   echo "#define ARCH_PARISC 1" >> $TMPH
-elif test "$cpu" = "s390" ; then
+elif test "$arch" = "s390" ; then
   echo "TARGET_ARCH_S390=yes" >> config.mak
   echo "#define ARCH_S390 1" >> $TMPH
-elif test "$cpu" = "m68k" ; then
+elif test "$arch" = "m68k" ; then
   echo "TARGET_ARCH_M68K=yes" >> config.mak
   echo "#define ARCH_M68K 1" >> $TMPH
-elif test "$cpu" = "ia64" ; then
+elif test "$arch" = "ia64" ; then
   echo "TARGET_ARCH_IA64=yes" >> config.mak
   echo "#define ARCH_IA64 1" >> $TMPH
+elif test "$arch" = "bfin" ; then
+  echo "TARGET_ARCH_BFIN=yes" >> config.mak
+  echo "#define ARCH_BFIN 1" >> $TMPH
 fi
 echo "#define TUNECPU $TUNECPU" >> $TMPH
 if test "$bigendian" = "yes" ; then
@@ -1654,13 +1914,17 @@ if test "$mmx" = "yes" ; then
   echo "#define HAVE_MMX 1" >> $TMPH
   echo "#define __CPU__ 586" >> $TMPH
 fi
-if test "$builtin_vector" = "yes" ; then
-  echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
-  echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
+if test "$cmov" = "yes" ; then
+  echo "TARGET_CMOV=yes" >> config.mak
+  echo "#define HAVE_CMOV 1" >> $TMPH
 fi
-if test "$mm3dnow" = "yes" ; then
-  echo "TARGET_BUILTIN_3DNOW=yes" >> config.mak
-  echo "#define HAVE_MM3DNOW 1" >> $TMPH
+if test "$cmov_is_fast" = "yes" ; then
+  echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
+  echo "#define CMOV_IS_FAST 1" >> $TMPH
+fi
+if test "$armv5te" = "yes" ; then
+  echo "TARGET_ARMV5TE=yes" >> config.mak
+  echo "#define HAVE_ARMV5TE 1" >> $TMPH
 fi
 if test "$iwmmxt" = "yes" ; then
   echo "TARGET_IWMMXT=yes" >> config.mak
@@ -1670,57 +1934,21 @@ if test "$mmi" = "yes" ; then
   echo "TARGET_MMI=yes" >> config.mak
   echo "#define HAVE_MMI 1" >> $TMPH
 fi
+
 if test "$altivec" = "yes" ; then
   echo "TARGET_ALTIVEC=yes" >> config.mak
   echo "#define HAVE_ALTIVEC 1" >> $TMPH
-  echo "// Enable the next line to use the reference C code instead of AltiVec" >> $TMPH
-  echo "// #define ALTIVEC_USE_REFERENCE_C_CODE 1" >> $TMPH
-  if test "$_altivec_h" = "yes" ; then
-    echo "#define HAVE_ALTIVEC_H 1" >> $TMPH
-  else
-    echo "#undef HAVE_ALTIVEC_H" >> $TMPH
-  fi
-fi
-if test "$gprof" = "yes" ; then
-  echo "#define HAVE_GPROF 1" >> $TMPH
-fi
-if test "$localtime_r" = "yes" ; then
-  echo "#define HAVE_LOCALTIME_R 1" >> $TMPH
-fi
-if test "$imlib2" = "yes" ; then
-  echo "HAVE_IMLIB2=yes" >> config.mak
-fi
-if test "$freetype2" = "yes" ; then
-  echo "HAVE_FREETYPE2=yes" >> config.mak
-fi
-if test "$sunmlib" = "yes" ; then
-  echo "HAVE_MLIB=yes" >> config.mak
-  echo "#define HAVE_MLIB 1" >> $TMPH
-fi
-if test "$pthreads" = "yes" ; then
-  echo "HAVE_PTHREADS=yes" >> config.mak
-  echo "#define HAVE_PTHREADS 1" >> $TMPH
-  echo "#define HAVE_THREADS 1" >> $TMPH
 fi
+
 if test "$sdl" = "yes" ; then
-  echo "CONFIG_SDL=yes" >> config.mak
   echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
   echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
-  if test "$sdl_video_size" = "yes"; then
-    echo "#define HAVE_SDL_VIDEO_SIZE 1" >> $TMPH
-  fi
 fi
 if test "$texi2html" = "yes"; then
   echo "BUILD_DOC=yes" >> config.mak
 fi
-if test "$have_lrintf" = "yes" ; then
-  echo "#define HAVE_LRINTF 1" >> $TMPH
-fi
-if test "$vhook" = "yes" ; then
-  echo "BUILD_VHOOK=yes" >> config.mak
-  echo "#define HAVE_VHOOK 1" >> $TMPH
-fi
 
+sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
 pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
 lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
 lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
@@ -1740,185 +1968,34 @@ if test "$lshared" = "yes" ; then
   echo "LAVFVERSION=$lavf_version" >> config.mak
   echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
   echo "LAVUVERSION=$lavu_version" >> config.mak
+  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
+  echo "SWSVERSION=$sws_version" >> config.mak
   echo "SLIBNAME=${SLIBNAME}" >> config.mak
   echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
   echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
+  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
 fi
+echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
 echo "EXTRALIBS=$extralibs" >> config.mak
 
-# If you do not want to use encoders, disable them.
-if echo "$ENCODER_LIST" | grep -q encoder; then
-    echo "#define CONFIG_ENCODERS 1" >> $TMPH
-    echo "CONFIG_ENCODERS=yes" >> config.mak
-fi
+enabled_any $ENCODER_LIST && enable encoders
+enabled_any $DECODER_LIST && enable decoders
+enabled_any $MUXER_LIST   && enable muxers
+enabled_any $DEMUXER_LIST && enable demuxers
 
-# If you do not want to use decoders, disable them.
-if echo "$DECODER_LIST" | grep -q decoder; then
-    echo "#define CONFIG_DECODERS 1" >> $TMPH
-    echo "CONFIG_DECODERS=yes" >> config.mak
-fi
+enabled_any pthreads beosthreads os2threads w32threads && enable threads
 
-# muxers
-if echo "$MUXER_LIST" | grep -q muxer; then
-  echo "#define CONFIG_MUXERS 1" >> $TMPH
-  echo "CONFIG_MUXERS=yes" >> config.mak
-fi
-
-# demuxers
-if echo "$DEMUXER_LIST" | grep -q demuxer; then
-  echo "#define CONFIG_DEMUXERS 1" >> $TMPH
-  echo "CONFIG_DEMUXERS=yes" >> config.mak
-fi
-
-# AC3
-if test "$a52" = "yes" ; then
-  echo "#define CONFIG_AC3 1" >> $TMPH
-  echo "CONFIG_AC3=yes" >> config.mak
-
-  if test "$a52bin" = "yes" ; then
-    echo "#define CONFIG_A52BIN 1" >> $TMPH
-    echo "CONFIG_A52BIN=yes" >> config.mak
-  fi
-fi
-
-# DTS
-if test "$dts" = "yes" ; then
-  echo "#define CONFIG_DTS 1" >> $TMPH
-  echo "CONFIG_DTS=yes" >> config.mak
-fi
-
-# PP
-if test "$pp" = "yes" ; then
-  echo "#define CONFIG_PP 1" >> $TMPH
-  echo "CONFIG_PP=yes" >> config.mak
-fi
-
-# MPEG audio high precision mode
-if test "$mpegaudio_hp" = "yes" ; then
-  echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
-fi
-
-if test "$v4l" = "yes" ; then
-  echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
-  echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
-fi
-
-if test "$v4l2" = "yes" ; then
-  echo "#define CONFIG_VIDEO4LINUX2 1" >> $TMPH
-  echo "CONFIG_VIDEO4LINUX2=yes" >> config.mak
-fi
-
-if test "$bktr" = "yes" ; then
-  echo "#define CONFIG_BKTR 1" >> $TMPH
-  echo "CONFIG_BKTR=yes" >> config.mak
-fi
-
-if test "$dv1394" = "yes" ; then
-  echo "#define CONFIG_DV1394 1" >> $TMPH
-  echo "CONFIG_DV1394=yes" >> config.mak
-fi
-
-if test "$dc1394" = "yes" ; then
-  echo "#define CONFIG_DC1394 1" >> $TMPH
-  echo "CONFIG_DC1394=yes" >> config.mak
-fi
-
-if test "$dlopen" = "yes" ; then
-  echo "#define CONFIG_HAVE_DLOPEN 1" >> $TMPH
-fi
-
-if test "$dlfcn" = "yes" ; then
-  echo "#define CONFIG_HAVE_DLFCN 1" >> $TMPH
-fi
-
-if test "$audio_oss" = "yes" ; then
-  echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
-  echo "CONFIG_AUDIO_OSS=yes" >> config.mak
-fi
-
-if test "$audio_beos" = "yes" ; then
-  echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
-  echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
-fi
-
-if test "$network" = "yes" ; then
-  echo "#define CONFIG_NETWORK 1" >> $TMPH
-  echo "CONFIG_NETWORK=yes" >> config.mak
-fi
-
-if test "$ipv6" = "yes" ; then
-  echo "#define CONFIG_IPV6 1" >> $TMPH
-fi
-
-if test "$zlib" = "yes" ; then
-  echo "#define CONFIG_ZLIB 1" >> $TMPH
-  echo "CONFIG_ZLIB=yes" >> config.mak
-fi
-
-if test "$libgsm" = "yes" ; then
-  echo "#define CONFIG_LIBGSM 1" >> $TMPH
-  echo "CONFIG_LIBGSM=yes" >> config.mak
-fi
-
-if test "$mp3lame" = "yes" ; then
-  echo "#define CONFIG_MP3LAME 1" >> $TMPH
-  echo "CONFIG_MP3LAME=yes" >> config.mak
-fi
-
-if test "$libogg" = "yes" ; then
-  echo "#define CONFIG_LIBOGG 1" >> $TMPH
-  echo "CONFIG_LIBOGG=yes" >> config.mak
-fi
-
-if test "$vorbis" = "yes" ; then
-  echo "#define CONFIG_LIBVORBIS 1" >> $TMPH
-  echo "CONFIG_LIBVORBIS=yes" >> config.mak
-fi
-
-if test "$theora" = "yes" ; then
-  echo "#define CONFIG_LIBTHEORA 1" >> $TMPH
-  echo "CONFIG_LIBTHEORA=yes" >> config.mak
-fi
-
-if test "$faad" = "yes" ; then
-  echo "#define CONFIG_FAAD 1" >> $TMPH
-  echo "CONFIG_FAAD=yes" >> config.mak
-fi
-
-if test "$faadbin" = "yes" ; then
-  echo "#define CONFIG_FAADBIN 1" >> $TMPH
-  echo "CONFIG_FAADBIN=yes" >> config.mak
-fi
-
-if test "$faac" = "yes" ; then
-  echo "#define CONFIG_FAAC 1" >> $TMPH
-  echo "CONFIG_FAAC=yes" >> config.mak
-fi
-
-if test "$xvid" = "yes" ; then
-  echo "#define CONFIG_XVID 1" >> $TMPH
-  echo "CONFIG_XVID=yes" >> config.mak
-fi
-
-if test "$x264" = "yes" ; then
-  echo "#define CONFIG_X264 1" >> $TMPH
-  echo "CONFIG_X264=yes" >> config.mak
-fi
+print_config HAVE_   $TMPH config.mak $HAVE_LIST
+print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
 
 if test "$mingw32" = "yes" ; then
-  echo "CONFIG_MINGW=yes" >> config.mak
-  echo "HAVE_W32THREADS=yes" >> config.mak
-  echo "#define HAVE_W32THREADS 1" >> $TMPH
-  echo "#define HAVE_THREADS 1" >> $TMPH
   echo "#ifndef __MINGW32__" >> $TMPH
   echo "#define __MINGW32__ 1" >> $TMPH
   echo "#endif" >> $TMPH
 fi
 
 if test "$mingwce" = "yes" ; then
-  echo "CONFIG_MINGW=yes" >> config.mak
   echo "#define CONFIG_WINCE 1" >> $TMPH
-  echo "CONFIG_WINCE=yes" >> config.mak
   echo "#ifndef __MINGW32__" >> $TMPH
   echo "#define __MINGW32__ 1" >> $TMPH
   echo "#endif" >> $TMPH
@@ -1926,83 +2003,62 @@ fi
 
 if test "$os2" = "yes" ; then
   echo "#define CONFIG_OS2 1" >> $TMPH
-  echo "CONFIG_OS2=yes" >> config.mak
-  echo "HAVE_OS2THREADS=yes" >> config.mak
-  echo "#define HAVE_OS2THREADS 1" >> $TMPH
-  echo "#define HAVE_THREADS 1" >> $TMPH
-fi
-
-if test "$targetos" = "SunOS" ; then
-  echo "#define CONFIG_SUNOS 1" >> $TMPH
-fi
-
-if test "$targetos" = "BeOS" ; then
-  echo "HAVE_BEOSTHREADS=yes" >> config.mak
-  echo "#define HAVE_BEOSTHREADS 1" >> $TMPH
-  echo "#define HAVE_THREADS 1" >> $TMPH
 fi
 
 if test "$targetos" = "Darwin"; then
   echo "#define CONFIG_DARWIN 1"  >> $TMPH
-  echo "CONFIG_DARWIN=yes" >> config.mak
-fi
-
-if test "$_malloc_h" = "yes" ; then
-  echo "#define HAVE_MALLOC_H 1" >> $TMPH
-else
-  echo "#undef  HAVE_MALLOC_H" >> $TMPH
-fi
-
-if test "$_memalign" = "yes" ; then
-  echo "#define HAVE_MEMALIGN 1" >> $TMPH
-else
-  echo "#undef  HAVE_MEMALIGN" >> $TMPH
-fi
-
-if test "$memalignhack" = "yes" ; then
-  echo "#define MEMALIGN_HACK 1" >> $TMPH
-fi
-
-
-if test "$netserver" = "yes" ; then
-  echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
-  echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
 fi
 
 if test "$need_inet_aton" = "yes" ; then
   echo "NEED_INET_ATON=yes" >> config.mak
 fi
 
-if test "$simpleidct" = "yes" ; then
-  echo "#define SIMPLE_IDCT 1" >> $TMPH
-fi
+echo "#define restrict $_restrict" >> $TMPH
 
-if test "$protocols" = "yes" ; then
-  echo "#define CONFIG_PROTOCOLS 1" >> $TMPH
-  echo "CONFIG_PROTOCOLS=yes" >> config.mak
+if test "$optimize" = "small"; then
+  echo "#define always_inline"  >> $TMPH
+  echo "#define CONFIG_SMALL 1" >> $TMPH
 fi
 
-if test "$ffserver" = "yes" ; then
-  echo "#define CONFIG_FFSERVER 1" >> $TMPH
-  echo "CONFIG_FFSERVER=yes" >> config.mak
-fi
+echo "SRC_PATH=\"$source_path\"" >> config.mak
+echo "SRC_PATH_BARE=$source_path" >> config.mak
+echo "BUILD_ROOT=\"$PWD\"" >> config.mak
 
-if test "$ffplay" = "yes" ; then
-  echo "CONFIG_FFPLAY=yes" >> config.mak
+if test "$amr_if2" = "yes" ; then
+  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
 fi
 
-if test "$gpl" = "yes" ; then
-  echo "#define CONFIG_GPL 1" >> $TMPH
-  echo "CONFIG_GPL=yes" >> config.mak
+# Apparently it's not possible to portably echo a backslash.
+if test "$asmalign_pot" = "yes" ; then
+  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
+else
+  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
 fi
 
-echo "#define restrict $_restrict" >> $TMPH
 
-if test "$optimize" = "small"; then
-  echo "#define always_inline"  >> $TMPH
-  echo "#define CONFIG_SMALL 1" >> $TMPH
+# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
+for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
+    ucname="`toupper $codec`"
+    config_name="CONFIG_$ucname"
+    enabled_name="ENABLE_$ucname"
+    if enabled $codec; then
+        echo "#define $config_name 1" >> $TMPH
+        echo "#define $enabled_name 1" >> $TMPH
+        echo "$config_name=yes" >> config.mak
+    else
+        echo "#define $enabled_name 0" >> $TMPH
+    fi
+done
+
+# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
+if ! cmp -s $TMPH config.h; then
+        mv -f $TMPH config.h
+else
+        echo "config.h is unchanged"
 fi
 
+rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
+
 # build tree in object directory if source path is different from current one
 if test "$source_path_used" = "yes" ; then
     DIRS="\
@@ -2011,6 +2067,7 @@ if test "$source_path_used" = "yes" ; then
          libavcodec \
          libavcodec/alpha \
          libavcodec/armv4l \
+         libavcodec/bfin \
          libavcodec/i386 \
          libavcodec/sparc \
          libavcodec/mlib \
@@ -2018,15 +2075,18 @@ if test "$source_path_used" = "yes" ; then
          libavcodec/liba52 \
          libpostproc \
          libavutil \
+         libswscale \
          tests \
          vhook \
          "
     FILES="\
           Makefile \
+          common.mak \
           libavformat/Makefile \
           libavcodec/Makefile \
           libpostproc/Makefile \
           libavutil/Makefile \
+          libswscale/Makefile \
           tests/Makefile \
           vhook/Makefile \
           doc/Makefile \
@@ -2039,67 +2099,6 @@ if test "$source_path_used" = "yes" ; then
         ln -sf "$source_path/$f" $f
     done
 fi
-echo "SRC_PATH=$source_path" >> config.mak
-echo "BUILD_ROOT=$PWD" >> config.mak
-
-if test "$amr" = "yes" ; then
-  echo "#define CONFIG_AMR 1" >> $TMPH
-  echo "CONFIG_AMR=yes" >> config.mak
-fi
-
-if test "$amr_wb" = "yes" ; then
-  echo "#define CONFIG_AMR_WB 1" >> $TMPH
-  echo "CONFIG_AMR_WB=yes" >> config.mak
-  echo
-  echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
-  echo "V5.1.0 from "
-  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
-  echo "and extracted the source to libavcodec/amrwb_float"
-fi
-
-if test "$amr_nb" = "yes" ; then
-  echo "#define CONFIG_AMR_NB 1" >> $TMPH
-  echo "CONFIG_AMR_NB=yes" >> config.mak
-  echo
-  echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
-  echo "REL-5 V5.1.0 from "
-  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
-  echo "and extracted the source to libavcodec/amr_float"
-  echo "If you try this on alpha, you may need to change Word32 to int in amr/typedef.h"
-fi
-
-if test "$amr_nb_fixed" = "yes" ; then
-  echo "#define CONFIG_AMR_NB_FIXED 1" >> $TMPH
-  echo "CONFIG_AMR_NB_FIXED=yes" >> config.mak
-  echo
-  echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
-  echo "REL-5 version 5.1.0 from "
-  echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
-  echo "and extracted src to libavcodec/amr"
-  echo "You must also add -DMMS_IO and remove -pedantic-errors to/from CFLAGS in libavcodec/amr/makefile."
-  echo "i.e. CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO"
-fi
-
-if test "$amr_if2" = "yes" ; then
-  echo "AMR_CFLAGS=-DIF2=1" >> config.mak
-fi
-
-
-for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
-    echo "#define CONFIG_`echo $codec | tr a-z A-Z` 1" >> $TMPH
-    echo "CONFIG_`echo $codec | tr a-z A-Z`=yes" >> config.mak
-done
-
-# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
-diff $TMPH config.h >/dev/null 2>&1
-if test "$?" != "0" ; then
-        mv -f $TMPH config.h
-else
-        echo "config.h is unchanged"
-fi
-
-rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
-
 
 # build pkg-config files libav*.pc and libpostproc.pc
 # libavutil.pc
@@ -2226,3 +2225,43 @@ Conflicts:
 Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
 Cflags: -I\${includedir}
 EOF
+
+if test "$swscaler" != "no"; then
+  sws_pc_libs="-L\${libdir} -lswscale"
+  sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
+  sws_pc_requires="$pkg_requires libavutil = $lavu_version"
+else
+  sws_pc_libs=""
+  sws_pc_uninstalled_libs=""
+  sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
+fi
+# libswscale.pc
+cat <<EOF >libswscale.pc
+prefix=$PREFIX
+exec_prefix=\${prefix}
+libdir=\${exec_prefix}/lib
+includedir=\${prefix}/include
+
+Name: libswscale
+Description: FFmpeg image rescaling library
+Version: $sws_version
+Requires: $sws_pc_requires
+Conflicts:
+Libs: $sws_pc_libs
+Cflags: -I\${includedir} -I\${includedir}/swscale
+EOF
+
+cat <<EOF >libswscale-uninstalled.pc
+prefix=
+exec_prefix=
+libdir=\${pcfiledir}/libswscale
+includedir=\${pcfiledir}/libswscale
+
+Name: libswscale
+Description: FFmpeg image rescaling library
+Version: $sws_version
+Requires: $sws_pc_requires
+Conflicts:
+Libs: $sws_pc_uninstalled_libs
+Cflags: -I\${includedir}
+EOF