]> git.sesse.net Git - ffmpeg/blobdiff - configure
debug: tell how much bits are skipped with unknown nal code
[ffmpeg] / configure
index c397be782da1597f6110fb84fd3678b3deeb39de..e5133caf680987c7cd5f0fdb0cdda4bfbd463a4d 100755 (executable)
--- a/configure
+++ b/configure
@@ -71,7 +71,6 @@ show_help(){
   echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
   echo "  --enable-swscaler        software scaler support [default=no]"
   echo "  --enable-beosthreads     use BeOS threads [default=no]"
-  echo "  --enable-os2threads      use OS/2 threads [default=no]"
   echo "  --enable-pthreads        use pthreads [default=no]"
   echo "  --enable-w32threads      use Win32 threads [default=no]"
   echo "  --enable-x11grab         enable X11 grabbing [default=no]"
@@ -87,7 +86,7 @@ show_help(){
   echo "  --enable-libamr-wb       enable libamr-wb floating point audio codec"
   echo "  --enable-libfaac         enable FAAC support via libfaac [default=no]"
   echo "  --enable-libfaad         enable FAAD support via libfaad [default=no]"
-  echo "  --enable-libfaadbin      build FAAD support with runtime linking [default=no]"
+  echo "  --enable-libfaadbin      open libfaad.so.0 at runtime [default=no]"
   echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
   echo "  --enable-libmp3lame      enable MP3 encoding via libmp3lame [default=no]"
   echo "  --enable-libnut          enable NUT (de)muxing via libnut,"
@@ -134,6 +133,7 @@ show_help(){
   echo "  --disable-debug          disable debugging symbols"
   echo "  --disable-mpegaudio-hp   faster (but less accurate)"
   echo "                           MPEG audio decoding [default=no]"
+  echo "  --enable-gray            enable full grayscale support (slower color)"
   echo "  --disable-ffmpeg         disable ffmpeg build"
   echo "  --disable-ffserver       disable ffserver build"
   echo "  --disable-ffplay         disable ffplay build"
@@ -160,6 +160,13 @@ show_help(){
   echo "  --enable-protocol=NAME   enables protocol NAME"
   echo "  --disable-protocol=NAME  disables protocol NAME"
   echo "  --disable-protocols      disables all protocols"
+  echo "  --list-decoders          show all available decoders"
+  echo "  --list-encoders          show all available encoders"
+  echo "  --list-muxers            show all available muxers"
+  echo "  --list-demuxers          show all available demuxers"
+  echo "  --list-parsers           show all available parsers"
+  echo "  --list-protocols         show all available protocols"
+  echo "  --list-bsfs              show all available bitstream filters"
   echo
   echo "Developer options (useful when working on FFmpeg itself):"
   echo "  --enable-gprof           enable profiling with gprof [$gprof]"
@@ -398,7 +405,12 @@ check_cpp(){
 check_ld(){
     log check_ld "$@"
     check_cc || return
-    check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
+    flags=''
+    libs=''
+    for f; do
+        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
+    done
+    check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
 }
 
 check_cflags(){
@@ -556,24 +568,23 @@ apply(){
 }
 
 CONFIG_LIST='
-    encoders
-    decoders
-    parsers
-    bsfs
-    muxers
-    demuxers
     audio_beos
     audio_oss
     avisynth
     beos_netserver
     bktr
+    bsfs
     dc1394
+    decoders
+    demuxers
     dv1394
+    encoders
     ffmpeg
     ffplay
     ffserver
     gpl
     gprof
+    gray
     ipv6
     liba52
     liba52bin
@@ -593,10 +604,13 @@ CONFIG_LIST='
     libxvid
     memalign_hack
     mpegaudio_hp
+    muxers
     network
+    parsers
     powerpc_perf
     pp
     protocols
+    small
     swscaler
     vhook
     v4l
@@ -607,7 +621,6 @@ CONFIG_LIST='
 
 THREADS_LIST='
     beosthreads
-    os2threads
     pthreads
     w32threads
 '
@@ -637,6 +650,7 @@ ARCH_EXT_LIST='
     iwmmxt
     mmi
     mmx
+    ssse3
 '
 
 HAVE_LIST="
@@ -645,7 +659,9 @@ HAVE_LIST="
     altivec_h
     arpa_inet_h
     byteswap_h
+    closesocket
     cmov
+    conio_h
     dcbzl
     dev_bktr_ioctl_bt848_h
     dev_bktr_ioctl_meteor_h
@@ -659,24 +675,28 @@ HAVE_LIST="
     fast_64bit
     fast_cmov
     fast_unaligned
+    fork
     freetype2
+    GetProcessTimes
+    getrusage
     imlib2
     inet_aton
-    localtime_r
     lrintf
     machine_ioctl_bt848_h
     machine_ioctl_meteor_h
     malloc_h
     memalign
+    mkstemp
     mlib
-    os2
+    ppc64
     sdl
     sdl_video_size
     soundcard_h
-    ssse3
     sys_poll_h
     sys_soundcard_h
+    termios_h
     threads
+    winsock2_h
 "
 
 CMDLINE_SELECT="
@@ -691,7 +711,17 @@ CMDLINE_SELECT="
 
 # code dependency declarations
 
+# architecture extensions
+altivec_deps="powerpc"
+armv5te_deps="armv4l"
+armv6_deps="armv4l"
+iwmmxt_deps="armv4l"
+mmi_deps="mips"
+mmx_deps="x86"
+ssse3_deps="x86"
+
 # decoders / encoders
+ac3_decoder_deps="gpl"
 dxa_decoder_deps="zlib"
 flashsv_decoder_deps="zlib"
 flashsv_encoder_deps="zlib"
@@ -706,6 +736,7 @@ msmpeg4v2_decoder_deps="h263_decoder"
 msmpeg4v3_decoder_deps="h263_decoder"
 png_decoder_deps="zlib"
 png_encoder_deps="zlib"
+svq3_decoder_deps="h264_parser"
 vc1_decoder_deps="h263_decoder"
 wmv1_decoder_deps="h263_decoder"
 wmv2_decoder_deps="h263_decoder"
@@ -739,7 +770,6 @@ audio_demuxer_deps_any="audio_oss audio_beos"
 audio_muxer_deps_any="audio_oss audio_beos"
 dc1394_demuxer_deps="dc1394"
 dv1394_demuxer_deps="dv1394"
-gxf_muxer_deps="gpl"
 libnut_demuxer_deps="libnut"
 libnut_muxer_deps="libnut"
 mp3_demuxer_deps="mpegaudio_parser"
@@ -786,15 +816,13 @@ logfile="config.err"
 
 # installation paths
 PREFIX="/usr/local"
-libdir='${PREFIX}/lib'
+libdir='$(PREFIX)/lib'
 shlibdir="$libdir"
-incdir='${PREFIX}/include/ffmpeg'
-mandir='${PREFIX}/man'
-bindir='${PREFIX}/bin'
+incdir='$(PREFIX)/include/ffmpeg'
+mandir='$(PREFIX)/man'
+bindir='$(PREFIX)/bin'
 
 # toolchain
-cross_prefix=""
-cross_compile="no"
 cc="gcc"
 ar="ar"
 ranlib="ranlib"
@@ -805,26 +833,11 @@ asmalign_pot="unknown"
 # machine
 arch=`uname -m`
 cpu="generic"
-powerpc_perf="no"
-mmx="default"
-cmov="no"
-fast_cmov="no"
-fast_unaligned="no"
-armv5te="default"
-armv6="default"
-iwmmxt="default"
-altivec="default"
-dcbzl="no"
-mmi="default"
-bigendian="no"
 
 # OS
 targetos=$(tolower $(uname -s))
-beos_netserver="no"
-os2="no"
 
 # non-library system interfaces
-audio_beos="default"
 audio_oss="yes"
 bktr="yes"
 dv1394="yes"
@@ -832,63 +845,25 @@ v4l2="yes"
 v4l="yes"
 
 # libraries
-avisynth="no"
-dc1394="no"
-dlfcn_h="no"
-dlopen="no"
-liba52="no"
-liba52bin="no"
-libamr_nb="no"
-libamr_wb="no"
-libfaac="no"
-libfaad2="no"
-libfaad="no"
-libfaadbin="no"
-libgsm="no"
-libmp3lame="no"
-libnut="no"
-libogg="no"
-libtheora="no"
-libvorbis="no"
-libx264="no"
-libxvid="no"
-mlib="no"
-x11grab="no"
 zlib="yes"
 
 # configurable options
 debug="yes"
 dostrip="yes"
-extra_warnings="no"
 ffmpeg="yes"
 ffplay="yes"
 ffserver="yes"
-gpl="no"
-gprof="no"
 ipv6="yes"
-shared="no"
 static="yes"
-memalign_hack="no"
 mpegaudio_hp="yes"
 network="yes"
 optimize="yes"
-pp="no"
 protocols="yes"
-swscaler="no"
 vhook="default"
 
-# threading
-beosthreads="no"
-os2threads="no"
-pthreads="no"
-w32threads="no"
-thread_type="no"
-
 # build settings
 SHFLAGS='-shared -Wl,-soname,$@'
 VHOOKSHFLAGS='$(SHFLAGS)'
-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"
@@ -900,9 +875,7 @@ SLIBSUF=".so"
 SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
-EXESUF=""
-BUILDSUF=""
-LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
+LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIB)"'
 
 # find source path
 source_path="`dirname \"$0\"`"
@@ -931,6 +904,7 @@ DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path
 PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`
 
 enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST $PROTOCOL_LIST $BSF_LIST
+enable $ARCH_EXT_LIST
 
 die_unknown(){
     echo "Unknown option \"$1\"."
@@ -938,6 +912,13 @@ die_unknown(){
     exit 1
 }
 
+show_list() {
+    for part in $*; do
+        echo $part | sed 's/_[^_]*$//'
+    done | sort
+    exit 0
+}
+
 for opt do
   optval="${opt#*=}"
   case "$opt" in
@@ -981,8 +962,6 @@ for opt do
   ;;
   --disable-opts) optimize="no"
   ;;
-  --enable-small) optimize="small"
-  ;;
   --enable-sunmlib) mlib="yes"
   ;;
   --disable-strip) dostrip="no"
@@ -1013,6 +992,11 @@ for opt do
   echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
   $action $option
   ;;
+  --list-*)
+    NAME="${opt#--list-}"
+    NAME=$(toupper ${NAME%s})
+    eval show_list \$${NAME}_LIST
+  ;;
   --help) show_help
   ;;
   *)
@@ -1090,6 +1074,10 @@ case "$arch" in
   ;;
 esac
 
+enable $arch
+enabled_any x86_32 x86_64 && enable x86
+enabled     sparc64       && enable sparc
+
 # OS specific
 osextralibs="-lm"
 case $targetos in
@@ -1124,7 +1112,6 @@ case $targetos in
     fi ;;
   sunos)
     dv1394="no"
-    FFLDFLAGS=""
     FFSERVERLDFLAGS=""
     SHFLAGS="-shared -Wl,-h,\$@"
     add_extralibs "-lsocket -lnsl"
@@ -1137,7 +1124,7 @@ case $targetos in
     dv1394="no"
     need_memalign="no"
     LIBOBJFLAGS="\$(PIC)"
-    LDCONFIG="ldconfig -m \$(shlibdir)"
+    LDCONFIG="ldconfig -m \$(SHLIBDIR)"
     SHFLAGS='-shared'
     SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
     SLIBNAME_WITH_VERSION='$(SLIBNAME)'
@@ -1161,8 +1148,8 @@ case $targetos in
   darwin)
     dv1394="no"
     need_memalign="no"
-    SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
-    VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
+    SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(SHLIBDIR)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
+    VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$@'
     osextralibs=""
     strip="strip -x"
     FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
@@ -1185,7 +1172,7 @@ case $targetos in
     SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
     SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
     SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
-    SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
+    SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(SHLIBDIR)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
     SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base"
     enabled network && add_extralibs -lws2_32
     ;;
@@ -1193,8 +1180,12 @@ case $targetos in
     targetos=cygwin
     shlibdir="$bindir"
     dv1394="no"
-    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libswscale -L$(BUILD_ROOT)/libavutil'
-    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lswscale$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
+    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
+    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
+    if enabled swscaler; then
+        VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
+        VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
+    fi
     osextralibs=""
     EXESUF=".exe"
     SLIBPREF="cyg"
@@ -1210,27 +1201,6 @@ case $targetos in
     targetos=irix
     ranlib="echo ignoring ranlib"
     ;;
-  os/2)
-    TMPE=$TMPE".exe"
-    ar="emxomfar -p128"
-    ranlib="echo ignoring ranlib"
-    strip="echo ignoring strip"
-    add_cflags "-Zomf"
-    FFLDFLAGS="-Zomf -Zstack 16384 -s"
-    SHFLAGS="-Zdll -Zomf"
-    FFSERVERLDFLAGS=""
-    LIBPREF=""
-    LIBSUF=".lib"
-    SLIBPREF=""
-    SLIBSUF=".dll"
-    EXESUF=".exe"
-    osextralibs=""
-    pkg_requires=""
-    dv1394="no"
-    ffserver="no"
-    vhook="no"
-    os2="yes"
-    ;;
   *)
     targetos="${targetos}-UNKNOWN"
     ;;
@@ -1256,7 +1226,7 @@ ranlib="${cross_prefix}${ranlib}"
 strip="${cross_prefix}${strip}"
 
 # we need to build at least one lib type
-if disabled_all static shared; then
+if ! enabled_any static shared; then
     cat <<EOF
 At least one library type must be built.
 Specify --enable-static to build the static libraries or --enable-shared to
@@ -1266,7 +1236,11 @@ EOF
     exit 1;
 fi
 
-if disabled libogg; then
+if disabled static; then
+    LIB=""
+fi
+
+if ! enabled libogg; then
     enabled libtheora && die "libogg must be enabled to enable libtheora."
     enabled libvorbis && die "libogg must be enabled to enable libvorbis."
 fi
@@ -1287,7 +1261,7 @@ EOF
 fi
 
 
-if disabled gpl ; then
+if ! enabled gpl; then
     die_gpl_disabled(){
         name=$1
         shift
@@ -1302,14 +1276,7 @@ if disabled gpl ; then
     die_gpl_disabled "The software scaler"     swscaler
 fi
 
-# compute MMX state
-if test $mmx = "default"; then
-    if test $arch = "x86_32" -o $arch = "x86_64"; then
-        mmx="yes"
-    else
-        mmx="no"
-    fi
-fi
+check_deps $ARCH_EXT_LIST
 
 test -z "$need_memalign" && need_memalign="$mmx"
 
@@ -1329,17 +1296,7 @@ enabled needmdynamicnopic && add_cflags -mdynamic-no-pic
 
 disabled optimize || add_cflags -fomit-frame-pointer
 
-# Can only do AltiVec on PowerPC
-if test $altivec = "default"; then
-    if test $arch = "powerpc"; then
-        altivec="yes"
-    else
-        altivec="no"
-    fi
-fi
-
 # Add processor-specific flags
-POWERPCMODE="32bits"
 if test $cpu != "generic"; then
     warn_altivec(){
         $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
@@ -1372,12 +1329,12 @@ if test $cpu != "generic"; then
         G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
             add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
             warn_altivec disabled PPC970
-            POWERPCMODE="64bits"
+            enable ppc64
         ;;
         Cell|CELL|cell)
             add_cflags "-mcpu=cell"
             warn_altivec disabled Cell
-            POWERPCMODE="64bits"
+            enable ppc64
         ;;
         # targets that do NOT support conditional mov (cmov)
         i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
@@ -1440,14 +1397,14 @@ int main(){
 EOF
 if test "$?" != 0; then
     echo "$cc is unable to create an executable file."
-    if test -z "$cross_prefix" && disabled cross_compile ; then
+    if test -z "$cross_prefix" && ! enabled cross_compile ; 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
 
-if test $arch = "x86_32" -o $arch = "x86_64"; then
+if enabled x86; then
     # check whether EBP is available on x86
     # As 'i' is stored on the stack, this program will crash
     # if the base pointer is used to access it because the
@@ -1468,7 +1425,7 @@ int main(){
 EOF
 
     # check whether binutils is new enough to compile SSSE3
-    check_cc <<EOF && enable ssse3
+    enabled ssse3 && check_cc <<EOF || disable ssse3
 int main(){
     asm volatile ("pabsw %xmm0, %xmm0");
 }
@@ -1491,20 +1448,16 @@ fi
 # check for SIMD availability
 
 # AltiVec flags: The FSF version of GCC differs from the Apple version
-if test $arch = "powerpc"; then
-    if enabled altivec; then
-        if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
-            add_cflags "-faltivec"
-        else
-            add_cflags "-maltivec -mabi=altivec"
-        fi
+if enabled altivec; then
+    if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
+        add_cflags "-faltivec"
+    else
+        add_cflags "-maltivec -mabi=altivec"
     fi
-fi
 
-check_header altivec.h
+    check_header altivec.h
 
-# check if our compiler supports Motorola AltiVec C API
-if enabled altivec; then
+    # check if our compiler supports Motorola AltiVec C API
     if enabled altivec_h; then
         inc_altivec_h="#include <altivec.h>"
     else
@@ -1521,41 +1474,24 @@ 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");
-        }
+enabled armv5te && check_cc <<EOF || disable armv5te
+int main(void) {
+    __asm__ __volatile__ ("qadd r0, r0, r0");
+}
 EOF
-fi
 
-if test $armv6 = "default" -a $arch = "armv4l"; then
-    check_cc <<EOF && armv6=yes || armv6=no
+enabled armv6 && check_cc <<EOF || disable armv6
 int main(void) {
     __asm__ __volatile__ ("sadd16 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");
-        }
+enabled iwmmxt && check_cc <<EOF || disable iwmmxt
+int main(void) {
+    __asm__ __volatile__ ("wunpckelub wr6, wr4");
+}
 EOF
-fi
-
-# mmi only available on mips
-if test $mmi = "default"; then
-    if test $arch = "mips"; then
-        mmi="yes"
-    else
-        mmi="no"
-    fi
-fi
 
 # check if our compiler supports mmi
 enabled mmi && check_cc <<EOF || mmi="no"
@@ -1567,7 +1503,7 @@ EOF
 
 # ---
 # big/little-endian test
-if disabled cross_compile; then
+if ! enabled cross_compile; then
     check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
 #include <inttypes.h>
 int main(int argc, char ** argv){
@@ -1588,16 +1524,21 @@ fi
 check_header malloc.h
 check_func memalign
 
-if disabled_all memalign memalign_hack && enabled need_memalign ; then
+if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
     die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
 fi
 
 check_header byteswap.h
 
+check_func mkstemp
+
+check_header termios.h
+check_header conio.h
+
 check_header arpa/inet.h
+check_header winsock2.h
 
 check_func inet_aton
-check_func localtime_r
 enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
 
 # ffserver uses poll(),
@@ -1624,7 +1565,7 @@ fi
 
 for thread in $THREADS_LIST; do
     if enabled $thread; then
-        if ! disabled thread_type ; then
+        if test -n "$thread_type"; then
             die "ERROR: Only one thread type must be selected."
         else
             thread_type="$thread"
@@ -1632,6 +1573,13 @@ for thread in $THREADS_LIST; do
     fi
 done
 
+# test for lrintf in math.h
+check_exec <<EOF && lrintf=yes || lrintf=no
+#define _ISOC9X_SOURCE  1
+#include <math.h>
+int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
+EOF
+
 enabled_any libamr_nb libamr_wb && enable libamr
 
 # these are off by default, so fail if requested and not available
@@ -1652,12 +1600,8 @@ enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaa
 enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
 enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
 
-# test for lrintf in math.h
-check_exec <<EOF && lrintf=yes || lrintf=no
-#define _ISOC9X_SOURCE  1
-#include <math.h>
-int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
-EOF
+# disable the native AC-3 decoder if liba52 is enabled
+enabled liba52 && disable ac3_decoder
 
 _restrict=
 for restrict_keyword in restrict __restrict__ __restrict; do
@@ -1676,7 +1620,11 @@ elif check_func dlopen -ldl; then
     ldl=-ldl
 fi
 
+check_func getrusage
+check_func2 windows.h GetProcessTimes
+
 check_func fork
+check_func closesocket
 
 test "$vhook" = "default" && vhook="$dlopen"
 
@@ -1792,12 +1740,13 @@ check_cflags -Wno-pointer-sign
 enabled extra_warnings && check_cflags -Winline
 
 # add some linker flags
+check_ldflags -Wl,--warn-common
 check_ldflags $LDLATEFLAGS
 
-# not all compilers support -Os
-test "$optimize" = "small" && check_cflags -Os
-
-if enabled optimize; then
+if enabled small; then
+    check_cflags -Os            # not all compilers support -Os
+    optimize="small"
+elif enabled optimize; then
     if test -n "`$cc -v 2>&1 | grep xlc`"; then
         add_cflags  "-O5"
         add_ldflags "-O5"
@@ -1821,7 +1770,7 @@ if enabled gprof; then
     add_ldflags "-p"
 fi
 
-VHOOKCFLAGS="-fPIC `echo $CFLAGS | sed s/-mdynamic-no-pic//`"
+VHOOKCFLAGS="-fPIC"
 
 # find if .align arg is power-of-two or not
 if test $asmalign_pot = "unknown"; then
@@ -1855,65 +1804,65 @@ echo "ARCH                      $arch ($cpu)"
 if test "$BUILDSUF" != ""; then
     echo "build suffix              $BUILDSUF"
 fi
-echo "big-endian                $bigendian"
+echo "big-endian                ${bigendian-no}"
 if test $arch = "x86_32" -o $arch = "x86_64"; then
-    echo "MMX enabled               $mmx"
-    echo "CMOV enabled              $cmov"
-    echo "CMOV is fast              $fast_cmov"
+    echo "MMX enabled               ${mmx-no}"
+    echo "CMOV enabled              ${cmov-no}"
+    echo "CMOV is fast              ${fast_cmov-no}"
 fi
 if test $arch = "armv4l"; then
-    echo "ARMv5TE enabled           $armv5te"
-    echo "ARMv6 enabled             $armv6"
-    echo "IWMMXT enabled            $iwmmxt"
+    echo "ARMv5TE enabled           ${armv5te-no}"
+    echo "ARMv6 enabled             ${armv6-no}"
+    echo "IWMMXT enabled            ${iwmmxt-no}"
 fi
 if test $arch = "mips"; then
-    echo "MMI enabled               $mmi"
+    echo "MMI enabled               ${mmi-no}"
 fi
 if test $arch = "powerpc"; then
-    echo "AltiVec enabled           $altivec"
-    echo "dcbzl available           $dcbzl"
+    echo "AltiVec enabled           ${altivec-no}"
+    echo "dcbzl available           ${dcbzl-no}"
 fi
-echo "gprof enabled             $gprof"
-echo "debug symbols             $debug"
-echo "strip symbols             $dostrip"
-echo "optimize                  $optimize"
-echo "static                    $static"
-echo "shared                    $shared"
-echo "postprocessing support    $pp"
-echo "software scaler enabled   $swscaler"
-echo "video hooking             $vhook"
+echo "gprof enabled             ${gprof-no}"
+echo "debug symbols             ${debug-no}"
+echo "strip symbols             ${dostrip-no}"
+echo "optimize                  ${optimize-no}"
+echo "static                    ${static-no}"
+echo "shared                    ${shared-no}"
+echo "postprocessing support    ${pp-no}"
+echo "software scaler enabled   ${swscaler-no}"
+echo "video hooking             ${vhook-no}"
 if enabled vhook; then
-    echo "Imlib2 support            $imlib2"
-    echo "FreeType support          $freetype2"
+    echo "Imlib2 support            ${imlib2-no}"
+    echo "FreeType support          ${freetype2-no}"
 fi
-echo "network support           $network"
+echo "network support           ${network-no}"
 if enabled network; then
-    echo "IPv6 support              $ipv6"
+    echo "IPv6 support              ${ipv6-no}"
 fi
-echo "threading support         $thread_type"
-echo "SDL support               $sdl"
+echo "threading support         ${thread_type-no}"
+echo "SDL support               ${sdl-no}"
 if enabled sdl_too_old; then
     echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
 fi
-echo "Sun medialib support      $mlib"
-echo "AVISynth enabled          $avisynth"
-echo "liba52 support            $liba52"
-echo "liba52 dlopened           $liba52bin"
-echo "libamr-nb support         $libamr_nb"
-echo "libamr-wb support         $libamr_wb"
-echo "libfaac enabled           $libfaac"
-echo "libfaad enabled           $libfaad"
-echo "faadbin enabled           $libfaadbin"
-echo "libgsm enabled            $libgsm"
-echo "libmp3lame enabled        $libmp3lame"
-echo "libnut enabled            $libnut"
-echo "libogg enabled            $libogg"
-echo "libtheora enabled         $libtheora"
-echo "libvorbis enabled         $libvorbis"
-echo "x264 enabled              $libx264"
-echo "XviD enabled              $libxvid"
-echo "zlib enabled              $zlib"
-if disabled gpl; then
+echo "Sun medialib support      ${mlib-no}"
+echo "AVISynth enabled          ${avisynth-no}"
+echo "liba52 support            ${liba52-no}"
+echo "liba52 dlopened           ${liba52bin-no}"
+echo "libamr-nb support         ${libamr_nb-no}"
+echo "libamr-wb support         ${libamr_wb-no}"
+echo "libfaac enabled           ${libfaac-no}"
+echo "libfaad enabled           ${libfaad-no}"
+echo "libfaad dlopened          ${libfaadbin-no}"
+echo "libgsm enabled            ${libgsm-no}"
+echo "libmp3lame enabled        ${libmp3lame-no}"
+echo "libnut enabled            ${libnut-no}"
+echo "libogg enabled            ${libogg-no}"
+echo "libtheora enabled         ${libtheora-no}"
+echo "libvorbis enabled         ${libvorbis-no}"
+echo "x264 enabled              ${libx264-no}"
+echo "XviD enabled              ${libxvid-no}"
+echo "zlib enabled              ${zlib-no}"
+if ! enabled gpl; then
     echo "License: LGPL"
 else
     echo "License: GPL"
@@ -1926,12 +1875,12 @@ echo "/* Automatically generated by configure - do not modify! */" > $TMPH
 echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
 
 echo "PREFIX=$PREFIX" >> config.mak
-echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
-echo "libdir=\$(DESTDIR)$libdir" >> config.mak
-echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
-echo "incdir=\$(DESTDIR)$incdir" >> config.mak
-echo "bindir=\$(DESTDIR)$bindir" >> config.mak
-echo "mandir=\$(DESTDIR)$mandir" >> config.mak
+echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak
+echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
+echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
+echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
+echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
+echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
 echo "MAKE=$make" >> config.mak
 echo "CC=$cc" >> config.mak
 echo "AR=$ar" >> config.mak
@@ -1955,29 +1904,11 @@ echo "BUILD_STATIC=$static" >> config.mak
 echo "BUILDSUF=$BUILDSUF" >> config.mak
 echo "LIBPREF=$LIBPREF" >> config.mak
 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
-if enabled static; then
-  echo "LIB=$LIB" >> config.mak
-else # Some Make complain if this variable does not exist.
-  echo "LIB=" >> config.mak
-fi
+echo "LIB=$LIB" >> config.mak
 echo "SLIBPREF=$SLIBPREF" >> config.mak
 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
 
-enable $arch
-
-# special cases
-enabled_any x86_32 x86_64 && enable x86
-enabled     sparc64       && enable sparc
-
-case "$arch" in
-    powerpc)
-        if test "$POWERPCMODE" = "64bits"; then
-            echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
-        fi
-        ;;
-esac
-
 if enabled bigendian; then
   echo "WORDS_BIGENDIAN=yes" >> config.mak
   echo "#define WORDS_BIGENDIAN 1" >> $TMPH
@@ -2041,9 +1972,8 @@ fi
 
 echo "#define restrict $_restrict" >> $TMPH
 
-if test "$optimize" = "small"; then
+if enabled small; then
   echo "#define always_inline"  >> $TMPH
-  echo "#define CONFIG_SMALL 1" >> $TMPH
 fi
 
 echo "SRC_PATH=\"$source_path\"" >> config.mak
@@ -2084,6 +2014,7 @@ if enabled source_path_used; then
          libavutil \
          libswscale \
          tests \
+         tools \
          vhook \
          "
     FILES="\
@@ -2094,8 +2025,6 @@ if enabled source_path_used; then
           libpostproc/Makefile \
           libavutil/Makefile \
           libswscale/Makefile \
-          tests/Makefile \
-          vhook/Makefile \
           doc/texi2pod.pl \
           "
     for dir in $DIRS ; do