configure
aeb29222
 #!/bin/sh
0f3cb305
 #
c0b1bc8d
 # FFmpeg configure script
f57620d5
 #
949906ea
 # Copyright (c) 2000-2002 Fabrice Bellard
 # Copyright (c) 2005-2008 Diego Biurrun
 # Copyright (c) 2005-2008 Mans Rullgard
0f3cb305
 #
cf9d24ad
 
31e647f8
 # Prevent locale nonsense from breaking basic text processing.
79ab96ba
 LC_ALL=C
 export LC_ALL
31e647f8
 
cde2d79a
 # make sure we are running under a compatible shell
c21d6325
 # try to make this part work with most shells
 
 try_exec(){
0dbe81bb
     echo "Trying shell $1"
2270b4b2
     type "$1" > /dev/null 2>&1 && exec "$@"
c21d6325
 }
 
5237ce67
 unset foo
2270b4b2
 (: ${foo%%bar}) 2> /dev/null
0dbe81bb
 E1="$?"
 
2270b4b2
 (: ${foo?}) 2> /dev/null
0dbe81bb
 E2="$?"
 
 if test "$E1" != 0 || test "$E2" = 0; then
     echo "Broken shell detected.  Trying alternatives."
c21d6325
     export FF_CONF_EXEC
     if test "0$FF_CONF_EXEC" -lt 1; then
         FF_CONF_EXEC=1
         try_exec bash "$0" "$@"
     fi
     if test "0$FF_CONF_EXEC" -lt 2; then
         FF_CONF_EXEC=2
         try_exec ksh "$0" "$@"
     fi
     if test "0$FF_CONF_EXEC" -lt 3; then
         FF_CONF_EXEC=3
         try_exec /usr/xpg4/bin/sh "$0" "$@"
cde2d79a
     fi
     echo "No compatible shell script interpreter found."
fc53da20
     echo "This configure script requires a POSIX-compatible shell"
c21d6325
     echo "such as bash or ksh."
c0b1bc8d
     echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
505dfb09
     echo "Instead, install a working POSIX-compatible shell."
c0b1bc8d
     echo "Disabling this configure test will create a broken FFmpeg."
c21d6325
     if test "$BASH_VERSION" = '2.04.0(1)-release'; then
         echo "This bash version ($BASH_VERSION) is broken on your platform."
         echo "Upgrade to a later version if available."
     fi
cde2d79a
     exit 1
 fi
 
74c53c2d
 show_help(){
06454877
 cat <<EOF
 Usage: configure [options]
 Options: [defaults in brackets after descriptions]
 
 Standard options:
   --help                   print this message
19bd477d
   --logfile=FILE           log tests and output to FILE [config.log]
06454877
   --disable-logging        do not log configure debug information
   --prefix=PREFIX          install in PREFIX [$prefix]
   --bindir=DIR             install binaries in DIR [PREFIX/bin]
   --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
   --libdir=DIR             install libs in DIR [PREFIX/lib]
   --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]
   --incdir=DIR             install includes in DIR [PREFIX/include]
   --mandir=DIR             install man page in DIR [PREFIX/share/man]
 
 Configuration options:
   --disable-static         do not build static libraries [no]
   --enable-shared          build shared libraries [no]
   --enable-gpl             allow use of GPL code, the resulting libs
                            and binaries will be under GPL [no]
   --enable-version3        upgrade (L)GPL to version 3 [no]
   --enable-nonfree         allow use of nonfree code, the resulting libs
                            and binaries will be unredistributable [no]
   --disable-doc            do not build documentation
   --disable-ffmpeg         disable ffmpeg build
   --disable-ffplay         disable ffplay build
336ce917
   --disable-ffprobe        disable ffprobe build
06454877
   --disable-ffserver       disable ffserver build
5a0f7131
   --disable-avdevice       disable libavdevice build
   --disable-avcodec        disable libavcodec build
   --disable-avformat       disable libavformat build
   --disable-swscale        disable libswscale build
ced9556b
   --disable-postproc       disable libpostproc build
cccc039f
   --disable-avfilter       disable video filter support [no]
0dbfc1db
   --disable-pthreads       disable pthreads [auto]
06454877
   --enable-w32threads      use Win32 threads [no]
   --enable-x11grab         enable X11 grabbing [no]
   --disable-network        disable network support [no]
   --enable-gray            enable full grayscale support (slower color)
   --disable-swscale-alpha  disable alpha channel support in swscale
   --disable-fastdiv        disable table-based division
   --enable-small           optimize for size instead of speed
   --disable-aandct         disable AAN DCT code
7f3f5f46
   --disable-dct            disable DCT code
06454877
   --disable-fft            disable FFT code
   --disable-golomb         disable Golomb code
3447f12d
   --disable-huffman        disable Huffman code
06454877
   --disable-lpc            disable LPC code
   --disable-mdct           disable MDCT code
   --disable-rdft           disable RDFT code
dcb73592
   --enable-vaapi           enable VAAPI code
e8f6bd4b
   --enable-vdpau           enable VDPAU code
92c6a099
   --disable-dxva2          disable DXVA2 code
06454877
   --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
   --enable-hardcoded-tables use hardcoded tables instead of runtime generation
   --enable-memalign-hack   emulate memalign, interferes with memory debuggers
bb55e3a3
   --disable-everything     disable all components listed below
06454877
   --disable-encoder=NAME   disable encoder NAME
   --enable-encoder=NAME    enable encoder NAME
   --disable-encoders       disable all encoders
   --disable-decoder=NAME   disable decoder NAME
   --enable-decoder=NAME    enable decoder NAME
   --disable-decoders       disable all decoders
   --disable-hwaccel=NAME   disable hwaccel NAME
   --enable-hwaccel=NAME    enable hwaccel NAME
   --disable-hwaccels       disable all hwaccels
   --disable-muxer=NAME     disable muxer NAME
   --enable-muxer=NAME      enable muxer NAME
   --disable-muxers         disable all muxers
   --disable-demuxer=NAME   disable demuxer NAME
   --enable-demuxer=NAME    enable demuxer NAME
   --disable-demuxers       disable all demuxers
   --enable-parser=NAME     enable parser NAME
   --disable-parser=NAME    disable parser NAME
   --disable-parsers        disable all parsers
   --enable-bsf=NAME        enable bitstream filter NAME
   --disable-bsf=NAME       disable bitstream filter NAME
   --disable-bsfs           disable all bitstream filters
   --enable-protocol=NAME   enable protocol NAME
   --disable-protocol=NAME  disable protocol NAME
   --disable-protocols      disable all protocols
   --disable-indev=NAME     disable input device NAME
   --disable-outdev=NAME    disable output device NAME
   --disable-indevs         disable input devices
   --disable-outdevs        disable output devices
   --disable-devices        disable all devices
   --enable-filter=NAME     enable filter NAME
   --disable-filter=NAME    disable filter NAME
   --disable-filters        disable all filters
   --list-decoders          show all available decoders
   --list-encoders          show all available encoders
   --list-hwaccels          show all available hardware accelerators
   --list-muxers            show all available muxers
   --list-demuxers          show all available demuxers
   --list-parsers           show all available parsers
   --list-protocols         show all available protocols
   --list-bsfs              show all available bitstream filters
   --list-indevs            show all available input devices
   --list-outdevs           show all available output devices
   --list-filters           show all available filters
 
 External library support:
   --enable-avisynth        enable reading of AVISynth script files [no]
   --enable-bzlib           enable bzlib [autodetect]
89451dd6
   --enable-libcelt         enable CELT/Opus decoding via libcelt [no]
47941088
   --enable-frei0r          enable frei0r video filtering
be1ae17e
   --enable-libaacplus      enable AAC+ encoding via libaacplus [no]
06454877
   --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
   --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
6ebf0bfc
   --enable-libopencv       enable video filtering via libopencv [no]
06454877
   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
                            and libraw1394 [no]
   --enable-libdirac        enable Dirac support via libdirac [no]
   --enable-libfaac         enable FAAC support via libfaac [no]
bd8e7503
   --enable-libfreetype     enable libfreetype [no]
06454877
   --enable-libgsm          enable GSM support via libgsm [no]
   --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
   --enable-libnut          enable NUT (de)muxing via libnut,
                            native (de)muxer exists [no]
   --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [no]
0f943ce6
   --enable-librtmp         enable RTMP[E] support via librtmp [no]
06454877
   --enable-libschroedinger enable Dirac support via libschroedinger [no]
c8736de3
   --enable-libspeex        enable Speex encoding and decoding via libspeex [no]
06454877
   --enable-libtheora       enable Theora encoding via libtheora [no]
d89e738a
   --enable-libvo-aacenc    enable AAC encoding via libvo-aacenc [no]
f502ff3f
   --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
06454877
   --enable-libvorbis       enable Vorbis encoding via libvorbis,
                            native implementation exists [no]
8299a7f8
   --enable-libvpx          enable VP8 support via libvpx [no]
06454877
   --enable-libx264         enable H.264 encoding via x264 [no]
de295976
   --enable-libxavs         enable AVS encoding via xavs [no]
06454877
   --enable-libxvid         enable Xvid encoding via xvidcore,
                            native MPEG-4/Xvid encoder exists [no]
   --enable-mlib            enable Sun medialib [no]
   --enable-zlib            enable zlib [autodetect]
 
 Advanced options (experts only):
   --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
   --enable-cross-compile   assume a cross-compiler is used
   --sysroot=PATH           root of cross-build tree
   --sysinclude=PATH        location of cross-build system headers
   --target-os=OS           compiler targets OS [$target_os]
   --target-exec=CMD        command to run executables on target
   --target-path=DIR        path to view of build directory on target
   --nm=NM                  use nm tool
121d78d0
   --ar=AR                  use archive tool AR [$ar_default]
06454877
   --as=AS                  use assembler AS [$as_default]
   --cc=CC                  use C compiler CC [$cc_default]
   --ld=LD                  use linker LD
   --host-cc=HOSTCC         use host C compiler HOSTCC
   --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
   --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
   --host-libs=HLIBS        use libs HLIBS when linking for host
   --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
   --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
   --extra-libs=ELIBS       add ELIBS [$ELIBS]
   --extra-version=STRING   version string suffix []
   --build-suffix=SUFFIX    library name suffix []
   --arch=ARCH              select architecture [$arch]
   --cpu=CPU                select the minimum required CPU (affects
                            instruction selection, may crash on older CPUs)
c8a4ae00
   --disable-asm            disable all assembler optimizations
06454877
   --disable-altivec        disable AltiVec optimizations
   --disable-amd3dnow       disable 3DNow! optimizations
   --disable-amd3dnowext    disable 3DNow! extended optimizations
   --disable-mmx            disable MMX optimizations
   --disable-mmx2           disable MMX2 optimizations
   --disable-sse            disable SSE optimizations
   --disable-ssse3          disable SSSE3 optimizations
cdeba2de
   --disable-avx            disable AVX optimizations
06454877
   --disable-armv5te        disable armv5te optimizations
   --disable-armv6          disable armv6 optimizations
   --disable-armv6t2        disable armv6t2 optimizations
   --disable-armvfp         disable ARM VFP optimizations
   --disable-iwmmxt         disable iwmmxt optimizations
   --disable-mmi            disable MMI optimizations
   --disable-neon           disable neon optimizations
   --disable-vis            disable VIS optimizations
   --disable-yasm           disable use of yasm assembler
   --enable-pic             build position-independent code
4ae40685
   --malloc-prefix=PFX      prefix malloc and related names with PFX
6b35d421
   --enable-sram            allow use of on-chip SRAM
9baec618
   --disable-symver         disable symbol versioning
06454877
 
c0b1bc8d
 Developer options (useful when working on FFmpeg itself):
06454877
   --disable-debug          disable debugging symbols
   --enable-debug=LEVEL     set the debug level [$debuglevel]
   --disable-optimizations  disable compiler optimizations
   --enable-extra-warnings  enable more compiler warnings
b1ca9642
   --disable-stripping      disable stripping of executables and shared libraries
bbd289aa
   --samples=PATH           location of test samples for FATE, if not set use
                            \$FATE_SAMPLES at make invocation time.
06454877
 
 NOTE: Object files are built at the place where configure is launched.
 EOF
60e8bc13
   exit 0
74c53c2d
 }
cf9d24ad
 
0884fadf
 quotes='""'
 
57bd82d4
 log(){
2270b4b2
     echo "$@" >> $logfile
57bd82d4
 }
 
720c69da
 log_file(){
c8e9f801
     log BEGIN $1
2270b4b2
     pr -n -t $1 >> $logfile
c8e9f801
     log END $1
 }
 
2ba042a7
 echolog(){
c8e9f801
     log "$@"
57bd82d4
     echo "$@"
2ba042a7
 }
 
7bfc8ae6
 warn(){
     log "WARNING: $*"
     WARNINGS="${WARNINGS}WARNING: $*\n"
 }
 
2ba042a7
 die(){
     echolog "$@"
     cat <<EOF
d326cf7f
 
2ba042a7
 If you think configure made a mistake, make sure you are using the latest
4a6a21f5
 version from Git.  If the latest version fails, report the problem to the
63ec0aa8
 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
2ba042a7
 EOF
e155a21a
     if disabled logging; then
2ba042a7
         cat <<EOF
e155a21a
 Rerun configure with logging enabled (do not use --disable-logging), and
 include the log this produces with your report.
2ba042a7
 EOF
     else
 cat <<EOF
e155a21a
 Include the log file "$logfile" produced by configure as this will help
 solving the problem.
2ba042a7
 EOF
     fi
57bd82d4
     exit 1
 }
 
6c6007d6
 # Avoid locale weirdness, besides we really just want to translate ASCII.
44161118
 toupper(){
6c6007d6
     echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
44161118
 }
 
4a5444db
 tolower(){
6c6007d6
     echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
4a5444db
 }
 
14a8acf1
 c_escape(){
     echo "$*" | sed 's/["\\]/\\\0/g'
 }
 
b04251c5
 sh_quote(){
     v=$(echo "$1" | sed "s/'/'\\\\''/g")
d72c981c
     test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
b04251c5
     echo "$v"
 }
 
8429368d
 cleanws(){
     echo "$@" | sed 's/^ *//;s/  */ /g;s/ *$//'
 }
 
be8f2501
 filter(){
     pat=$1
     shift
     for v; do
98ef6079
         eval "case $v in $pat) echo $v ;; esac"
be8f2501
     done
 }
 
9c5c348e
 filter_out(){
     pat=$1
     shift
     for v; do
         eval "case $v in $pat) ;; *) echo $v ;; esac"
     done
 }
 
36e2dea0
 map(){
     m=$1
     shift
e0e335a0
     for v; do eval $m; done
36e2dea0
 }
 
a8d04fba
 set_all(){
     value=$1
     shift
     for var in $*; do
         eval $var=$value
     done
 }
 
72a43668
 set_weak(){
     value=$1
     shift
     for var; do
         eval : \${$var:=$value}
     done
 }
 
5d117bd4
 set_safe(){
     var=$1
     shift
     eval $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')='$*'
 }
 
 get_safe(){
     eval echo \$$(echo "$1" | sed 's/[^A-Za-z0-9_]/_/g')
 }
 
799c9e9b
 pushvar(){
     for var in $*; do
         eval level=\${${var}_level:=0}
         eval ${var}_${level}="\$$var"
         eval ${var}_level=$(($level+1))
     done
 }
 
 popvar(){
     for var in $*; do
         eval level=\${${var}_level:-0}
         test $level = 0 && continue
         eval level=$(($level-1))
         eval $var="\${${var}_${level}}"
         eval ${var}_level=$level
         eval unset ${var}_${level}
     done
 }
 
a8d04fba
 enable(){
     set_all yes $*
 }
 
 disable(){
     set_all no $*
 }
 
72a43668
 enable_weak(){
     set_weak yes $*
 }
 
 disable_weak(){
     set_weak no $*
 }
 
72702705
 enable_safe(){
fd07f803
     for var; do
         enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
     done
72702705
 }
 
 disable_safe(){
fd07f803
     for var; do
         disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
     done
72702705
 }
 
f9d328da
 do_enable_deep(){
     for var; do
         enabled $var && continue
         eval sel="\$${var}_select"
c510c7b5
         eval sgs="\$${var}_suggest"
         pushvar var sgs
f9d328da
         enable_deep $sel
c510c7b5
         popvar sgs
         enable_deep_weak $sgs
f9d328da
         popvar var
     done
 }
 
 enable_deep(){
     do_enable_deep $*
     enable $*
 }
 
72a43668
 enable_deep_weak(){
     do_enable_deep $*
     enable_weak $*
 }
 
57bd82d4
 enabled(){
3250003c
     test "${1#!}" = "$1" && op== || op=!=
     eval test "x\$${1#!}" $op "xyes"
44161118
 }
 
37970ebf
 disabled(){
3250003c
     test "${1#!}" = "$1" && op== || op=!=
     eval test "x\$${1#!}" $op "xno"
37970ebf
 }
 
44161118
 enabled_all(){
     for opt; do
         enabled $opt || return 1
     done
 }
 
85bca2c5
 disabled_all(){
     for opt; do
         disabled $opt || return 1
     done
 }
 
44161118
 enabled_any(){
     for opt; do
         enabled $opt && return 0
     done
 }
 
85bca2c5
 disabled_any(){
     for opt; do
         disabled $opt && return 0
     done
f7b230a7
     return 1
85bca2c5
 }
 
c9d19248
 set_default(){
     for opt; do
88268e94
         eval : \${$opt:=\$${opt}_default}
c9d19248
     done
 }
 
4a0d6686
 is_in(){
     value=$1
     shift
     for var in $*; do
         [ $var = $value ] && return 0
     done
     return 1
 }
 
30fd06be
 check_deps(){
     for cfg; do
3250003c
         cfg="${cfg#!}"
799c9e9b
         enabled ${cfg}_checking && die "Circular dependency for $cfg."
         disabled ${cfg}_checking && continue
         enable ${cfg}_checking
 
30fd06be
         eval dep_all="\$${cfg}_deps"
         eval dep_any="\$${cfg}_deps_any"
7ef3425f
         eval dep_sel="\$${cfg}_select"
c510c7b5
         eval dep_sgs="\$${cfg}_suggest"
3d7453e0
         eval dep_ifa="\$${cfg}_if"
         eval dep_ifn="\$${cfg}_if_any"
799c9e9b
 
3d7453e0
         pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
         check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
         popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
799c9e9b
 
3d7453e0
         [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
         [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
6a702d4c
         enabled_all  $dep_all || disable $cfg
         enabled_any  $dep_any || disable $cfg
7ef3425f
         disabled_any $dep_sel && disable $cfg
799c9e9b
 
4ec45764
         if enabled $cfg; then
             eval dep_extralibs="\$${cfg}_extralibs"
             test -n "$dep_extralibs" && add_extralibs $dep_extralibs
f9d328da
             enable_deep $dep_sel
c510c7b5
             enable_deep_weak $dep_sgs
4ec45764
         fi
 
799c9e9b
         disable ${cfg}_checking
30fd06be
     done
 }
 
72cfcf41
 print_config_h(){
     enabled $1 && v=1 || v=0
     echo "#define $2 $v"
 }
 
 print_config_mak(){
     enabled $1 && v= || v=!
     echo "$v$2=yes"
 }
 
55127e7b
 print_config_asm(){
     enabled $1 && echo "%define $2"
 }
 
44161118
 print_config(){
     pfx=$1
72cfcf41
     files=$2
     shift 2
44161118
     for cfg; do
5e622c40
         ucname="$(toupper $cfg)"
72cfcf41
         for f in $files; do
             "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f
         done
44161118
     done
57bd82d4
 }
 
31c0121d
 print_enabled(){
     test "$1" = -n && end=" " && shift || end="\n"
     suf=$1
     shift
     for v; do
         enabled $v && printf "%s$end" ${v%$suf};
     done
 }
 
57bd82d4
 append(){
     var=$1
     shift
     eval "$var=\"\$$var $*\""
 }
 
60361817
 prepend(){
     var=$1
     shift
     eval "$var=\"$* \$$var\""
 }
 
50a334e4
 add_cppflags(){
caf458dd
     append CPPFLAGS $($filter_cppflags "$@")
50a334e4
 }
 
57bd82d4
 add_cflags(){
caf458dd
     append CFLAGS $($filter_cflags "$@")
57bd82d4
 }
 
2f2e6c7c
 add_asflags(){
caf458dd
     append ASFLAGS $($filter_asflags "$@")
2f2e6c7c
 }
 
57bd82d4
 add_ldflags(){
     append LDFLAGS "$@"
 }
 
 add_extralibs(){
60361817
     prepend extralibs "$@"
57bd82d4
 }
 
b0cfb663
 check_cmd(){
b3cb5d51
     log "$@"
2270b4b2
     "$@" >> $logfile 2>&1
b0cfb663
 }
 
dcd479c0
 check_cc(){
57bd82d4
     log check_cc "$@"
2270b4b2
     cat > $TMPC
720c69da
     log_file $TMPC
50a334e4
     check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
57bd82d4
 }
 
 check_cpp(){
     log check_cpp "$@"
2270b4b2
     cat > $TMPC
720c69da
     log_file $TMPC
9e7f3277
     check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
dcd479c0
 }
 
f65883c8
 check_as(){
     log check_as "$@"
     cat > $TMPC
     log_file $TMPC
2f2e6c7c
     check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
f65883c8
 }
 
940f335a
 check_asm(){
     log check_asm "$@"
     name="$1"
3784e82e
     code="$2"
940f335a
     shift 2
49214f61
     disable $name
     check_as "$@" <<EOF && enable $name
3784e82e
 void foo(void){ __asm__ volatile($code); }
940f335a
 EOF
 }
 
304d586d
 check_yasm(){
     log check_yasm "$@"
     echo "$1" > $TMPS
     log_file $TMPS
     shift 1
     check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
 }
 
dcd479c0
 check_ld(){
57bd82d4
     log check_ld "$@"
3155a644
     flags=''
     libs=''
     for f; do
         test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
     done
2a194acd
     check_cc $($filter_cflags $flags) || return
7e75f9fe
     check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $libs $extralibs
dcd479c0
 }
 
50a334e4
 check_cppflags(){
     log check_cppflags "$@"
caf458dd
     set -- $($filter_cppflags "$@")
     check_cc "$@" <<EOF && append CPPFLAGS "$@"
50a334e4
 int x;
 EOF
 }
 
dcd479c0
 check_cflags(){
57bd82d4
     log check_cflags "$@"
caf458dd
     set -- $($filter_cflags "$@")
     check_cc "$@" <<EOF && append CFLAGS "$@"
dcd479c0
 int x;
 EOF
 }
 
2ed46eea
 test_ldflags(){
     log test_ldflags "$@"
     check_ld "$@" <<EOF
c23a0ac8
 int main(void){ return 0; }
dcd479c0
 EOF
 }
 
2ed46eea
 check_ldflags(){
     log check_ldflags "$@"
     test_ldflags "$@" && add_ldflags "$@"
 }
 
dcd479c0
 check_header(){
57bd82d4
     log check_header "$@"
dcd479c0
     header=$1
     shift
b77df637
     disable_safe $header
     check_cpp "$@" <<EOF && enable_safe $header
dcd479c0
 #include <$header>
 int x;
 EOF
 }
 
 check_func(){
57bd82d4
     log check_func "$@"
dcd479c0
     func=$1
     shift
d8bc5f06
     disable $func
     check_ld "$@" <<EOF && enable $func
dcd479c0
 extern int $func();
c23a0ac8
 int main(void){ $func(); }
dcd479c0
 EOF
 }
 
645d2652
 check_mathfunc(){
6b73c0ae
     log check_mathfunc "$@"
645d2652
     func=$1
     shift
     disable $func
     check_ld "$@" <<EOF && enable $func
 #include <math.h>
33bd38db
 float foo(float f) { return $func(f); }
 int main(void){ return 0; }
645d2652
 EOF
 }
 
2446d3d6
 check_func_headers(){
     log check_func_headers "$@"
f8d7b072
     headers=$1
05aa8c44
     funcs=$2
f8d7b072
     shift 2
05aa8c44
     {
         for hdr in $headers; do
             echo "#include <$hdr>"
         done
         for func in $funcs; do
             echo "long check_$func(void) { return (long) $func; }"
         done
         echo "int main(void) { return 0; }"
     } | check_ld "$@" && enable $funcs && enable_safe $headers
f8d7b072
 }
 
a5344cf7
 check_cpp_condition(){
     log check_cpp_condition "$@"
     header=$1
     condition=$2
f855b7b9
     shift 2
     check_cpp $($filter_cppflags "$@") <<EOF
a5344cf7
 #include <$header>
 #if !($condition)
 #error "unsatisfied condition: $condition"
 #endif
 EOF
 }
 
57bd82d4
 check_lib(){
     log check_lib "$@"
     header="$1"
     func="$2"
     shift 2
84400e9d
     check_header $header && check_func $func "$@" && add_extralibs "$@"
57bd82d4
 }
 
f8d7b072
 check_lib2(){
     log check_lib2 "$@"
     headers="$1"
05aa8c44
     funcs="$2"
f8d7b072
     shift 2
05aa8c44
     check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
f8d7b072
 }
 
5d117bd4
 check_pkg_config(){
     log check_pkg_config "$@"
     pkg="$1"
     headers="$2"
     funcs="$3"
     shift 3
cde55897
     $pkg_config --exists $pkg 2>/dev/null || return
5d117bd4
     pkg_cflags=$($pkg_config --cflags $pkg)
     pkg_libs=$($pkg_config --libs $pkg)
     check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
         set_safe ${pkg}_cflags $pkg_cflags   &&
         set_safe ${pkg}_libs   $pkg_libs
 }
 
dcd479c0
 check_exec(){
2270b4b2
     check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
57bd82d4
 }
 
7dfef245
 check_exec_crash(){
5e622c40
     code=$(cat)
7dfef245
 
     # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
     # are safe but may not be available everywhere.  Thus we use
     # raise(SIGTERM) instead.  The check is run in a subshell so we
     # can redirect the "Terminated" message from the shell.  SIGBUS
     # is not defined by standard C so it is used conditionally.
 
2270b4b2
     (check_exec "$@") >> $logfile 2>&1 <<EOF
7dfef245
 #include <signal.h>
 static void sighandler(int sig){
     raise(SIGTERM);
 }
e5af4a11
 int main(void){
7dfef245
     signal(SIGILL, sighandler);
     signal(SIGFPE, sighandler);
     signal(SIGSEGV, sighandler);
 #ifdef SIGBUS
     signal(SIGBUS, sighandler);
 #endif
     { $code }
 }
 EOF
 }
 
72be9e73
 check_type(){
     log check_type "$@"
     headers=$1
     type=$2
     shift 2
ae550ce9
     disable_safe "$type"
72be9e73
     incs=""
     for hdr in $headers; do
         incs="$incs
 #include <$hdr>"
     done
ae550ce9
     check_cc "$@" <<EOF && enable_safe "$type"
72be9e73
 $incs
 $type v;
 EOF
 }
 
14d36751
 check_struct(){
     log check_type "$@"
     headers=$1
     struct=$2
     member=$3
     shift 3
     disable_safe "${struct}_${member}"
     incs=""
     for hdr in $headers; do
         incs="$incs
 #include <$hdr>"
     done
     check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
 $incs
 const void *p = &(($struct *)0)->$member;
 EOF
 }
 
57bd82d4
 require(){
     name="$1"
     header="$2"
     func="$3"
     shift 3
     check_lib $header $func "$@" || die "ERROR: $name not found"
dcd479c0
 }
 
f8d7b072
 require2(){
     name="$1"
     headers="$2"
     func="$3"
     shift 3
     check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
 }
 
5d117bd4
 require_pkg_config(){
     pkg="$1"
     check_pkg_config "$@" || die "ERROR: $pkg not found"
     add_cflags    $(get_safe ${pkg}_cflags)
     add_extralibs $(get_safe ${pkg}_libs)
 }
 
f0125de9
 check_host_cc(){
     log check_host_cc "$@"
     cat > $TMPC
     log_file $TMPC
     check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
 }
 
 check_host_cflags(){
     log check_host_cflags "$@"
     check_host_cc "$@" <<EOF && append host_cflags "$@"
 int x;
 EOF
 }
 
c505dd31
 apply(){
     file=$1
     shift
     "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
 }
 
c34681df
 cp_if_changed(){
     cmp -s "$1" "$2" &&
         echo "$2 is unchanged" ||
         cp -f "$1" "$2"
 }
 
dcd61286
 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
 # system-dependent things.
 
4a0d6686
 COMPONENT_LIST="
     bsfs
     decoders
     demuxers
     encoders
3cde40aa
     filters
5666fd73
     hwaccels
c552605c
     indevs
4a0d6686
     muxers
c552605c
     outdevs
4a0d6686
     parsers
     protocols
 "
 
 CONFIG_LIST="
     $COMPONENT_LIST
e8ed9b7a
     aandct
a5444fee
     ac3dsp
5a0f7131
     avcodec
     avdevice
f7679c54
     avfilter
5a0f7131
     avformat
c88f5d72
     avisynth
f402916e
     bzlib
b33fa8a1
     crystalhd
7f3f5f46
     dct
c73f65d9
     doc
05aec7bb
     dwt
92c6a099
     dxva2
27a9466b
     fastdiv
c88f5d72
     ffmpeg
     ffplay
336ce917
     ffprobe
c88f5d72
     ffserver
1848f7d9
     fft
47941088
     frei0r
4f034993
     golomb
c88f5d72
     gpl
d8d0d0b2
     gray
4693b031
     h264dsp
4a384de5
     h264pred
3abe5fbd
     hardcoded_tables
3447f12d
     huffman
be1ae17e
     libaacplus
     libcdio
89451dd6
     libcelt
f7b8bffe
     libdc1394
690bfceb
     libdirac
2eed5a46
     libfaac
bd8e7503
     libfreetype
c88f5d72
     libgsm
6ebe07fb
     libmp3lame
c88f5d72
     libnut
0b175caa
     libopencore_amrnb
     libopencore_amrwb
6ebf0bfc
     libopencv
9a77d59a
     libopenjpeg
0f943ce6
     librtmp
f7cd9eed
     libschroedinger
ae14f311
     libspeex
150d2772
     libtheora
d89e738a
     libvo_aacenc
f502ff3f
     libvo_amrwbenc
c88f5d72
     libvorbis
8299a7f8
     libvpx
1cc60c47
     libx264
de295976
     libxavs
1cc60c47
     libxvid
f4d608e3
     lpc
b781cc12
     lsp
47a158cb
     mdct
c88f5d72
     memalign_hack
a8150374
     mlib
c4f5c2d6
     mpegaudiodsp
c88f5d72
     network
3fe142e2
     nonfree
8a3c8627
     pic
4a24ab64
     postproc
68602540
     rdft
44b70ce5
     rtpdec
e90f5b5a
     runtime_cpudetect
2e35e684
     shared
4538729a
     sinewin
bd2216e4
     small
6b35d421
     sram
2e35e684
     static
5a0f7131
     swscale
a9ddb5b1
     swscale_alpha
17492d5e
     vaapi
     vdpau
9cad0e4e
     version3
56a059ac
     x11grab
c88f5d72
     zlib
4a0d6686
 "
c88f5d72
 
8eee7025
 THREADS_LIST='
     pthreads
     w32threads
 '
 
3f5b56e5
 ARCH_LIST='
     alpha
a2fc0f6a
     arm
fdcd782d
     avr32
     avr32_ap
     avr32_uc
3f5b56e5
     bfin
     ia64
     m68k
     mips
bae3abb0
     mips64
3f5b56e5
     parisc
79cb09b2
     ppc
34d11b87
     ppc64
3f5b56e5
     s390
     sh4
     sparc
     sparc64
0844bae1
     tomi
3f5b56e5
     x86
     x86_32
     x86_64
 '
 
 ARCH_EXT_LIST='
1ac9331a
     altivec
3bf96eec
     amd3dnow
a1ef9f08
     amd3dnowext
1ac9331a
     armv5te
edab3048
     armv6
ab5cb084
     armv6t2
f55b299a
     armvfp
cdeba2de
     avx
3f5b56e5
     iwmmxt
     mmi
     mmx
d7f0920b
     mmx2
6b18d278
     neon
799fde37
     ppc4xx
1bb04d5a
     sse
9eeed841
     ssse3
93eb8e4d
     vfpv3
bd9d34a0
     vis
3f5b56e5
 '
 
a3e02a8c
 HAVE_LIST_PUB='
     bigendian
d268eee9
     fast_unaligned
a3e02a8c
 '
 
3f5b56e5
 HAVE_LIST="
     $ARCH_EXT_LIST
a3e02a8c
     $HAVE_LIST_PUB
3f5b56e5
     $THREADS_LIST
59782b82
     aligned_stack
35fd8122
     alsa_asoundlib_h
3f5b56e5
     altivec_h
c9fdab0d
     arpa_inet_h
dffb41b9
     attribute_may_alias
e7ea5e3d
     attribute_packed
6bd859d6
     bswap
ecf97f22
     closesocket
1ac9331a
     cmov
c88f5d72
     dcbzl
f8aa696f
     dev_bktr_ioctl_bt848_h
     dev_bktr_ioctl_meteor_h
     dev_ic_bt8xx_h
     dev_video_meteor_ioctl_meteor_h
     dev_video_bktr_ioctl_bt848_h
18b67ae5
     dlfcn_h
c88f5d72
     dlopen
bc574408
     dos_paths
245626d0
     ebp_available
     ebx_available
6b7c7703
     exp2
     exp2f
c2a29455
     fast_64bit
669b5583
     fast_clz
7073e9fc
     fast_cmov
534a2231
     fcntl
9d99cc5a
     fork
84882df6
     getaddrinfo
da9e86f8
     gethrtime
fc5607f8
     GetProcessMemoryInfo
4e68cb8a
     GetProcessTimes
66be5b45
     getrusage
a49d3025
     gnu_as
fc5607f8
     struct_rusage_ru_maxrss
2f0c136e
     ibm_asm
2e1913b1
     inet_aton
61d251db
     inline_asm
abfc8d05
     isatty
b58b9fa3
     kbhit
9f5ff83f
     ldbrx
a33cab3a
     llrint
07876e25
     llrintf
d96cd429
     local_aligned_16
     local_aligned_8
bd8e7503
     localtime_r
291fd18a
     log2
6b7c7703
     log2f
85dd97ad
     loongson
a33cab3a
     lrint
c88f5d72
     lrintf
e4673692
     lzo1x_999_compress
f8aa696f
     machine_ioctl_bt848_h
     machine_ioctl_meteor_h
c88f5d72
     malloc_h
73f6d31e
     MapViewOfFile
c88f5d72
     memalign
6ffa87d3
     mkstemp
0328b9ea
     mmap
b4e806b2
     pld
1f91cdce
     posix_memalign
a33cab3a
     round
     roundf
c88f5d72
     sdl
     sdl_video_size
b507ebd1
     setmode
15d59d2c
     sndio_h
72be9e73
     socklen_t
deb29777
     soundcard_h
f8cda19e
     poll_h
0104b608
     setrlimit
87958234
     strerror_r
47941088
     strtok_r
c0018613
     struct_addrinfo
b4d68544
     struct_ipv6_mreq
     struct_sockaddr_in6
3b2372bf
     struct_sockaddr_sa_len
33a4dbdd
     struct_sockaddr_storage
b462d132
     symver
     symver_gnu_asm
     symver_asm_label
b58412f1
     sys_mman_h
b091aa44
     sys_resource_h
81644c2e
     sys_select_h
deb29777
     sys_soundcard_h
1b6e8b73
     sys_videoio_h
d3a4b4e0
     ten_operands
8b8bf89e
     termios_h
b265431e
     threads
23d3931a
     trunc
7b04b8a0
     truncf
ce742de2
     vfp_args
7c5bfe7a
     VirtualAlloc
6ff3f3e7
     winsock2_h
cc078b5d
     xform_asm
6f74fb03
     xmm_clobbers
304d586d
     yasm
0cb78cef
 "
44161118
 
b6bb00b0
 # options emitted with CONFIG_ prefix but not available on command line
 CONFIG_EXTRA="
dc4f5a1c
     avutil
9cad0e4e
     gplv3
     lgplv3
b6bb00b0
 "
 
520cc7f1
 CMDLINE_SELECT="
3f5b56e5
     $ARCH_EXT_LIST
520cc7f1
     $CONFIG_LIST
8eee7025
     $THREADS_LIST
c8a4ae00
     asm
db6107b6
     cross_compile
520cc7f1
     debug
     extra_warnings
8c6afa4d
     logging
d2bbb2f7
     optimizations
b1ca9642
     stripping
9baec618
     symver
7595a5e4
     yasm
520cc7f1
 "
426be5dc
 
 PATHS_LIST='
d156bede
     bindir
14a8acf1
     datadir
26759c44
     incdir
     libdir
     mandir
     prefix
     shlibdir
426be5dc
 '
 
 CMDLINE_SET="
     $PATHS_LIST
121d78d0
     ar
426be5dc
     arch
313c46a6
     as
426be5dc
     build_suffix
     cc
     cpu
     cross_prefix
50567afa
     dep_cc
ac63af34
     extra_version
9da6609f
     host_cc
     host_cflags
     host_ldflags
     host_libs
82bb3329
     host_os
7a88617c
     install
684b28e0
     ld
426be5dc
     logfile
4ae40685
     malloc_prefix
89641463
     nm
5d117bd4
     pkg_config
2fad0977
     samples
b1ca9642
     strip
c5200f17
     sysinclude
     sysroot
a7ada2ba
     target_exec
26759c44
     target_os
a7ada2ba
     target_path
426be5dc
 "
520cc7f1
 
89f2932b
 CMDLINE_APPEND="
     extra_cflags
 "
 
912f3148
 # code dependency declarations
 
9eeed841
 # architecture extensions
808fa33c
 
a2fc0f6a
 armv5te_deps="arm"
 armv6_deps="arm"
ab5cb084
 armv6t2_deps="arm"
a2fc0f6a
 armvfp_deps="arm"
 iwmmxt_deps="arm"
808fa33c
 neon_deps="arm"
93eb8e4d
 vfpv3_deps="armvfp"
808fa33c
 
e241ba14
 mmi_deps="mips"
808fa33c
 
 altivec_deps="ppc"
 ppc4xx_deps="ppc"
 
 vis_deps="sparc"
 
7f8c3d1f
 x86_64_suggest="cmov fast_cmov"
808fa33c
 amd3dnow_deps="mmx"
 amd3dnowext_deps="amd3dnow"
9eeed841
 mmx_deps="x86"
75aa95a6
 mmx2_deps="mmx"
 sse_deps="mmx"
 ssse3_deps="sse"
cdeba2de
 avx_deps="ssse3"
9eeed841
 
59782b82
 aligned_stack_if_any="ppc x86"
e939cedd
 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
669b5583
 fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
e939cedd
 fast_unaligned_if_any="armv6 ppc x86"
669b5583
 
89e053f8
 need_memalign="altivec neon sse"
6fec122a
 inline_asm_deps="!tms470"
89e053f8
 
b462d132
 symver_if_any="symver_asm_label symver_gnu_asm"
 
26fbcc85
 # subsystems
dc609252
 dct_select="rdft"
26fbcc85
 mdct_select="fft"
 rdft_select="fft"
c4f5c2d6
 mpegaudiodsp_select="dct"
26fbcc85
 
5666fd73
 # decoders / encoders / hardware accelerators
cfc2a0cf
 aac_decoder_select="mdct sinewin"
4538729a
 aac_encoder_select="mdct sinewin"
136e19e1
 aac_latm_decoder_select="aac_decoder aac_latm_parser"
6d9f52b2
 ac3_decoder_select="mdct ac3dsp ac3_parser"
a5444fee
 ac3_encoder_select="mdct ac3dsp"
3d269059
 ac3_fixed_encoder_select="mdct ac3dsp"
f4d608e3
 alac_encoder_select="lpc"
b781cc12
 amrnb_decoder_select="lsp"
2b2a597e
 amrwb_decoder_select="lsp"
4538729a
 atrac1_decoder_select="mdct sinewin"
26fbcc85
 atrac3_decoder_select="mdct"
a33657ce
 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
 binkaudio_rdft_decoder_select="mdct rdft sinewin"
4f034993
 cavs_decoder_select="golomb"
4538729a
 cook_decoder_select="mdct sinewin"
2eef7c62
 cscd_decoder_suggest="zlib"
26fbcc85
 dca_decoder_select="mdct"
e8ed9b7a
 dnxhd_encoder_select="aandct"
2eef7c62
 dxa_decoder_select="zlib"
baf91bb9
 eac3_decoder_select="ac3_decoder"
aa47c35d
 eac3_encoder_select="mdct ac3dsp"
84c04e25
 eamad_decoder_select="aandct"
e8ed9b7a
 eatgq_decoder_select="aandct"
d52b39c7
 eatqi_decoder_select="aandct"
4f034993
 ffv1_decoder_select="golomb"
 flac_decoder_select="golomb"
f4d608e3
 flac_encoder_select="golomb lpc"
2eef7c62
 flashsv_decoder_select="zlib"
 flashsv_encoder_select="zlib"
3f6dc4a1
 flashsv2_encoder_select="zlib"
4414137e
 flv_decoder_select="h263_decoder"
4d4b4bd1
 flv_encoder_select="h263_encoder"
3447f12d
 fraps_decoder_select="huffman"
e8ed9b7a
 h261_encoder_select="aandct"
7f647ae0
 h263_decoder_select="h263_parser"
e8ed9b7a
 h263_encoder_select="aandct"
95a61cfc
 h263_vaapi_hwaccel_select="vaapi h263_decoder"
4414137e
 h263i_decoder_select="h263_decoder"
fe629c2d
 h263p_encoder_select="h263_encoder"
4a384de5
 h264_decoder_select="golomb h264dsp h264pred"
f6421e0b
 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
92c6a099
 h264_dxva2_hwaccel_deps="dxva2api_h"
 h264_dxva2_hwaccel_select="dxva2 h264_decoder"
17492d5e
 h264_vaapi_hwaccel_select="vaapi"
95a61cfc
 h264_vdpau_decoder_select="vdpau h264_decoder"
56c8227d
 imc_decoder_select="fft mdct sinewin"
4f034993
 jpegls_decoder_select="golomb"
 jpegls_encoder_select="golomb"
e8ed9b7a
 ljpeg_encoder_select="aandct"
4f034993
 loco_decoder_select="golomb"
e8ed9b7a
 mjpeg_encoder_select="aandct"
2cca233b
 mlp_decoder_select="mlp_parser"
c4f5c2d6
 mp1_decoder_select="mpegaudiodsp"
 mp2_decoder_select="mpegaudiodsp"
 mp3adu_decoder_select="mpegaudiodsp"
 mp3_decoder_select="mpegaudiodsp"
 mp3on4_decoder_select="mpegaudiodsp"
 mp1float_decoder_select="mpegaudiodsp"
 mp2float_decoder_select="mpegaudiodsp"
 mp3adufloat_decoder_select="mpegaudiodsp"
 mp3float_decoder_select="mpegaudiodsp"
 mp3on4float_decoder_select="mpegaudiodsp"
e8ed9b7a
 mpeg1video_encoder_select="aandct"
 mpeg2video_encoder_select="aandct"
4414137e
 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
c37de5e1
 mpeg4_encoder_select="h263_encoder"
95a61cfc
 mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
 mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
ecf94986
 mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
b33fa8a1
 mpeg2_crystalhd_decoder_select="crystalhd"
164aab02
 mpeg2_dxva2_hwaccel_deps="dxva2api_h"
 mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
ecf94986
 mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder"
95a61cfc
 mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
b33fa8a1
 mpeg4_crystalhd_decoder_select="crystalhd"
95a61cfc
 mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
70e0c871
 mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
8f6f050a
 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
4d8eecf4
 mpeg_xvmc_decoder_select="mpegvideo_decoder"
b33fa8a1
 msmpeg4_crystalhd_decoder_select="crystalhd"
4414137e
 msmpeg4v1_decoder_select="h263_decoder"
4e169d89
 msmpeg4v1_encoder_select="h263_encoder"
4414137e
 msmpeg4v2_decoder_select="h263_decoder"
4e169d89
 msmpeg4v2_encoder_select="h263_encoder"
4414137e
 msmpeg4v3_decoder_select="h263_decoder"
4e169d89
 msmpeg4v3_encoder_select="h263_encoder"
4538729a
 nellymoser_decoder_select="mdct sinewin"
 nellymoser_encoder_select="mdct sinewin"
2eef7c62
 png_decoder_select="zlib"
 png_encoder_select="zlib"
b781cc12
 qcelp_decoder_select="lsp"
c4f5c2d6
 qdm2_decoder_select="mdct rdft mpegaudiodsp"
31ed3f1f
 ra_144_encoder_select="lpc"
a8beb22f
 rv10_decoder_select="h263_decoder"
b2bf38b4
 rv10_encoder_select="h263_encoder"
a8beb22f
 rv20_decoder_select="h263_decoder"
b2bf38b4
 rv20_encoder_select="h263_encoder"
4a384de5
 rv30_decoder_select="golomb h264pred"
 rv40_decoder_select="golomb h264pred"
4f034993
 shorten_decoder_select="golomb"
b781cc12
 sipr_decoder_select="lsp"
05aec7bb
 snow_decoder_select="dwt"
 snow_encoder_select="aandct dwt"
4f034993
 sonic_decoder_select="golomb"
 sonic_encoder_select="golomb"
 sonic_ls_encoder_select="golomb"
19ecfb8a
 svq1_encoder_select="aandct"
4a384de5
 svq3_decoder_select="golomb h264dsp h264pred"
bee2eac5
 svq3_decoder_suggest="zlib"
4eef77c1
 theora_decoder_select="vp3_decoder"
2eef7c62
 tiff_decoder_suggest="zlib"
 tiff_encoder_suggest="zlib"
aec09a00
 truehd_decoder_select="mlp_decoder"
2eef7c62
 tscc_decoder_select="zlib"
4538729a
 twinvq_decoder_select="mdct lsp sinewin"
f95bfab0
 vc1_decoder_select="h263_decoder"
b33fa8a1
 vc1_crystalhd_decoder_select="crystalhd"
9104cd51
 vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
f0f86627
 vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
95a61cfc
 vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
 vc1_vdpau_decoder_select="vdpau vc1_decoder"
26fbcc85
 vorbis_decoder_select="mdct"
 vorbis_encoder_select="mdct"
3447f12d
 vp6_decoder_select="huffman"
e82dc4c9
 vp6a_decoder_select="vp6_decoder"
 vp6f_decoder_select="vp6_decoder"
4a384de5
 vp8_decoder_select="h264pred"
4538729a
 wmapro_decoder_select="mdct sinewin"
 wmav1_decoder_select="mdct sinewin"
 wmav1_encoder_select="mdct sinewin"
 wmav2_decoder_select="mdct sinewin"
 wmav2_encoder_select="mdct sinewin"
 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
f95bfab0
 wmv1_decoder_select="h263_decoder"
665507aa
 wmv1_encoder_select="h263_encoder"
f95bfab0
 wmv2_decoder_select="h263_decoder"
1746e2a9
 wmv2_encoder_select="h263_encoder"
015f8ee0
 wmv3_decoder_select="vc1_decoder"
b33fa8a1
 wmv3_crystalhd_decoder_select="crystalhd"
f0f86627
 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
015f8ee0
 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
2eef7c62
 zlib_decoder_select="zlib"
 zlib_encoder_select="zlib"
 zmbv_decoder_select="zlib"
 zmbv_encoder_select="zlib"
30fd06be
 
b33fa8a1
 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
0afab17e
 vaapi_deps="va_va_h"
c89c96e9
 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
 
28b80940
 # parsers
4a384de5
 h264_parser_select="golomb h264dsp h264pred"
28b80940
 
912f3148
 # external libraries
be1ae17e
 libaacplus_encoder_deps="libaacplus"
89451dd6
 libcelt_decoder_deps="libcelt"
1b71f045
 libdirac_decoder_deps="libdirac !libschroedinger"
690bfceb
 libdirac_encoder_deps="libdirac"
c9171a83
 libfaac_encoder_deps="libfaac"
299c77d5
 libgsm_decoder_deps="libgsm"
 libgsm_encoder_deps="libgsm"
8ffed8d8
 libgsm_ms_decoder_deps="libgsm"
 libgsm_ms_encoder_deps="libgsm"
1cc60c47
 libmp3lame_encoder_deps="libmp3lame"
0b175caa
 libopencore_amrnb_decoder_deps="libopencore_amrnb"
 libopencore_amrnb_encoder_deps="libopencore_amrnb"
 libopencore_amrwb_decoder_deps="libopencore_amrwb"
9a77d59a
 libopenjpeg_decoder_deps="libopenjpeg"
f7cd9eed
 libschroedinger_decoder_deps="libschroedinger"
 libschroedinger_encoder_deps="libschroedinger"
ae14f311
 libspeex_decoder_deps="libspeex"
c8736de3
 libspeex_encoder_deps="libspeex"
150d2772
 libtheora_encoder_deps="libtheora"
d89e738a
 libvo_aacenc_encoder_deps="libvo_aacenc"
f502ff3f
 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
b0caf888
 libvorbis_encoder_deps="libvorbis"
8299a7f8
 libvpx_decoder_deps="libvpx"
ee0e9146
 libvpx_encoder_deps="libvpx"
1cc60c47
 libx264_encoder_deps="libx264"
de295976
 libxavs_encoder_deps="libxavs"
1cc60c47
 libxvid_encoder_deps="libxvid"
30fd06be
 
912f3148
 # demuxers / muxers
a091006d
 ac3_demuxer_select="ac3_parser"
647c2356
 asf_stream_muxer_select="asf_muxer"
4e622dea
 avisynth_demuxer_deps="avisynth"
a091006d
 dirac_demuxer_select="dirac_parser"
5b423887
 eac3_demuxer_select="ac3_parser"
a091006d
 flac_demuxer_select="flac_parser"
647c2356
 ipod_muxer_select="mov_muxer"
4e622dea
 libnut_demuxer_deps="libnut"
 libnut_muxer_deps="libnut"
647c2356
 matroska_audio_muxer_select="matroska_muxer"
4e622dea
 matroska_demuxer_suggest="zlib bzlib"
 mov_demuxer_suggest="zlib"
a091006d
 mp3_demuxer_select="mpegaudio_parser"
647c2356
 mp4_muxer_select="mov_muxer"
 mpegtsraw_demuxer_select="mpegts_demuxer"
 mxf_d10_muxer_select="mxf_muxer"
24ca518b
 ogg_demuxer_select="golomb"
647c2356
 psp_muxer_select="mov_muxer"
44594cc7
 rtp_demuxer_select="sdp_demuxer"
44b70ce5
 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
 rtsp_demuxer_select="http_protocol rtpdec"
 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
01c8d258
 sap_demuxer_select="sdp_demuxer"
2aab70c4
 sap_muxer_select="rtp_muxer rtp_protocol"
44b70ce5
 sdp_demuxer_select="rtpdec"
f1e94694
 spdif_muxer_select="aac_parser"
647c2356
 tg2_muxer_select="mov_muxer"
 tgp_muxer_select="mov_muxer"
6bdaa5f4
 w64_demuxer_deps="wav_demuxer"
4e622dea
 
 # indevs / outdevs
38e54a75
 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
 alsa_outdev_deps="alsa_asoundlib_h"
 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
95eb2e3a
 dshow_indev_deps="IBaseFilter"
 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
38e54a75
 dv1394_indev_deps="dv1394 dv_demuxer"
1a204f07
 fbdev_indev_deps="linux_fb_h"
6dafa706
 jack_indev_deps="jack_jack_h sem_timedwait"
38e54a75
 libdc1394_indev_deps="libdc1394"
 oss_indev_deps_any="soundcard_h sys_soundcard_h"
 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
b2a6f25c
 sdl_outdev_deps="sdl"
15d59d2c
 sndio_indev_deps="sndio_h"
 sndio_outdev_deps="sndio_h"
38e54a75
 v4l_indev_deps="linux_videodev_h"
 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
ec1ee802
 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
a1b3c5a3
 vfwcap_indev_extralibs="-lavicap32"
38e54a75
 x11_grab_device_indev_deps="x11grab XShmCreateImage"
781c1aa6
 x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
30fd06be
 
912f3148
 # protocols
3fff6382
 gopher_protocol_deps="network"
c08fb000
 http_protocol_deps="network"
279a0c97
 http_protocol_select="tcp_protocol"
c60a2d70
 mmsh_protocol_select="http_protocol"
b4cf3f6c
 mmst_protocol_deps="network"
deeb7012
 rtmp_protocol_select="tcp_protocol"
 rtp_protocol_select="udp_protocol"
c08fb000
 tcp_protocol_deps="network"
124a9edb
 udp_protocol_deps="network"
c08fb000
 
6ebf0bfc
 # filters
13fabd7a
 blackframe_filter_deps="gpl"
68b79bfc
 cropdetect_filter_deps="gpl"
bd8e7503
 drawtext_filter_deps="libfreetype"
2e5ff4d0
 frei0r_filter_deps="frei0r dlopen strtok_r"
a42bb9d6
 frei0r_src_filter_deps="frei0r dlopen strtok_r"
a4dc7aa5
 hqdn3d_filter_deps="gpl"
5d2ce3a7
 movie_filter_deps="avcodec avformat"
 mp_filter_deps="gpl avcodec"
15f03725
 negate_filter_deps="lut_filter"
cf69ad35
 ocv_filter_deps="libopencv"
10a7831a
 scale_filter_deps="swscale"
acbac567
 yadif_filter_deps="gpl"
6ebf0bfc
 
5a0f7131
 # libraries
 avdevice_deps="avcodec avformat"
 avformat_deps="avcodec"
ced9556b
 postproc_deps="gpl"
f7679c54
 
912f3148
 # programs
5a0f7131
 ffmpeg_deps="avcodec avformat swscale"
1bf80a9a
 ffmpeg_select="buffer_filter buffersink_filter"
5a0f7131
 ffplay_deps="avcodec avformat swscale sdl"
43689902
 ffplay_select="rdft"
44b2784f
 ffprobe_deps="avcodec avformat"
1ff49c23
 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
4ec45764
 ffserver_extralibs='$ldl'
a2830dca
 
c73f65d9
 doc_deps="texi2html"
912f3148
 
57442411
 # tests
 
 test_deps(){
     suf1=$1
     suf2=$2
     shift 2
     for v; do
         dep=${v%=*}
         tests=${v#*=}
         for name in ${tests}; do
9bb7a128
             append ${name}_test_deps ${dep}$suf1 ${dep}$suf2
57442411
         done
     done
 }
 
9c261f83
 set_ne_test_deps(){
     eval ${1}_be_test_deps="bigendian"
     eval ${1}_le_test_deps="!bigendian"
 }
 
9bb7a128
 mxf_d10_test_deps="avfilter"
 seek_lavf_mxf_d10_test_deps="mxf_d10_test"
 
57442411
 test_deps _encoder _decoder                                             \
     adpcm_g726=g726                                                     \
     adpcm_ima_qt                                                        \
     adpcm_ima_wav                                                       \
     adpcm_ms                                                            \
     adpcm_swf                                                           \
     adpcm_yamaha=adpcm_yam                                              \
     alac                                                                \
     asv1                                                                \
     asv2                                                                \
     bmp                                                                 \
a7638957
     dnxhd="dnxhd_1080i dnxhd_720p dnxhd_720p_rd"                        \
57442411
     dvvideo="dv dv50"                                                   \
     ffv1                                                                \
     flac                                                                \
     flashsv                                                             \
     flv                                                                 \
     gif                                                                 \
     h261                                                                \
     h263="h263 h263p"                                                   \
     huffyuv                                                             \
     jpegls                                                              \
     mjpeg="jpg mjpeg ljpeg"                                             \
     mp2                                                                 \
     mpeg1video="mpeg mpeg1b"                                            \
     mpeg2video="mpeg2 mpeg2thread"                                      \
     mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc"                 \
c0b16605
     msmpeg4v3=msmpeg4                                                   \
57442411
     msmpeg4v2                                                           \
     pbm=pbmpipe                                                         \
     pcx                                                                 \
     pgm="pgm pgmpipe"                                                   \
bb711414
     png                                                                 \
57442411
     ppm="ppm ppmpipe"                                                   \
     rawvideo="rgb yuv"                                                  \
     roq                                                                 \
     rv10                                                                \
     rv20                                                                \
     sgi                                                                 \
     snow="snow snowll"                                                  \
     svq1                                                                \
     targa=tga                                                           \
     tiff                                                                \
     wmav1                                                               \
     wmav2                                                               \
     wmv1                                                                \
     wmv2                                                                \
 
 test_deps _muxer _demuxer                                               \
     aiff                                                                \
     pcm_alaw=alaw                                                       \
     asf                                                                 \
     au                                                                  \
     avi                                                                 \
     dv=dv_fmt                                                           \
     ffm                                                                 \
     flv=flv_fmt                                                         \
     gxf                                                                 \
     matroska=mkv                                                        \
     mmf                                                                 \
     mov                                                                 \
     pcm_mulaw=mulaw                                                     \
783f45de
     mxf="mxf mxf_d10"                                                   \
57442411
     nut                                                                 \
     ogg                                                                 \
     rawvideo=pixfmt                                                     \
     rm                                                                  \
     swf                                                                 \
     mpegts=ts                                                           \
     voc                                                                 \
     wav                                                                 \
     yuv4mpegpipe=yuv4mpeg                                               \
 
6fd96d1a
 ac3_fixed_test_deps="ac3_fixed_encoder ac3_decoder rm_muxer rm_demuxer"
57442411
 mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
9c261f83
 
 set_ne_test_deps pixdesc
b5670209
 set_ne_test_deps pixfmts_copy
213a4cbb
 set_ne_test_deps pixfmts_crop
a1e171df
 set_ne_test_deps pixfmts_hflip
213a4cbb
 set_ne_test_deps pixfmts_null
 set_ne_test_deps pixfmts_pad
 set_ne_test_deps pixfmts_scale
 set_ne_test_deps pixfmts_vflip
57442411
 
de6d9b64
 # default parameters
8a608357
 
19bd477d
 logfile="config.log"
8a608357
 
 # installation paths
c9d19248
 prefix_default="/usr/local"
 bindir_default='${prefix}/bin'
14a8acf1
 datadir_default='${prefix}/share/ffmpeg'
c9d19248
 incdir_default='${prefix}/include'
 libdir_default='${prefix}/lib'
 mandir_default='${prefix}/share/man'
 shlibdir_default="$libdir_default"
8a608357
 
 # toolchain
121d78d0
 ar_default="ar"
13c7df3d
 cc_default="gcc"
a3d7c197
 cc_version=\"unknown\"
9da6609f
 host_cc_default="gcc"
7a88617c
 install="install"
11e6d03a
 ln_s="ln -sf"
89641463
 nm_default="nm"
11e6d03a
 objformat="elf"
5d117bd4
 pkg_config_default=pkg-config
be7109c1
 ranlib="ranlib"
b1ca9642
 strip_default="strip"
11e6d03a
 yasmexe="yasm"
301ab19d
 nogas=":"
8a608357
 
8182dc34
 nm_opts='-g'
 
8a608357
 # machine
8d4c00ed
 arch_default=$(uname -m)
38d0a8aa
 cpu="generic"
8a608357
 
 # OS
8d4c00ed
 target_os_default=$(tolower $(uname -s))
 host_os=$target_os_default
8a608357
 
 # configurable options
5a0f7131
 enable avcodec
 enable avdevice
cccc039f
 enable avfilter
5a0f7131
 enable avformat
dc4f5a1c
 enable avutil
c8a4ae00
 enable asm
497237c7
 enable debug
c73f65d9
 enable doc
aa033b1e
 enable fastdiv
497237c7
 enable ffmpeg
 enable ffplay
336ce917
 enable ffprobe
497237c7
 enable ffserver
 enable network
8400d6b8
 enable optimizations
ced9556b
 enable postproc
497237c7
 enable protocols
530dc538
 enable static
b1ca9642
 enable stripping
5a0f7131
 enable swscale
a9ddb5b1
 enable swscale_alpha
8a608357
 
 # build settings
9987769a
 SHFLAGS='-shared -Wl,-soname,$$(@F)'
c536cb09
 FFSERVERLDFLAGS=-Wl,-E
f3ec2d46
 LIBPREF="lib"
 LIBSUF=".a"
c5f14466
 FULLNAME='$(NAME)$(BUILDSUF)'
 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
f3ec2d46
 SLIBPREF="lib"
 SLIBSUF=".so"
c5f14466
 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
b29bddab
 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
6cfac0e9
 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
ef0bc4c9
 
7e6c86e6
 CC_O='-o $@'
 
0a6db2a2
 host_cflags='-D_ISOC99_SOURCE -O3 -g'
9da6609f
 host_libs='-lm'
 
9b861379
 target_path='$(CURDIR)'
a7ada2ba
 
a158446b
 # since the object filename is not given with the -MM flag, the compiler
 # is only able to print the basename, and we must add the path ourselves
c1c3933a
 DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
d8059267
 DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
315c741d
 
c597172e
 # find source path
24524f36
 if test -f configure; then
5e622c40
     source_path="$(pwd)"
497237c7
     disable source_path_used
c597172e
 else
8477f2de
     source_path=$(cd $(dirname "$0"); pwd)
     enable source_path_used
c597172e
     echo "$source_path" | grep -q '[[:blank:]]' &&
7483e694
         die "Out of tree builds are impossible with whitespace in source path."
337cee68
     test -e "$source_path/config.h" &&
         die "Out of tree builds are impossible with config.h in source dir."
c597172e
 fi
 
13cbe2c0
 for v in "$@"; do
b04251c5
     r=${v#*=}
     l=${v%"$r"}
     r=$(sh_quote "$r")
e528cdac
     FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
13cbe2c0
 done
c597172e
 
73ef8980
 find_things(){
     thing=$1
     pattern=$2
     file=$source_path/$3
932ccf39
     sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
73ef8980
 }
 
 ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
 DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
5666fd73
 HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
73ef8980
 PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
 BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
 MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
 DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
38e54a75
 OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
 INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
73ef8980
 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
81124ba0
 FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
c597172e
 
57442411
 find_tests(){
b9d5f1b7
     map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]')
57442411
 }
 
 ACODEC_TESTS=$(find_tests acodec)
 VCODEC_TESTS=$(find_tests vsynth1)
 LAVF_TESTS=$(find_tests lavf)
48c28162
 LAVFI_TESTS=$(find_tests lavfi)
b9d5f1b7
 SEEK_TESTS=$(find_tests seek seek_)
57442411
 
40fe5019
 pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST))
 
8469ae22
 for n in $COMPONENT_LIST; do
     v=$(toupper ${n%s})_LIST
     eval enable \$$v
     eval ${n}_if_any="\$$v"
 done
 
b9d5f1b7
 enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS
c597172e
 
 die_unknown(){
     echo "Unknown option \"$1\"."
     echo "See $0 --help for available options."
     exit 1
 }
 
794f8e97
 show_list() {
bf0c4afa
     suffix=_$1
     shift
2b444ea7
     echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
794f8e97
     exit 0
 }
 
c597172e
 for opt do
7483e694
     optval="${opt#*=}"
     case "$opt" in
0f010b2f
     --extra-ldflags=*) add_ldflags $optval
7483e694
     ;;
0f010b2f
     --extra-libs=*) add_extralibs $optval
7483e694
     ;;
8fb1cb58
     --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
9aa8ed9d
     ;;
40bcf4c7
     --enable-debug=*) debuglevel="$optval"
     ;;
36e2dea0
     --disable-everything)
1b15dc3c
     map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
36e2dea0
     ;;
7483e694
     --enable-*=*|--disable-*=*)
8b93ddc3
     eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
be8f2501
     is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
     eval list=\$$(toupper $thing)_LIST
8b93ddc3
     name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
     $action $(filter "$name" $list)
7483e694
     ;;
     --enable-?*|--disable-?*)
5e622c40
     eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
e3773a55
     if is_in $option $COMPONENT_LIST; then
fed5d54b
         test $action = disable && action=unset
e3773a55
         eval $action \$$(toupper ${option%s})_LIST
     elif is_in $option $CMDLINE_SELECT; then
         $action $option
     else
         die_unknown $opt
     fi
7483e694
     ;;
     --list-*)
         NAME="${opt#--list-}"
         is_in $NAME $COMPONENT_LIST || die_unknown $opt
         NAME=${NAME%s}
         eval show_list $NAME \$$(toupper $NAME)_LIST
     ;;
     --help|-h) show_help
     ;;
     *)
884a36a7
     optname="${opt%%=*}"
26759c44
     optname="${optname#--}"
     optname=$(echo "$optname" | sed 's/-/_/g')
89f2932b
     if is_in $optname $CMDLINE_SET; then
         eval $optname='$optval'
     elif is_in $optname $CMDLINE_APPEND; then
         append $optname "$optval"
     else
          die_unknown $opt
     fi
7483e694
     ;;
     esac
c597172e
 done
 
bcea99bb
 disabled logging && logfile=/dev/null
 
e528cdac
 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
bcea99bb
 set >> $logfile
 
9da6609f
 test -n "$cross_prefix" && enable cross_compile
 
8d4c00ed
 if enabled cross_compile; then
     test -n "$arch" && test -n "$target_os" ||
         die "Must specify target arch and OS when cross-compiling"
 fi
 
 set_default arch target_os
 
121d78d0
 ar_default="${cross_prefix}${ar_default}"
11e6d03a
 cc_default="${cross_prefix}${cc_default}"
20e0ed95
 nm_default="${cross_prefix}${nm_default}"
5d117bd4
 pkg_config_default="${cross_prefix}${pkg_config_default}"
adb2b908
 ranlib="${cross_prefix}${ranlib}"
b1ca9642
 strip_default="${cross_prefix}${strip_default}"
adb2b908
 
c5200f17
 sysinclude_default="${sysroot}/usr/include"
 
b1ca9642
 set_default cc nm pkg_config strip sysinclude
9da6609f
 enabled cross_compile || host_cc_default=$cc
 set_default host_cc
13c7df3d
 
762f95e4
 if ! $pkg_config --version >/dev/null 2>&1; then
     warn "$pkg_config not found, library detection may fail."
     pkg_config=false
 fi
 
82bb3329
 exesuf() {
     case $1 in
1c69c79f
         mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
82bb3329
     esac
 }
 
 EXESUF=$(exesuf $target_os)
 HOSTEXESUF=$(exesuf $host_os)
c0f5b7f1
 
e4e69e0b
 # set temporary file name
a49d42c2
 : ${TMPDIR:=$TEMPDIR}
c51fafa1
 : ${TMPDIR:=$TMP}
a49d42c2
 : ${TMPDIR:=/tmp}
e4e69e0b
 
727a20cb
 if ! check_cmd mktemp -u XXXXXX; then
54460a83
     # simple replacement for missing mktemp
     # NOT SAFE FOR GENERAL USE
     mktemp(){
ef44b5bf
         echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
54460a83
     }
 fi
 
 tmpfile(){
     tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
         (set -C; exec > $tmp) 2>/dev/null ||
f7ba16a7
         die "Unable to create temporary file in $TMPDIR."
54460a83
     append TMPFILES $tmp
     eval $1=$tmp
 }
 
 trap 'rm -f -- $TMPFILES' EXIT
 
 tmpfile TMPC  .c
 tmpfile TMPE  $EXESUF
 tmpfile TMPH  .h
 tmpfile TMPO  .o
 tmpfile TMPS  .S
a482e61b
 tmpfile TMPV  .ver
54460a83
 tmpfile TMPSH .sh
55127e7b
 tmpfile TMPASM .asm
54460a83
 
 unset -f mktemp
e4e69e0b
 
fb3c4ffc
 chmod +x $TMPE
 
993f2d0f
 # make sure we can execute files in $TMPDIR
 cat > $TMPSH 2>> $logfile <<EOF
 #! /bin/sh
 EOF
 chmod +x $TMPSH >> $logfile 2>&1
 if ! $TMPSH >> $logfile 2>&1; then
     cat <<EOF
 Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
 variable to another directory and make sure that it is not mounted noexec.
 EOF
     die "Sanity test failed."
 fi
 
19b4c628
 filter_cflags=echo
 filter_cppflags=echo
 filter_asflags=echo
 
613a4e3f
 if   $cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
     cc_type=llvm_gcc
     cc_version=__VERSION__
     gcc_extra_ver=$(expr "$($cc --version | head -n1)" : '.*\((.*)\)')
     cc_ident="llvm-gcc $($cc -dumpversion) $gcc_extra_ver"
     CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     speed_cflags='-O3'
     size_cflags='-Os'
 elif $cc -v 2>&1 | grep -qi ^gcc; then
629687f6
     cc_type=gcc
a3d7c197
     cc_version=__VERSION__
48e05567
     gcc_version=$($cc --version | head -n1)
     gcc_basever=$($cc -dumpversion)
e0099fda
     gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
48e05567
     gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
     cc_ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
aef6bd1b
     if ! $cc -dumpversion | grep -q '^2\.'; then
         CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
         AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     fi
14ca9cd0
     speed_cflags='-O3'
     size_cflags='-Os'
629687f6
 elif $cc --version 2>/dev/null | grep -q Intel; then
     cc_type=icc
6e3fa35d
     cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
bb5cecdc
     cc_ident=$($cc --version | head -n1)
bdefad73
     icc_version=$($cc -dumpversion)
07dec06e
     CC_DEPFLAGS='-MMD'
     AS_DEPFLAGS='-MMD'
14ca9cd0
     speed_cflags='-O3'
     size_cflags='-Os'
b05394a0
     noopt_cflags='-O1'
629687f6
 elif $cc -v 2>&1 | grep -q xlc; then
     cc_type=xlc
6e3fa35d
     cc_version="AV_STRINGIFY(__IBMC__)"
bb5cecdc
     cc_ident=$($cc -qversion 2>/dev/null | head -n1)
14ca9cd0
     speed_cflags='-O5'
     size_cflags='-O5 -qcompact'
df442a8d
 elif $cc -V 2>/dev/null | grep -q Compaq; then
     cc_type=ccc
6e3fa35d
     cc_version="AV_STRINGIFY(__DECC_VER)"
bb5cecdc
     cc_ident=$($cc -V | head -n1 | cut -d' ' -f1-3)
d8059267
     DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
03754fcd
     debuglevel=3
df442a8d
     add_ldflags -Wl,-z,now # calls to libots crash without this
14ca9cd0
     speed_cflags='-fast'
     size_cflags='-O1'
6a0d5493
 elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
03e37762
     test -d "$sysroot" || die "No valid sysroot specified."
     cc_type=armcc
6e3fa35d
     cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
bb5cecdc
     cc_ident=$($cc --vsn | head -n1)
03e37762
     armcc_conf="$PWD/armcc.conf"
     $cc --arm_linux_configure                 \
         --arm_linux_config_file="$armcc_conf" \
         --configure_sysroot="$sysroot"        \
         --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
         die "Error creating armcc configuration file."
bcafde61
     $cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
03e37762
     cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
75800dce
     as_default="${cross_prefix}gcc"
07dec06e
     CC_DEPFLAGS='-MMD'
     AS_DEPFLAGS='-MMD'
14ca9cd0
     speed_cflags='-O3'
     size_cflags='-Os'
744c1664
     filter_asflags="filter_out -W${armcc_opt}*"
6fec122a
 elif $cc -version 2>/dev/null | grep -q TMS470; then
     cc_type=tms470
6e3fa35d
     cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
bb5cecdc
     cc_ident=$($cc -version | head -n1 | tr -s ' ')
6fec122a
     cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
     CC_O='-fr=$(@D)'
     as_default="${cross_prefix}gcc"
     ld_default="${cross_prefix}gcc"
     TMPO=$(basename $TMPC .c).o
     append TMPFILES $TMPO
     add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
07dec06e
     CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
     AS_DEPFLAGS='-MMD'
14ca9cd0
     speed_cflags='-O3 -mf=5'
     size_cflags='-O3 -mf=2'
6fec122a
     filter_cflags=tms470_flags
     tms470_flags(){
         for flag; do
             case $flag in
                 -march=*|-mcpu=*)
                     case "${flag#*=}" in
                         armv7-a|cortex-a*)      echo -mv=7a8 ;;
                         armv7-r|cortex-r*)      echo -mv=7r4 ;;
                         armv7-m|cortex-m*)      echo -mv=7m3 ;;
                         armv6*|arm11*)          echo -mv=6   ;;
                         armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
                                                 echo -mv=5e  ;;
                         armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
                     esac
                     ;;
                 -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
                 -mfpu=vfp)      echo --float_support=vfpv2        ;;
5fcb865b
                 -mfpu=vfpv3)    echo --float_support=vfpv3        ;;
a2709020
                 -msoft-float)   echo --float_support=vfplib       ;;
14ca9cd0
                 -O[0-3]|-mf=*)  echo $flag                        ;;
6fec122a
                 -g)             echo -g -mn                       ;;
587d24ff
                 -pds=*)         echo $flag                        ;;
6fec122a
             esac
         done
     }
06da6943
 elif $cc -v 2>&1 | grep -q clang; then
     cc_type=clang
b67a8f49
     $cc -dM -E $TMPC | grep -q __clang_version__ &&
         cc_version=__clang_version__ || cc_version=__VERSION__
bb5cecdc
     cc_ident=$($cc --version | head -n1)
06da6943
     CC_DEPFLAGS='-MMD'
     AS_DEPFLAGS='-MMD'
14ca9cd0
     speed_cflags='-O3'
     size_cflags='-Os'
2a472e9c
 elif $cc -V 2>&1 | grep -q Sun; then
     cc_type=suncc
     cc_version="AV_STRINGIFY(__SUNPRO_C)"
448f5b83
     cc_ident=$($cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
faa374b7
     DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2a472e9c
     DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
14ca9cd0
     speed_cflags='-O5'
     size_cflags='-O5 -xspace'
03279bbe
     filter_cflags=suncc_flags
     suncc_flags(){
         for flag; do
             case $flag in
                 -march=*|-mcpu=*)
                     case "${flag#*=}" in
                         native)                   echo -xtarget=native       ;;
87ddc38b
                         v9|niagara)               echo -xarch=sparc          ;;
03279bbe
                         ultrasparc)               echo -xarch=sparcvis       ;;
87ddc38b
                         ultrasparc3|niagara2)     echo -xarch=sparcvis2      ;;
03279bbe
                         i586|pentium)             echo -xchip=pentium        ;;
                         i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
                         pentium3*|c3-2)           echo -xtarget=pentium3     ;;
                         pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
                         pentium4*)          echo -xtarget=pentium4           ;;
                         prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
                         *-sse3)             echo -xarch=sse3                 ;;
                         core2)              echo -xarch=ssse3 -xchip=core2   ;;
                         amdfam10|barcelona)       echo -xarch=sse4_1         ;;
                         athlon-4|athlon-[mx]p)    echo -xarch=ssea           ;;
                         k8|opteron|athlon64|athlon-fx)
                                                   echo -xarch=sse2a          ;;
                         athlon*)                  echo -xarch=pentium_proa   ;;
                     esac
                     ;;
                 -std=c99)             echo -xc99              ;;
                 -fomit-frame-pointer) echo -xregs=frameptr    ;;
                 -fPIC)                echo -KPIC -xcode=pic32 ;;
                 -W*,*)                echo $flag              ;;
                 -f*-*|-W*)                                    ;;
                 *)                    echo $flag              ;;
             esac
         done
     }
180ec37d
 elif $cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
349d78fe
     cc_type=pathscale
     cc_version=__PATHSCALE__
     cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :)
     CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     speed_cflags='-O2'
     size_cflags='-Os'
7b2d2190
     filter_cflags='filter_out -Wdisabled-optimization'
6de163e9
 elif $cc -v 2>&1 | grep -q Open64; then
     cc_type=open64
     cc_version=__OPEN64__
     cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :)
     CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
     speed_cflags='-O2'
     size_cflags='-Os'
7b2d2190
     filter_cflags='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
629687f6
 fi
 
851ffa80
 test -n "$cc_type" && enable $cc_type ||
     warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
629687f6
 
75bafbac
 : ${as_default:=$cc}
50567afa
 : ${dep_cc_default:=$cc}
684b28e0
 : ${ld_default:=$cc}
121d78d0
 set_default ar as dep_cc ld
75800dce
 
07dec06e
 test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
 test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
 
7f32f40c
 add_cflags $extra_cflags
2f2e6c7c
 add_asflags $extra_cflags
7f32f40c
 
154d432c
 if test -n "$sysroot"; then
     case "$cc_type" in
42ccd2fc
         gcc|llvm_gcc|clang)
467256f2
             add_cppflags --sysroot="$sysroot"
154d432c
             add_ldflags --sysroot="$sysroot"
         ;;
6fec122a
         tms470)
             add_cppflags -I"$sysinclude"
             add_ldflags  --sysroot="$sysroot"
         ;;
154d432c
     esac
 fi
 
d22c13a8
 if test "$cpu" = host; then
     enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
 
     case "$cc_type" in
613a4e3f
         gcc|llvm_gcc)
d22c13a8
             check_native(){
                 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
27ce1be8
                 sed -n "/$1=/{
                             s/.*$1=\\([^ ]*\\).*/\\1/
                             p
                             q
                         }" $TMPE
d22c13a8
             }
             cpu=$(check_native -march || check_native -mcpu)
         ;;
     esac
 
     test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
 fi
 
e939cedd
 # Deal with common $arch aliases
 case "$arch" in
     arm*)
         arch="arm"
     ;;
     mips|mipsel|IP*)
         arch="mips"
     ;;
47b1860e
     mips64*)
e939cedd
         arch="mips"
         subarch="mips64"
     ;;
     parisc|hppa)
         arch="parisc"
     ;;
     parisc64|hppa64)
         arch="parisc"
         subarch="parisc64"
     ;;
     "Power Macintosh"|ppc|powerpc)
         arch="ppc"
     ;;
47b1860e
     ppc64|powerpc64)
e939cedd
         arch="ppc"
         subarch="ppc64"
     ;;
     s390|s390x)
         arch="s390"
     ;;
     sh4|sh)
         arch="sh4"
     ;;
     sun4u|sparc64)
         arch="sparc"
         subarch="sparc64"
     ;;
864581fe
     i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
e939cedd
         arch="x86"
     ;;
 esac
 
851ffa80
 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
343aef9b
 enable $arch
e939cedd
 
df5cdc24
 # Add processor-specific flags
5d54c126
 if test "$cpu" = generic; then
     : do nothing
 elif enabled ppc; then
343aef9b
 
56348891
     case $(tolower $cpu) in
         601|ppc601|powerpc601)
9dbd5c3d
             cpuflags="-mcpu=601"
64ad53ff
             disable altivec
9dbd5c3d
         ;;
56348891
         603*|ppc603*|powerpc603*)
9dbd5c3d
             cpuflags="-mcpu=603"
64ad53ff
             disable altivec
9dbd5c3d
         ;;
56348891
         604*|ppc604*|powerpc604*)
9dbd5c3d
             cpuflags="-mcpu=604"
64ad53ff
             disable altivec
9dbd5c3d
         ;;
56348891
         g3|75*|ppc75*|powerpc75*)
9dbd5c3d
             cpuflags="-mcpu=750 -mpowerpc-gfxopt"
64ad53ff
             disable altivec
9dbd5c3d
         ;;
56348891
         g4|745*|ppc745*|powerpc745*)
9dbd5c3d
             cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
         ;;
56348891
         74*|ppc74*|powerpc74*)
9dbd5c3d
             cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
         ;;
56348891
         g5|970|ppc970|powerpc970|power4*)
9dbd5c3d
             cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
         ;;
56348891
         cell)
9dbd5c3d
             cpuflags="-mcpu=cell"
             enable ldbrx
         ;;
7b0b81a1
         e500v2)
             cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
             disable altivec
         ;;
         e500)
             cpuflags="-mcpu=8540 -mhard-float"
             disable altivec
         ;;
9dbd5c3d
     esac
343aef9b
 
 elif enabled x86; then
 
9dbd5c3d
     case $cpu in
         i[345]86|pentium)
             cpuflags="-march=$cpu"
             disable mmx
         ;;
         # targets that do NOT support conditional mov (cmov)
         pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
             cpuflags="-march=$cpu"
             disable cmov
         ;;
         # targets that do support conditional mov (cmov)
e90aa6ed
         i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona|atom)
9dbd5c3d
             cpuflags="-march=$cpu"
             enable cmov
             enable fast_cmov
         ;;
         # targets that do support conditional mov but on which it's slow
         pentium4|pentium4m|prescott|nocona)
             cpuflags="-march=$cpu"
             enable cmov
             disable fast_cmov
         ;;
     esac
343aef9b
 
 elif enabled sparc; then
 
9dbd5c3d
     case $cpu in
26b7199e
         niagara)
             cpuflags="-mcpu=$cpu"
             disable vis
         ;;
9dbd5c3d
         sparc64)
             cpuflags="-mcpu=v9"
         ;;
     esac
343aef9b
 
 elif enabled arm; then
 
34ba23c9
     case $cpu in
         armv*)
             cpuflags="-march=$cpu"
c2eae137
             subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
34ba23c9
         ;;
         *)
             cpuflags="-mcpu=$cpu"
c2eae137
             case $cpu in
                 cortex-a*)                               subarch=armv7a  ;;
                 cortex-r*)                               subarch=armv7r  ;;
                 cortex-m*)                               subarch=armv7m  ;;
                 arm11*)                                  subarch=armv6   ;;
                 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
                 armv4*|arm7*|arm9[24]*)                  subarch=armv4   ;;
             esac
34ba23c9
         ;;
     esac
343aef9b
 
 elif enabled alpha; then
 
34ba23c9
     enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
343aef9b
 
 elif enabled bfin; then
 
34ba23c9
     cpuflags="-mcpu=$cpu"
343aef9b
 
 elif enabled mips; then
 
34ba23c9
     cpuflags="-march=$cpu"
343aef9b
 
 elif enabled avr32; then
 
9dbd5c3d
     case $cpu in
         ap7[02]0[0-2])
             subarch="avr32_ap"
             cpuflags="-mpart=$cpu"
         ;;
         ap)
             subarch="avr32_ap"
             cpuflags="-march=$cpu"
         ;;
         uc3[ab]*)
             subarch="avr32_uc"
             cpuflags="-mcpu=$cpu"
         ;;
         uc)
             subarch="avr32_uc"
             cpuflags="-march=$cpu"
         ;;
     esac
df5cdc24
 
343aef9b
 fi
 
df5cdc24
 add_cflags $cpuflags
 add_asflags $cpuflags
 
993f2d0f
 # compiler sanity check
 check_exec <<EOF
 int main(void){ return 0; }
 EOF
 if test "$?" != 0; then
     echo "$cc is unable to create an executable file."
     if test -z "$cross_prefix" && ! enabled cross_compile ; then
         echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
         echo "Only do this if you know what cross compiling means."
     fi
     die "C compiler test failed."
 fi
 
046f081b
 add_cppflags -D_ISOC99_SOURCE
e9b9a2f8
 check_cflags -std=c99
50a334e4
 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
9d821fc2
 #include <stdlib.h>
 EOF
50a334e4
 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
9d821fc2
 #include <stdlib.h>
 EOF
e9b9a2f8
 
f0125de9
 check_host_cflags -std=c99
0a6db2a2
 check_host_cflags -Wall
f0125de9
 
b24dbcbd
 case "$arch" in
e939cedd
     alpha|ia64|mips|parisc|sparc)
8a3c8627
         spic=$shared
b24dbcbd
     ;;
e939cedd
     x86)
cfdb6148
         subarch="x86_32"
e939cedd
         check_cc <<EOF && subarch="x86_64"
58b3536d
         int test[(int)sizeof(char*) - 7];
cfdb6148
 EOF
de27f4d9
         if test "$subarch" = "x86_64"; then
e939cedd
             spic=$shared
de27f4d9
         fi
b24dbcbd
     ;;
 esac
 
343aef9b
 enable $subarch
8a3c8627
 enabled spic && enable pic
b24dbcbd
 
7483e694
 # OS specific
4f854758
 case $target_os in
a1629e28
     haiku)
63ae7e7c
         prefix_default="/boot/common"
108caaaa
         network_extralibs="-lnetwork"
68b2336d
         host_libs=
a1629e28
         ;;
7483e694
     sunos)
         FFSERVERLDFLAGS=""
9987769a
         SHFLAGS='-shared -Wl,-h,$$(@F)'
0600d30a
         enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
7483e694
         network_extralibs="-lsocket -lnsl"
50a334e4
         add_cppflags -D__EXTENSIONS__
8182dc34
         nm_opts='-P -g'
7483e694
         ;;
     netbsd)
355d0528
         disable symver
07a8eef6
         oss_indev_extralibs="-lossaudio"
         oss_outdev_extralibs="-lossaudio"
7483e694
         ;;
     openbsd)
89e053f8
         enable malloc_aligned
7c4a001a
         # On OpenBSD 4.5. the compiler does not use PIC unless
c0b1bc8d
         # explicitly using -fPIC. FFmpeg builds fine without PIC,
7c4a001a
         # however the generated executable will not do anything
         # (simply quits with exit-code 1, no crash, no output).
a7b9c8ae
         # Thus explicitly enable PIC here.
cd78208b
         enable pic
355d0528
         disable symver
7483e694
         SHFLAGS='-shared'
07a8eef6
         oss_indev_extralibs="-lossaudio"
         oss_outdev_extralibs="-lossaudio"
7483e694
         ;;
355d0528
     dragonfly)
         enable malloc_aligned
         disable symver
         ;;
     freebsd)
89e053f8
         enable malloc_aligned
7483e694
         ;;
     bsd/os)
355d81df
         add_extralibs -lpoll -lgnugetopt
b1ca9642
         strip="strip -d"
7483e694
         ;;
     darwin)
89e053f8
         enable malloc_aligned
301ab19d
         gas="gas-preprocessor.pl $cc"
e08b8239
         enabled ppc && add_asflags -force_cpusubtype_ALL
dff68563
         SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
         enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
b1ca9642
         strip="${strip} -x"
355d81df
         add_ldflags -Wl,-dynamic,-search_paths_first
7483e694
         SLIBSUF=".dylib"
         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
         FFSERVERLDFLAGS=-Wl,-bind_at_load
304d586d
         objformat="macho"
1b0f6fb8
         enabled x86_64 && objformat="macho64"
8dfa86f7
         enabled_any pic shared ||
2704bd1a
             { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
7483e694
         ;;
     mingw32*)
9d3f4f50
         if test $target_os = "mingw32ce"; then
1aa71e25
             disable network
         else
             target_os=mingw32
         fi
dcc01c06
         LIBTARGET=i386
1fc9fb8a
         if enabled x86_64; then
89e053f8
             enable malloc_aligned
0c72180e
             LIBTARGET=x64
336cc1b0
         elif enabled arm; then
15c5156d
             LIBTARGET=arm-wince
dcc01c06
         fi
fbd971a4
         shlibdir_default="$bindir_default"
7483e694
         SLIBPREF=""
         SLIBSUF=".dll"
         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
85c9365d
         SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
4c25d159
         SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
b9349ff4
             install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
             install -d "$(LIBDIR)"; \
             install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
7483e694
         SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
4b51fb1c
         SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
304d586d
         objformat="win32"
bc574408
         enable dos_paths
1894e741
         check_cflags -fno-common
e26011d0
         check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \
                                       || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
f7ad5aa2
                 die "ERROR: MinGW runtime version must be >= 3.15."
5666a9f2
         add_cppflags -U__STRICT_ANSI__
7483e694
         ;;
     cygwin*)
4f854758
         target_os=cygwin
fbd971a4
         shlibdir_default="$bindir_default"
7483e694
         SLIBPREF="cyg"
         SLIBSUF=".dll"
         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
         SHFLAGS='-shared -Wl,--enable-auto-image-base'
304d586d
         objformat="win32"
bc574408
         enable dos_paths
1894e741
         check_cflags -fno-common
a7a187a1
         add_cppflags -U__STRICT_ANSI__
7483e694
         ;;
4f365f37
     *-dos|freedos|opendos)
         network_extralibs="-lsocket"
ff1c015d
         objformat="coff"
bc574408
         enable dos_paths
a7a187a1
         add_cppflags -U__STRICT_ANSI__
4f365f37
         ;;
7483e694
     linux)
046f081b
         add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
7483e694
         enable dv1394
         ;;
     irix*)
4f854758
         target_os=irix
7483e694
         ranlib="echo ignoring ranlib"
         ;;
d22e8442
     os/2*)
b1ca9642
         strip="lxlite -CS"
d22e8442
         ln_s="cp -f"
9297f1ed
         objformat="aout"
e14574eb
         add_cppflags -D_GNU_SOURCE
355d81df
         add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
71c61f62
         SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
d22e8442
         FFSERVERLDFLAGS=""
287d3b13
         LIBSUF="_s.a"
d22e8442
         SLIBPREF=""
         SLIBSUF=".dll"
         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
71c61f62
         SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
           echo PROTMODE >> $(SUBDIR)$(NAME).def; \
           echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
           echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
           echo EXPORTS >> $(SUBDIR)$(NAME).def; \
           emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
         SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
           emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
         SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
d22e8442
         SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
bc574408
         enable dos_paths
d22e8442
         ;;
83993c1c
     gnu/kfreebsd)
c1f54478
         add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
83993c1c
         ;;
34e82167
     gnu)
b37131f7
         add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
34e82167
         ;;
9873463c
     qnx)
         add_cppflags -D_QNX_SOURCE
         network_extralibs="-lsocket"
         ;;
1c69c79f
     symbian)
         SLIBSUF=".dll"
         enable dos_paths
         add_cflags --include=$sysinclude/gcce/gcce.h
         ;;
614d8911
     none)
         ;;
7483e694
     *)
4f924f9a
         die "Unknown OS '$target_os'."
7483e694
         ;;
 esac
 
e528cdac
 echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate
db7515fd
 
13cb2187
 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
 
c9d19248
 set_default $PATHS_LIST
 
320d060a
 # we need to build at least one lib type
93b3c083
 if ! enabled_any static shared; then
320d060a
     cat <<EOF
 At least one library type must be built.
 Specify --enable-static to build the static libraries or --enable-shared to
 build the shared libraries as well. To only build the shared libraries specify
 --disable-static in addition to --enable-shared.
 EOF
     exit 1;
 fi
 
abc4e572
 disabled static && LIBNAME=""
2a320695
 
2184c6f7
 die_license_disabled() {
4c27207c
     enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
2184c6f7
 }
 
 die_license_disabled gpl libx264
de295976
 die_license_disabled gpl libxavs
2184c6f7
 die_license_disabled gpl libxvid
 die_license_disabled gpl x11grab
 
be1ae17e
 die_license_disabled nonfree libaacplus
2f7ae63b
 die_license_disabled nonfree libfaac
b2e3c528
 
0b175caa
 die_license_disabled version3 libopencore_amrnb
 die_license_disabled version3 libopencore_amrwb
d89e738a
 die_license_disabled version3 libvo_aacenc
f502ff3f
 die_license_disabled version3 libvo_amrwbenc
0b175caa
 
9cad0e4e
 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3fe142e2
 
40617a6d
 disabled optimizations || check_cflags -fomit-frame-pointer
cf9d24ad
 
e276d9e8
 enable_pic() {
     enable pic
bce7b696
     add_cppflags -DPIC
     add_cflags   -fPIC
     add_asflags  -fPIC
e276d9e8
 }
 
 enabled pic && enable_pic
bce7b696
 
b4d96ba2
 check_cc <<EOF || die "Symbol mangling check failed."
 int ff_extern;
 EOF
8182dc34
 sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
b4d96ba2
 extern_prefix=${sym%%ff_extern*}
 
f65883c8
 check_cc <<EOF && enable inline_asm
 void foo(void) { __asm__ volatile ("" ::); }
 EOF
61d251db
 
df5e3978
 _restrict=
 for restrict_keyword in restrict __restrict__ __restrict; do
     check_cc <<EOF && _restrict=$restrict_keyword && break
 void foo(char * $restrict_keyword p);
 EOF
 done
 
 check_cc <<EOF && enable attribute_packed
 struct { int x; } __attribute__((packed)) x;
 EOF
 
dffb41b9
 check_cc <<EOF && enable attribute_may_alias
 union { int x; } __attribute__((may_alias)) x;
 EOF
 
df5e3978
 check_cc <<EOF || die "endian test failed"
 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
 EOF
48fc536a
 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
df5e3978
 
e939cedd
 if enabled alpha; then
 
     check_cflags -mieee
 
 elif enabled arm; then
e45391bb
 
50fa82e6
     check_cflags -marm
301ab19d
     nogas=die
50fa82e6
 
44caaa56
     if     check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
         enable vfp_args
     elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
         case "${cross_prefix:-$cc}" in
             *hardfloat*)         enable vfp_args;   fpabi=vfp ;;
             *) check_ld <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
fa0912fe
 __asm__ (".eabi_attribute 28, 1");
 int main(void) { return 0; }
 EOF
44caaa56
         esac
         warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
     fi
fa0912fe
 
     # We have to check if pld is a nop and disable it.
     check_asm pld '"pld [r0]"'
 
     enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
     enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
     enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
     enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
     enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
     enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
93eb8e4d
     enabled vfpv3   && check_asm vfpv3   '"vmov.f32 s0, #1.0"'
e45391bb
 
e276d9e8
     enabled_all armv6t2 shared !pic && enable_pic
 
fa0912fe
 elif enabled mips; then
e45391bb
 
fa0912fe
     check_asm loongson '"dmult.g $1, $2, $3"'
     enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
e45391bb
 
fa0912fe
 elif enabled ppc; then
e45391bb
 
e6a0c354
     enable local_aligned_8 local_aligned_16
 
135448fa
     check_asm dcbzl     '"dcbzl 0, %0" :: "r"(0)'
2f0c136e
     check_asm ibm_asm   '"add 0, 0, 0"'
fa0912fe
     check_asm ppc4xx    '"maclhw r10, r11, r12"'
64de20d1
     check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
fa0912fe
 
     # AltiVec flags: The FSF version of GCC differs from the Apple version
     if enabled altivec; then
301ab19d
         nogas=warn
fa0912fe
         check_cflags -maltivec -mabi=altivec &&
         { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
         check_cflags -faltivec
 
         # check if our compiler supports Motorola AltiVec C API
         check_cc <<EOF || disable altivec
 $inc_altivec_h
 int main(void) {
     vector signed int v1, v2, v3;
     v1 = vec_add(v2,v3);
     return 0;
 }
 EOF
 
         # check if our compiler supports braces for vector declarations
         check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
 $inc_altivec_h
 int main (void) { (vector int) {1}; return 0; }
 EOF
     fi
e45391bb
 
fa0912fe
 elif enabled sparc; then
e45391bb
 
fa0912fe
     enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
         add_cflags -mcpu=ultrasparc -mtune=ultrasparc
e45391bb
 
fa0912fe
 elif enabled x86; then
e45391bb
 
e6a0c354
     enable local_aligned_8 local_aligned_16
 
44965991
     # 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
     # base pointer is cleared in the inline assembly code.
7dfef245
     check_exec_crash <<EOF && enable ebp_available
44965991
     volatile int i=0;
be449fca
     __asm__ volatile (
44965991
         "xorl %%ebp, %%ebp"
     ::: "%ebp");
     return i;
 EOF
 
f494213c
     # check whether EBX is available on x86
7cee5421
     check_asm ebx_available '""::"b"(0)' &&
         check_asm ebx_available '"":::"%ebx"'
8e380710
 
6f74fb03
     # check whether xmm clobbers are supported
     check_asm xmm_clobbers '"":::"%xmm0"'
 
d3a4b4e0
     # check whether more than 10 operands are supported
     check_cc <<EOF && enable ten_operands
 int main(void) {
     int x=0;
     __asm__ volatile(
         ""
         :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
     );
     return 0;
 }
 EOF
 
d7f0920b
     # check whether binutils is new enough to compile SSSE3/MMX2
940f335a
     enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
5fd89ca0
     enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
6bd859d6
 
     check_asm bswap '"bswap %%eax" ::: "%eax"'
304d586d
 
9cca1e40
     if ! disabled_any asm mmx yasm; then
b6c06894
         if check_cmd $yasmexe --version; then
             enabled x86_64 && yasm_extra="-m amd64"
             yasm_debug="-g dwarf2"
         elif check_cmd nasm -v; then
             yasmexe=nasm
             yasm_debug="-g -F dwarf"
             enabled x86_64 && test "$objformat" = elf && objformat=elf64
         fi
 
         YASMFLAGS="-f $objformat $yasm_extra"
         enabled pic               && append YASMFLAGS "-DPIC"
         test -n "$extern_prefix"  && append YASMFLAGS "-DPREFIX"
         case "$objformat" in
             elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
         esac
 
5fb06ffa
         check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
25432e85
             die "yasm not found, use --disable-yasm for a crippled build"
429059f8
         check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx
31a0dcb2
     fi
e45391bb
 
669b5583
     case "$cpu" in
         athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
             disable fast_clz
         ;;
     esac
 
44965991
 fi
 
301ab19d
 if enabled asm; then
     as=${gas:=$as}
     check_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' ||
         $nogas "GNU assembler not found, install gas-preprocessor"
 fi
 
4a7e068b
 check_ldflags -Wl,--as-needed
 
a98bb16d
 if check_func dlopen; then
     ldl=
 elif check_func dlopen -ldl; then
     ldl=-ldl
8bf5d58f
 fi
 
121053b2
 if enabled network; then
     check_type "sys/types.h sys/socket.h" socklen_t
     check_type netdb.h "struct addrinfo"
     check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
     check_type netinet/in.h "struct sockaddr_in6"
     check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
     check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
     # Prefer arpa/inet.h over winsock2
     if check_header arpa/inet.h ; then
         check_func closesocket
     elif check_header winsock2.h ; then
         check_func_headers winsock2.h closesocket -lws2 && \
             network_extralibs="-lws2" || \
         { check_func_headers winsock2.h closesocket -lws2_32 && \
             network_extralibs="-lws2_32"; }
         check_type ws2tcpip.h socklen_t
         check_type ws2tcpip.h "struct addrinfo"
         check_type ws2tcpip.h "struct ipv6_mreq"
         check_type ws2tcpip.h "struct sockaddr_in6"
         check_type ws2tcpip.h "struct sockaddr_storage"
         check_struct winsock2.h "struct sockaddr" sa_len
     else
         disable network
     fi
 fi
 
75ecf149
 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
 
534a2231
 check_func  fcntl
7483e694
 check_func  fork
84882df6
 check_func  getaddrinfo $network_extralibs
7483e694
 check_func  gethrtime
 check_func  getrusage
fc5607f8
 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
094c09bb
 check_func  inet_aton $network_extralibs
abfc8d05
 check_func  isatty
bd8e7503
 check_func  localtime_r
4ae40685
 check_func  ${malloc_prefix}memalign            && enable memalign
7483e694
 check_func  mkstemp
0328b9ea
 check_func  mmap
4ae40685
 check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
0104b608
 check_func  setrlimit
87958234
 check_func  strerror_r
47941088
 check_func  strtok_r
b58b9fa3
 check_func_headers conio.h kbhit
b507ebd1
 check_func_headers io.h setmode
e4673692
 check_func_headers lzo/lzo1x.h lzo1x_999_compress
fc5607f8
 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
2446d3d6
 check_func_headers windows.h GetProcessTimes
73f6d31e
 check_func_headers windows.h MapViewOfFile
7c5bfe7a
 check_func_headers windows.h VirtualAlloc
6ffa87d3
 
a98bb16d
 check_header dlfcn.h
92c6a099
 check_header dxva2api.h
b33fa8a1
 check_header libcrystalhd/libcrystalhd_if.h
a98bb16d
 check_header malloc.h
bf6ce82d
 check_header poll.h
b58412f1
 check_header sys/mman.h
b091aa44
 check_header sys/resource.h
bf6ce82d
 check_header sys/select.h
8b8bf89e
 check_header termios.h
272081b0
 check_header vdpau/vdpau.h
 check_header vdpau/vdpau_x11.h
68178ca9
 check_header X11/extensions/XvMClib.h
a98bb16d
 
9104cd51
 check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex
 
a4fa192c
 disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
632948bd
 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
57bd82d4
 
 # check for some common methods of building with pthread support
 # do this before the optional library checks as some of them require pthreads
0dbfc1db
 if ! disabled pthreads && ! enabled w32threads; then
     enable pthreads
9e7fd101
     if check_func pthread_create; then
         :
     elif check_func pthread_create -pthread; then
         add_cflags -pthread
afc9aee2
         add_extralibs -pthread
9e7fd101
     elif check_func pthread_create -pthreads; then
         add_cflags -pthreads
afc9aee2
         add_extralibs -pthreads
8d94f606
     elif check_func pthread_create -lpthreadGC2; then
         add_extralibs -lpthreadGC2
9e7fd101
     elif ! check_lib pthread.h pthread_create -lpthread; then
0dbfc1db
         disable pthreads
9e7fd101
     fi
57bd82d4
 fi
 
8eee7025
 for thread in $THREADS_LIST; do
e5f94c2b
     if enabled $thread; then
3ae3b721
         test -n "$thread_type" &&
             die "ERROR: Only one thread type must be selected." ||
e5f94c2b
             thread_type="$thread"
     fi
 done
 
50f7c296
 check_lib math.h sin -lm && LIBM="-lm"
5c98af95
 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
f3e3f28e
 enabled vaapi && require vaapi va/va.h vaInitialize -lva
fdf88598
 
645d2652
 check_mathfunc exp2
 check_mathfunc exp2f
 check_mathfunc llrint
07876e25
 check_mathfunc llrintf
645d2652
 check_mathfunc log2
 check_mathfunc log2f
 check_mathfunc lrint
 check_mathfunc lrintf
 check_mathfunc round
 check_mathfunc roundf
23d3931a
 check_mathfunc trunc
645d2652
 check_mathfunc truncf
f32adb22
 
57bd82d4
 # these are off by default, so fail if requested and not available
a1b3c5a3
 enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
89451dd6
 enabled libcelt    && require libcelt celt/celt.h celt_decode -lcelt0
47941088
 enabled frei0r     && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
be1ae17e
 enabled libaacplus && require  "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
46eb300d
 enabled libdc1394  && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
849f80fe
 enabled libdirac   && require_pkg_config dirac                          \
     "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h"  \
     "dirac_decoder_init dirac_encoder_init"
79fda097
 enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
a5b64584
 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
5af41508
 enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
9b9d3868
 enabled libmp3lame && require  "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
7483e694
 enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
eb7626a3
 enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
 enabled libopencore_amrwb  && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
f1b3f33d
 enabled libopencv  && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
3d6fac8c
 enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
849f80fe
 enabled librtmp    && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
ae14f311
 enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
c261a5d9
 enabled libtheora  && require  libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
d89e738a
 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
f502ff3f
 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
7483e694
 enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
7d07d6f5
 enabled libvpx     && {
     enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
                                 die "ERROR: libvpx decoder version must be >=0.9.1"; }
8eeed0db
     enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VPX_CQ" -lvpx ||
                                 die "ERROR: libvpx encoder version must be >=0.9.6"; } }
eb7626a3
 enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 &&
e25c6710
                       { check_cpp_condition x264.h "X264_BUILD >= 115" ||
                         die "ERROR: libx264 version must be >= 0.115."; }
de295976
 enabled libxavs    && require  libxavs xavs.h xavs_encoder_encode -lxavs
2bfecf73
 enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
7483e694
 enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
8ac17293
 
ca87d439
 SDL_CONFIG="${cross_prefix}sdl-config"
e3ff6e8d
 if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then
     check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
     enable sdl &&
     check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
 else
   if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
ca87d439
     sdl_cflags=$("${SDL_CONFIG}" --cflags)
     sdl_libs=$("${SDL_CONFIG}" --libs)
350f3d14
     check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
aa692d54
     check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
     enable sdl &&
     check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
e3ff6e8d
   fi
c3f6b472
 fi
b2a6f25c
 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
57bd82d4
 
2270b4b2
 texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
146ea952
 
1a204f07
 check_header linux/fb.h
06e31011
 check_header linux/videodev.h
 check_header linux/videodev2.h
1b6e8b73
 check_header sys/videoio.h
47f38850
 
27796dc3
 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
ec1ee802
 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
 # w32api 3.12 had it defined wrong
 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
c2345207
 
95eb2e3a
 check_type "dshow.h" IBaseFilter
 
f8aa696f
 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1c915f83
 { check_header dev/bktr/ioctl_meteor.h &&
   check_header dev/bktr/ioctl_bt848.h; } ||
 { check_header machine/ioctl_meteor.h &&
   check_header machine/ioctl_bt848.h; } ||
 { check_header dev/video/meteor/ioctl_meteor.h &&
   check_header dev/video/bktr/ioctl_bt848.h; } ||
 check_header dev/ic/bt8xx.h
f8aa696f
 
15d59d2c
 check_header sndio.h
13e69cc5
 if check_struct sys/soundcard.h audio_buf_info bytes; then
     enable_safe sys/soundcard.h
 else
     check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
     #include <sys/soundcard.h>
     audio_buf_info abc;
 EOF
 fi
c7682de0
 check_header soundcard.h
deb29777
 
b6f3d925
 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
35fd8122
 
6dafa706
 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait
80ff8a16
 
15d59d2c
 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
 
56a059ac
 enabled x11grab                         &&
f58f4ce1
 check_header X11/Xlib.h                 &&
 check_header X11/extensions/XShm.h      &&
0a045661
 check_header X11/extensions/Xfixes.h    &&
f58f4ce1
 check_func XOpenDisplay -lX11           &&
781c1aa6
 check_func XShmCreateImage -lX11 -lXext &&
 check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
f58f4ce1
 
dd950e2e
 if ! disabled vaapi; then
     check_lib va/va.h vaInitialize -lva && {
         check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
da371602
         warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
dd950e2e
     } || disable vaapi
 fi
f9c215e2
 
598ef02b
 if ! disabled vdpau && enabled vdpau_vdpau_h; then
deda2a4a
 check_cpp_condition \
     vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
d1ebd4a9
     { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
       disable vdpau; }
abf649c7
 fi
deda2a4a
 
95e561ec
 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
57bd82d4
 
 # add some useful compiler flags if supported
 check_cflags -Wdeclaration-after-statement
dcd479c0
 check_cflags -Wall
440e3b2f
 check_cflags -Wno-parentheses
dcd479c0
 check_cflags -Wno-switch
c07bd6a9
 check_cflags -Wdisabled-optimization
 check_cflags -Wpointer-arith
 check_cflags -Wredundant-decls
cc1fb623
 check_cflags -Wno-pointer-sign
f4929996
 check_cflags -Wcast-qual
9aceb3cf
 check_cflags -Wwrite-strings
652a5bf6
 check_cflags -Wtype-limits
764551c6
 check_cflags -Wundef
fc298fd9
 check_cflags -Wmissing-prototypes
5258f64a
 check_cflags -Wno-pointer-to-int-cast
5af4e0cc
 enabled extra_warnings && check_cflags -Winline
cf9d24ad
 
57bd82d4
 # add some linker flags
5c0e9479
 check_ldflags -Wl,--warn-common
798b2646
 check_ldflags -Wl,-rpath-link,libpostproc -Wl,-rpath-link,libswscale -Wl,-rpath-link,libavfilter -Wl,-rpath-link,libavdevice -Wl,-rpath-link,libavformat -Wl,-rpath-link,libavcodec -Wl,-rpath-link,libavutil
fef2d661
 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
94a3401e
 
a482e61b
 echo "X{};" > $TMPV
b462d132
 if test_ldflags -Wl,--version-script,$TMPV; then
a482e61b
     append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
b462d132
     check_cc <<EOF && enable symver_asm_label
 void ff_foo(void) __asm__ ("av_foo@VERSION");
0884fadf
 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
b462d132
 EOF
     check_cc <<EOF && enable symver_gnu_asm
 __asm__(".symver ff_foo,av_foo@VERSION");
 void ff_foo(void) {}
 EOF
 fi
a482e61b
 
bd2216e4
 if enabled small; then
14ca9cd0
     add_cflags $size_cflags
8400d6b8
 elif enabled optimizations; then
14ca9cd0
     add_cflags $speed_cflags
b05394a0
 else
     add_cflags $noopt_cflags
cddf3f45
 fi
11fdbc44
 check_cflags -fno-math-errno
b2eb2ff0
 check_cflags -fno-signed-zeros
02affe2f
 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
 int x;
 EOF
 
cddf3f45
 
629687f6
 if enabled icc; then
b1598b58
     # Just warnings, no remarks
     check_cflags -w1
     # -wd: Disable following warnings
     # 144, 167, 556: -Wno-pointer-sign
91bcad19
     # 1292: attribute "foo" ignored
b1598b58
     # 10006: ignoring unknown option -fno-signed-zeros
f1c7c6ae
     # 10148: ignoring unknown option -Wno-parentheses
b1598b58
     # 10156: ignoring option '-W'; no argument required
91bcad19
     check_cflags -wd144,167,556,1292,10006,10148,10156
b1598b58
     # 11030: Warning unknown option --as-needed
     # 10156: ignoring option '-export'; no argument required
     check_ldflags -wd10156,11030
     # Allow to compile with optimizations
     check_ldflags -march=$cpu
be2cf98a
     # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
     enable ebp_available
bdefad73
     if enabled x86_32; then
         test ${icc_version%%.*} -ge 11 && \
             check_cflags -falign-stack=maintain-16-byte || \
             disable aligned_stack
     fi
df442a8d
 elif enabled ccc; then
     # disable some annoying warnings
     add_cflags -msg_disable cvtu32to64
     add_cflags -msg_disable embedcomment
     add_cflags -msg_disable needconstext
     add_cflags -msg_disable nomainieee
     add_cflags -msg_disable ptrmismatch1
     add_cflags -msg_disable unreachcode
973859f5
 elif enabled gcc; then
     check_cflags -fno-tree-vectorize
765e6134
     check_cflags -Werror=implicit-function-declaration
de63bfec
     check_cflags -Werror=missing-prototypes
613a4e3f
 elif enabled llvm_gcc; then
     check_cflags -mllvm -stack-alignment=16
06da6943
 elif enabled clang; then
5c8ef670
     check_cflags -mllvm -stack-alignment=16
06da6943
     check_cflags -Qunused-arguments
138132be
 elif enabled armcc; then
     # 2523: use of inline assembler is deprecated
bcafde61
     add_cflags -W${armcc_opt},--diag_suppress=2523
     add_cflags -W${armcc_opt},--diag_suppress=1207
5a92140b
     add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
b0c1b66a
     add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
9b69efc0
     add_cflags -W${armcc_opt},--diag_suppress=167  # pointer sign
     add_cflags -W${armcc_opt},--diag_suppress=513  # pointer sign
587d24ff
 elif enabled tms470; then
     add_cflags -pds=824 -pds=837
a98ffb2b
 elif enabled pathscale; then
     add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
504a64b9
 fi
 
7483e694
 enabled_any $THREADS_LIST      && enable threads
 
 check_deps $CONFIG_LIST       \
b6bb00b0
            $CONFIG_EXTRA      \
7483e694
            $HAVE_LIST         \
            $DECODER_LIST      \
            $ENCODER_LIST      \
5666fd73
            $HWACCEL_LIST      \
7483e694
            $PARSER_LIST       \
            $BSF_LIST          \
            $DEMUXER_LIST      \
            $MUXER_LIST        \
f7679c54
            $FILTER_LIST       \
7483e694
            $INDEV_LIST        \
            $OUTDEV_LIST       \
            $PROTOCOL_LIST     \
57442411
            $ACODEC_TESTS      \
            $VCODEC_TESTS      \
            $LAVF_TESTS        \
48c28162
            $LAVFI_TESTS       \
b9d5f1b7
            $SEEK_TESTS        \
f70f03f6
 
3bfd582c
 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
c8a4ae00
 
414409e6
 if test $target_os = "haiku"; then
ad3ac1d5
     disable memalign
     disable posix_memalign
 fi
 
9bbd6a4c
 ! enabled_any memalign posix_memalign malloc_aligned &&
     enabled_any $need_memalign && enable memalign_hack
 
3e89171a
 echo "install prefix            $prefix"
f36958f8
 echo "source path               $source_path"
 echo "C compiler                $cc"
 echo "ARCH                      $arch ($cpu)"
ce8871c2
 if test "$build_suffix" != ""; then
     echo "build suffix              $build_suffix"
eb94aca9
 fi
ac63af34
 if test "$extra_version" != ""; then
     echo "version string suffix     $extra_version"
 fi
0db2ce77
 echo "big-endian                ${bigendian-no}"
e90f5b5a
 echo "runtime cpu detection     ${runtime_cpudetect-no}"
5b6c2cbd
 if enabled x86; then
6348a96c
     echo "${yasmexe}                      ${yasm-no}"
0db2ce77
     echo "MMX enabled               ${mmx-no}"
30e98e62
     echo "MMX2 enabled              ${mmx2-no}"
3bf96eec
     echo "3DNow! enabled            ${amd3dnow-no}"
a1ef9f08
     echo "3DNow! extended enabled   ${amd3dnowext-no}"
1bb04d5a
     echo "SSE enabled               ${sse-no}"
30e98e62
     echo "SSSE3 enabled             ${ssse3-no}"
c73b779d
     echo "AVX enabled               ${avx-no}"
0db2ce77
     echo "CMOV enabled              ${cmov-no}"
     echo "CMOV is fast              ${fast_cmov-no}"
971cc990
     echo "EBX available             ${ebx_available-no}"
     echo "EBP available             ${ebp_available-no}"
d3a4b4e0
     echo "10 operands supported     ${ten_operands-no}"
e41e8342
 fi
5b6c2cbd
 if enabled arm; then
0db2ce77
     echo "ARMv5TE enabled           ${armv5te-no}"
     echo "ARMv6 enabled             ${armv6-no}"
ab5cb084
     echo "ARMv6T2 enabled           ${armv6t2-no}"
f55b299a
     echo "ARM VFP enabled           ${armvfp-no}"
0db2ce77
     echo "IWMMXT enabled            ${iwmmxt-no}"
6b18d278
     echo "NEON enabled              ${neon-no}"
eba9ae3c
 fi
5b6c2cbd
 if enabled mips; then
0db2ce77
     echo "MMI enabled               ${mmi-no}"
e41e8342
 fi
5b6c2cbd
 if enabled ppc; then
0db2ce77
     echo "AltiVec enabled           ${altivec-no}"
30e98e62
     echo "PPC 4xx optimizations     ${ppc4xx-no}"
0db2ce77
     echo "dcbzl available           ${dcbzl-no}"
30e98e62
 fi
 if enabled sparc; then
     echo "VIS enabled               ${vis-no}"
e41e8342
 fi
0db2ce77
 echo "debug symbols             ${debug-no}"
b1ca9642
 echo "strip symbols             ${stripping-no}"
6a34f5d4
 echo "optimize for size         ${small-no}"
8400d6b8
 echo "optimizations             ${optimizations-no}"
0db2ce77
 echo "static                    ${static-no}"
 echo "shared                    ${shared-no}"
4a24ab64
 echo "postprocessing support    ${postproc-no}"
f7679c54
 echo "new filter support        ${avfilter-no}"
0db2ce77
 echo "network support           ${network-no}"
 echo "threading support         ${thread_type-no}"
 echo "SDL support               ${sdl-no}"
 echo "Sun medialib support      ${mlib-no}"
 echo "AVISynth enabled          ${avisynth-no}"
89451dd6
 echo "libcelt enabled           ${libcelt-no}"
47941088
 echo "frei0r enabled            ${frei0r-no}"
f7b8bffe
 echo "libdc1394 support         ${libdc1394-no}"
690bfceb
 echo "libdirac enabled          ${libdirac-no}"
0db2ce77
 echo "libfaac enabled           ${libfaac-no}"
be1ae17e
 echo "libaacplus enabled        ${libaacplus-no}"
0db2ce77
 echo "libgsm enabled            ${libgsm-no}"
 echo "libmp3lame enabled        ${libmp3lame-no}"
 echo "libnut enabled            ${libnut-no}"
0b175caa
 echo "libopencore-amrnb support ${libopencore_amrnb-no}"
 echo "libopencore-amrwb support ${libopencore_amrwb-no}"
6ebf0bfc
 echo "libopencv support         ${libopencv-no}"
9a77d59a
 echo "libopenjpeg enabled       ${libopenjpeg-no}"
0f943ce6
 echo "librtmp enabled           ${librtmp-no}"
f7cd9eed
 echo "libschroedinger enabled   ${libschroedinger-no}"
ae14f311
 echo "libspeex enabled          ${libspeex-no}"
0db2ce77
 echo "libtheora enabled         ${libtheora-no}"
f4f05c45
 echo "libva enabled             ${vaapi-no}"
d89e738a
 echo "libvo-aacenc support      ${libvo_aacenc-no}"
f502ff3f
 echo "libvo-amrwbenc support    ${libvo_amrwbenc-no}"
0db2ce77
 echo "libvorbis enabled         ${libvorbis-no}"
8299a7f8
 echo "libvpx enabled            ${libvpx-no}"
d6bd62db
 echo "libx264 enabled           ${libx264-no}"
de295976
 echo "libxavs enabled           ${libxavs-no}"
d6bd62db
 echo "libxvid enabled           ${libxvid-no}"
0db2ce77
 echo "zlib enabled              ${zlib-no}"
f402916e
 echo "bzlib enabled             ${bzlib-no}"
2c62e737
 echo
de6d9b64
 
5666fd73
 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
8138b9db
     echo "Enabled ${type}s:"
f65c9da1
     eval list=\$$(toupper $type)_LIST
fda299f0
     print_enabled '_*' $list | sort | pr -r -3 -t
f65c9da1
     echo
8138b9db
 done
 
ba7a7039
 license="LGPL version 2.1 or later"
ba321adb
 if enabled nonfree; then
ba7a7039
     license="nonfree and unredistributable"
9cad0e4e
 elif enabled gplv3; then
     license="GPL version 3 or later"
 elif enabled lgplv3; then
     license="LGPL version 3 or later"
ba321adb
 elif enabled gpl; then
ba7a7039
     license="GPL version 2 or later"
ba321adb
 fi
 
 echo "License: $license"
ca5323af
 
cf1392e9
 echo "Creating config.mak and config.h..."
 
df642790
 # build tree in object directory if source path is different from current one
 if enabled source_path_used; then
     DIRS="
         doc
         libavcodec
         libavcodec/$arch
896f80f8
         libavcodec/mlib
df642790
         libavdevice
         libavfilter
2c1da681
         libavfilter/$arch
002bd346
         libavfilter/libmpcodecs
         libavfilter/libmpcodecs/libvo
df642790
         libavformat
         libavutil
         libavutil/$arch
         libpostproc
         libswscale
         libswscale/$arch
896f80f8
         libswscale/mlib
df642790
         tests
         tools
     "
     FILES="
         Makefile
         common.mak
         subdir.mak
         doc/texi2pod.pl
         libavcodec/Makefile
43f60eba
         libavcodec/${arch}/Makefile
df642790
         libavdevice/Makefile
         libavfilter/Makefile
483480b5
         libavfilter/${arch}/Makefile
df642790
         libavformat/Makefile
         libavutil/Makefile
         libpostproc/Makefile
         libswscale/Makefile
     "
e0e335a0
     map 'mkdir -p $v' $DIRS;
43f60eba
     map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
df642790
 fi
 
b1ca9642
 enabled stripping || strip="echo skipping strip"
 
72cfcf41
 config_files="$TMPH config.mak"
 
173c983b
 cat > config.mak <<EOF
 # Automatically generated by configure - do not modify!
e528cdac
 ifndef FFMPEG_CONFIG_MAK
 FFMPEG_CONFIG_MAK=1
 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
173c983b
 prefix=$prefix
 LIBDIR=\$(DESTDIR)$libdir
 SHLIBDIR=\$(DESTDIR)$shlibdir
 INCDIR=\$(DESTDIR)$incdir
 BINDIR=\$(DESTDIR)$bindir
 DATADIR=\$(DESTDIR)$datadir
 MANDIR=\$(DESTDIR)$mandir
 SRC_PATH="$source_path"
 SRC_PATH_BARE=$source_path
bb5cecdc
 CC_IDENT=$cc_ident
173c983b
 ARCH=$arch
 CC=$cc
 AS=$as
 LD=$ld
 DEPCC=$dep_cc
 YASM=$yasmexe
a4aea515
 YASMDEP=$yasmexe
173c983b
 AR=$ar
 RANLIB=$ranlib
b1ca9642
 CP=cp -p
173c983b
 LN_S=$ln_s
b1ca9642
 STRIP=$strip
173c983b
 CPPFLAGS=$CPPFLAGS
 CFLAGS=$CFLAGS
 ASFLAGS=$ASFLAGS
 CC_O=$CC_O
 LDFLAGS=$LDFLAGS
 FFSERVERLDFLAGS=$FFSERVERLDFLAGS
 SHFLAGS=$SHFLAGS
 YASMFLAGS=$YASMFLAGS
 BUILDSUF=$build_suffix
 FULLNAME=$FULLNAME
 LIBPREF=$LIBPREF
 LIBSUF=$LIBSUF
 LIBNAME=$LIBNAME
 SLIBPREF=$SLIBPREF
 SLIBSUF=$SLIBSUF
 EXESUF=$EXESUF
 EXTRA_VERSION=$extra_version
 DEPFLAGS=$DEPFLAGS
 CCDEP=$CCDEP
 ASDEP=$ASDEP
 CC_DEPFLAGS=$CC_DEPFLAGS
 AS_DEPFLAGS=$AS_DEPFLAGS
 HOSTCC=$host_cc
 HOSTCFLAGS=$host_cflags
 HOSTEXESUF=$HOSTEXESUF
 HOSTLDFLAGS=$host_ldflags
 HOSTLIBS=$host_libs
 TARGET_EXEC=$target_exec
 TARGET_PATH=$target_path
 SDL_LIBS=$sdl_libs
 SDL_CFLAGS=$sdl_cflags
 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
 EXTRALIBS=$extralibs
7a88617c
 INSTALL=$install
1afc4750
 LIBTARGET=${LIBTARGET}
 SLIBNAME=${SLIBNAME}
 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
 SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
 SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
906fd030
 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
02affe2f
 NOREDZONE_FLAGS=$noredzone_flags
173c983b
 EOF
5a872801
 
719c8e00
 get_version(){
     name=$1
     file=$source_path/$2
147e7692
     eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
     eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
0e32c8c6
     lcname=$(tolower $name)
     eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
     eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
719c8e00
 }
 
147e7692
 get_version LIBSWSCALE  libswscale/swscale.h
 get_version LIBPOSTPROC libpostproc/postprocess.h
b9d2f4a9
 get_version LIBAVCODEC  libavcodec/version.h
147e7692
 get_version LIBAVDEVICE libavdevice/avdevice.h
c7892b41
 get_version LIBAVFORMAT libavformat/version.h
147e7692
 get_version LIBAVUTIL   libavutil/avutil.h
a6601d69
 get_version LIBAVFILTER libavfilter/avfilter.h
5a872801
 
173c983b
 cat > $TMPH <<EOF
 /* Automatically generated by configure - do not modify! */
e528cdac
 #ifndef FFMPEG_CONFIG_H
 #define FFMPEG_CONFIG_H
 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
0cb88628
 #define FFMPEG_LICENSE "$(c_escape $license)"
173c983b
 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
 #define CC_TYPE "$cc_type"
 #define CC_VERSION $cc_version
 #define restrict $_restrict
 #define EXTERN_PREFIX "${extern_prefix}"
 #define EXTERN_ASM ${extern_prefix}
524aae86
 #define SLIBSUF "$SLIBSUF"
173c983b
 EOF
523ef551
 
4ae40685
 test -n "$malloc_prefix" &&
     echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
 
523ef551
 if enabled small || disabled optimizations; then
9a894c48
     echo "#undef  av_always_inline"  >> $TMPH
4f7d2fe2
     if enabled small; then
         echo "#define av_always_inline inline"  >> $TMPH
     else
         echo "#define av_always_inline av_unused"  >> $TMPH
     fi
523ef551
 fi
 
55127e7b
 if enabled yasm; then
     append config_files $TMPASM
     printf '' >$TMPASM
 fi
 
72cfcf41
 print_config ARCH_   "$config_files" $ARCH_LIST
 print_config HAVE_   "$config_files" $HAVE_LIST
 print_config CONFIG_ "$config_files" $CONFIG_LIST       \
0e5a7b91
                                      $CONFIG_EXTRA      \
                                      $DECODER_LIST      \
                                      $ENCODER_LIST      \
                                      $HWACCEL_LIST      \
                                      $PARSER_LIST       \
                                      $BSF_LIST          \
                                      $DEMUXER_LIST      \
                                      $MUXER_LIST        \
                                      $FILTER_LIST       \
                                      $PROTOCOL_LIST     \
                                      $INDEV_LIST        \
                                      $OUTDEV_LIST       \
8ac17293
 
57442411
 cat >>config.mak <<EOF
 ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
 VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
 LAVF_TESTS=$(print_enabled   -n _test $LAVF_TESTS)
48c28162
 LAVFI_TESTS=$(print_enabled  -n _test $LAVFI_TESTS)
b9d5f1b7
 SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
57442411
 EOF
 
e528cdac
 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
9c05103f
 
b7860763
 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
c34681df
 cp_if_changed $TMPH config.h
d0b8e40c
 touch .config
3d204385
 
55127e7b
 enabled yasm && cp_if_changed $TMPASM config.asm
 
a3e02a8c
 cat > $TMPH <<EOF
 /* Generated by ffconf */
 #ifndef AVUTIL_AVCONFIG_H
 #define AVUTIL_AVCONFIG_H
 EOF
 
72cfcf41
 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
a3e02a8c
 
 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
 
 cp_if_changed $TMPH libavutil/avconfig.h
 
7bfc8ae6
 test -n "$WARNINGS" && printf "\n$WARNINGS"
 
d0674868
 # build pkg-config files
def4272a
 
d0674868
 pkgconfig_generate(){
 name=$1
b0dfd108
 shortname=${name#lib}${build_suffix}
d0674868
 comment=$2
 version=$3
 libs=$4
 requires=$5
1bf75aec
 enabled ${name#lib} || return 0
25cd5cb3
 cat <<EOF > $name/$name.pc
3e89171a
 prefix=$prefix
a94e666c
 exec_prefix=\${prefix}
f2b7382c
 libdir=$libdir
7622778e
 includedir=$incdir
def4272a
 
d0674868
 Name: $name
 Description: $comment
 Version: $version
8cd6b388
 Requires: $(enabled shared || echo $requires)
5dcfe9f8
 Requires.private: $(enabled shared && echo $requires)
def4272a
 Conflicts:
8cd6b388
 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
12701f6e
 Libs.private: $(enabled shared && echo $libs)
76a448ed
 Cflags: -I\${includedir}
def4272a
 EOF
25cd5cb3
 cat <<EOF > $name/$name-uninstalled.pc
def4272a
 prefix=
 exec_prefix=
46d1ff83
 libdir=\${pcfiledir}
1d44d365
 includedir=${source_path}
def4272a
 
d0674868
 Name: $name
 Description: $comment
 Version: $version
 Requires: $requires
def4272a
 Conflicts:
12701f6e
 Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
def4272a
 Cflags: -I\${includedir}
 EOF
d0674868
 }
def4272a
 
989fb05f
 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
455ce979
 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
c0b1bc8d
 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
 pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
989fb05f
 pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"