Permalink
Cannot retrieve contributors at this time
| #!/bin/sh | |
| # | |
| # FFmpeg configure script | |
| # | |
| # Copyright (c) 2000-2002 Fabrice Bellard | |
| # Copyright (c) 2005-2008 Diego Biurrun | |
| # Copyright (c) 2005-2008 Mans Rullgard | |
| # | |
| # Prevent locale nonsense from breaking basic text processing. | |
| LC_ALL=C | |
| export LC_ALL | |
| # make sure we are running under a compatible shell | |
| # try to make this part work with most shells | |
| try_exec(){ | |
| echo "Trying shell $1" | |
| type "$1" > /dev/null 2>&1 && exec "$@" | |
| } | |
| unset foo | |
| (: ${foo%%bar}) 2> /dev/null | |
| E1="$?" | |
| (: ${foo?}) 2> /dev/null | |
| E2="$?" | |
| if test "$E1" != 0 || test "$E2" = 0; then | |
| echo "Broken shell detected. Trying alternatives." | |
| 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" "$@" | |
| fi | |
| echo "No compatible shell script interpreter found." | |
| echo "This configure script requires a POSIX-compatible shell" | |
| echo "such as bash or ksh." | |
| echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH." | |
| echo "Instead, install a working POSIX-compatible shell." | |
| echo "Disabling this configure test will create a broken FFmpeg." | |
| 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 | |
| exit 1 | |
| fi | |
| show_help(){ | |
| cat <<EOF | |
| Usage: configure [options] | |
| Options: [defaults in brackets after descriptions] | |
| Standard options: | |
| --help print this message | |
| --logfile=FILE log tests and output to FILE [config.log] | |
| --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 | |
| --disable-ffprobe disable ffprobe build | |
| --disable-ffserver disable ffserver build | |
| --disable-avdevice disable libavdevice build | |
| --disable-avcodec disable libavcodec build | |
| --disable-avcore disable libavcore build | |
| --disable-avformat disable libavformat build | |
| --disable-swscale disable libswscale build | |
| --enable-postproc enable GPLed postprocessing support [no] | |
| --disable-avfilter disable video filter support [no] | |
| --disable-pthreads disable pthreads [auto] | |
| --enable-w32threads use Win32 threads [no] | |
| --enable-x11grab enable X11 grabbing [no] | |
| --disable-network disable network support [no] | |
| --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [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 | |
| --disable-dct disable DCT code | |
| --disable-fft disable FFT code | |
| --disable-golomb disable Golomb code | |
| --disable-huffman disable Huffman code | |
| --disable-lpc disable LPC code | |
| --disable-mdct disable MDCT code | |
| --disable-rdft disable RDFT code | |
| --disable-window disable audio window functions code | |
| --disable-vaapi disable VAAPI code | |
| --disable-vdpau disable VDPAU code | |
| --disable-dxva2 disable DXVA2 code | |
| --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 | |
| --disable-everything disable all components listed below | |
| --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] | |
| --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] | |
| --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] | |
| --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] | |
| --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] | |
| --enable-librtmp enable RTMP[E] support via librtmp [no] | |
| --enable-libschroedinger enable Dirac support via libschroedinger [no] | |
| --enable-libspeex enable Speex decoding via libspeex [no] | |
| --enable-libtheora enable Theora encoding via libtheora [no] | |
| --enable-libvorbis enable Vorbis encoding via libvorbis, | |
| native implementation exists [no] | |
| --enable-libvpx enable VP8 support via libvpx [no] | |
| --enable-libx264 enable H.264 encoding via x264 [no] | |
| --enable-libxavs enable AVS encoding via xavs [no] | |
| --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): | |
| --source-path=PATH path to source code [$source_path] | |
| --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 | |
| --ar=AR use archive tool AR [$ar_default] | |
| --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) | |
| --disable-asm disable all assembler optimizations | |
| --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 | |
| --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 | |
| --malloc-prefix=PFX prefix malloc and related names with PFX | |
| --enable-sram allow use of on-chip SRAM | |
| Developer options (useful when working on FFmpeg itself): | |
| --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 | |
| --disable-stripping disable stripping of executables and shared libraries | |
| --samples=PATH location of test samples for FATE | |
| NOTE: Object files are built at the place where configure is launched. | |
| EOF | |
| exit 0 | |
| } | |
| quotes='""' | |
| log(){ | |
| echo "$@" >> $logfile | |
| } | |
| log_file(){ | |
| log BEGIN $1 | |
| pr -n -t $1 >> $logfile | |
| log END $1 | |
| } | |
| echolog(){ | |
| log "$@" | |
| echo "$@" | |
| } | |
| warn(){ | |
| log "WARNING: $*" | |
| WARNINGS="${WARNINGS}WARNING: $*\n" | |
| } | |
| die(){ | |
| echolog "$@" | |
| cat <<EOF | |
| If you think configure made a mistake, make sure you are using the latest | |
| version from SVN. If the latest version fails, report the problem to the | |
| ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net. | |
| EOF | |
| if disabled logging; then | |
| cat <<EOF | |
| Rerun configure with logging enabled (do not use --disable-logging), and | |
| include the log this produces with your report. | |
| EOF | |
| else | |
| cat <<EOF | |
| Include the log file "$logfile" produced by configure as this will help | |
| solving the problem. | |
| EOF | |
| fi | |
| exit 1 | |
| } | |
| # Avoid locale weirdness, besides we really just want to translate ASCII. | |
| toupper(){ | |
| echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | |
| } | |
| tolower(){ | |
| echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | |
| } | |
| c_escape(){ | |
| echo "$*" | sed 's/["\\]/\\\0/g' | |
| } | |
| sh_quote(){ | |
| v=$(echo "$1" | sed "s/'/'\\\\''/g") | |
| test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'" | |
| echo "$v" | |
| } | |
| filter(){ | |
| pat=$1 | |
| shift | |
| for v; do | |
| eval "case $v in $pat) echo $v ;; esac" | |
| done | |
| } | |
| map(){ | |
| m=$1 | |
| shift | |
| for v; do eval $m; done | |
| } | |
| set_all(){ | |
| value=$1 | |
| shift | |
| for var in $*; do | |
| eval $var=$value | |
| done | |
| } | |
| set_weak(){ | |
| value=$1 | |
| shift | |
| for var; do | |
| eval : \${$var:=$value} | |
| done | |
| } | |
| 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 | |
| } | |
| enable(){ | |
| set_all yes $* | |
| } | |
| disable(){ | |
| set_all no $* | |
| } | |
| enable_weak(){ | |
| set_weak yes $* | |
| } | |
| disable_weak(){ | |
| set_weak no $* | |
| } | |
| enable_safe(){ | |
| for var; do | |
| enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g') | |
| done | |
| } | |
| disable_safe(){ | |
| for var; do | |
| disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g') | |
| done | |
| } | |
| do_enable_deep(){ | |
| for var; do | |
| enabled $var && continue | |
| eval sel="\$${var}_select" | |
| eval sgs="\$${var}_suggest" | |
| pushvar var sgs | |
| enable_deep $sel | |
| popvar sgs | |
| enable_deep_weak $sgs | |
| popvar var | |
| done | |
| } | |
| enable_deep(){ | |
| do_enable_deep $* | |
| enable $* | |
| } | |
| enable_deep_weak(){ | |
| do_enable_deep $* | |
| enable_weak $* | |
| } | |
| enabled(){ | |
| test "${1#!}" = "$1" && op== || op=!= | |
| eval test "x\$${1#!}" $op "xyes" | |
| } | |
| disabled(){ | |
| test "${1#!}" = "$1" && op== || op=!= | |
| eval test "x\$${1#!}" $op "xno" | |
| } | |
| enabled_all(){ | |
| for opt; do | |
| enabled $opt || return 1 | |
| done | |
| } | |
| disabled_all(){ | |
| for opt; do | |
| disabled $opt || return 1 | |
| done | |
| } | |
| enabled_any(){ | |
| for opt; do | |
| enabled $opt && return 0 | |
| done | |
| } | |
| disabled_any(){ | |
| for opt; do | |
| disabled $opt && return 0 | |
| done | |
| return 1 | |
| } | |
| set_default(){ | |
| for opt; do | |
| eval : \${$opt:=\$${opt}_default} | |
| done | |
| } | |
| is_in(){ | |
| value=$1 | |
| shift | |
| for var in $*; do | |
| [ $var = $value ] && return 0 | |
| done | |
| return 1 | |
| } | |
| check_deps(){ | |
| for cfg; do | |
| cfg="${cfg#!}" | |
| enabled ${cfg}_checking && die "Circular dependency for $cfg." | |
| disabled ${cfg}_checking && continue | |
| enable ${cfg}_checking | |
| eval dep_all="\$${cfg}_deps" | |
| eval dep_any="\$${cfg}_deps_any" | |
| eval dep_sel="\$${cfg}_select" | |
| eval dep_sgs="\$${cfg}_suggest" | |
| eval dep_ifa="\$${cfg}_if" | |
| eval dep_ifn="\$${cfg}_if_any" | |
| 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 | |
| [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; } | |
| [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; } | |
| enabled_all $dep_all || disable $cfg | |
| enabled_any $dep_any || disable $cfg | |
| disabled_any $dep_sel && disable $cfg | |
| if enabled $cfg; then | |
| eval dep_extralibs="\$${cfg}_extralibs" | |
| test -n "$dep_extralibs" && add_extralibs $dep_extralibs | |
| enable_deep $dep_sel | |
| enable_deep_weak $dep_sgs | |
| fi | |
| disable ${cfg}_checking | |
| done | |
| } | |
| print_config(){ | |
| pfx=$1 | |
| header=$2 | |
| makefile=$3 | |
| shift 3 | |
| for cfg; do | |
| ucname="$(toupper $cfg)" | |
| if enabled $cfg; then | |
| echo "#define ${pfx}${ucname} 1" >> $header | |
| echo "${pfx}${ucname}=yes" >> $makefile | |
| else | |
| echo "#define ${pfx}${ucname} 0" >> $header | |
| echo "!${pfx}${ucname}=yes" >> $makefile | |
| fi | |
| done | |
| } | |
| print_enabled(){ | |
| test "$1" = -n && end=" " && shift || end="\n" | |
| suf=$1 | |
| shift | |
| for v; do | |
| enabled $v && printf "%s$end" ${v%$suf}; | |
| done | |
| } | |
| append(){ | |
| var=$1 | |
| shift | |
| eval "$var=\"\$$var $*\"" | |
| } | |
| prepend(){ | |
| var=$1 | |
| shift | |
| eval "$var=\"$* \$$var\"" | |
| } | |
| add_cppflags(){ | |
| append CPPFLAGS $($filter_cppflags "$@") | |
| } | |
| add_cflags(){ | |
| append CFLAGS $($filter_cflags "$@") | |
| } | |
| add_asflags(){ | |
| append ASFLAGS $($filter_asflags "$@") | |
| } | |
| add_ldflags(){ | |
| append LDFLAGS "$@" | |
| } | |
| add_extralibs(){ | |
| prepend extralibs "$@" | |
| } | |
| check_cmd(){ | |
| log "$@" | |
| "$@" >> $logfile 2>&1 | |
| } | |
| check_cc(){ | |
| log check_cc "$@" | |
| cat > $TMPC | |
| log_file $TMPC | |
| check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC | |
| } | |
| check_cpp(){ | |
| log check_cpp "$@" | |
| cat > $TMPC | |
| log_file $TMPC | |
| check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC | |
| } | |
| check_as(){ | |
| log check_as "$@" | |
| cat > $TMPC | |
| log_file $TMPC | |
| check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC | |
| } | |
| check_asm(){ | |
| log check_asm "$@" | |
| name="$1" | |
| code="$2" | |
| shift 2 | |
| disable $name | |
| check_as "$@" <<EOF && enable $name | |
| void foo(void){ __asm__ volatile($code); } | |
| EOF | |
| } | |
| check_yasm(){ | |
| log check_yasm "$@" | |
| echo "$1" > $TMPS | |
| log_file $TMPS | |
| shift 1 | |
| check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS | |
| } | |
| check_ld(){ | |
| log check_ld "$@" | |
| flags='' | |
| libs='' | |
| for f; do | |
| test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f" | |
| done | |
| check_cc $($filter_cflags $flags) || return | |
| check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs | |
| } | |
| check_cppflags(){ | |
| log check_cppflags "$@" | |
| set -- $($filter_cppflags "$@") | |
| check_cc "$@" <<EOF && append CPPFLAGS "$@" | |
| int x; | |
| EOF | |
| } | |
| check_cflags(){ | |
| log check_cflags "$@" | |
| set -- $($filter_cflags "$@") | |
| check_cc "$@" <<EOF && append CFLAGS "$@" | |
| int x; | |
| EOF | |
| } | |
| test_ldflags(){ | |
| log test_ldflags "$@" | |
| check_ld "$@" <<EOF | |
| int main(void){ return 0; } | |
| EOF | |
| } | |
| check_ldflags(){ | |
| log check_ldflags "$@" | |
| test_ldflags "$@" && add_ldflags "$@" | |
| } | |
| check_header(){ | |
| log check_header "$@" | |
| header=$1 | |
| shift | |
| disable_safe $header | |
| check_cpp "$@" <<EOF && enable_safe $header | |
| #include <$header> | |
| int x; | |
| EOF | |
| } | |
| check_func(){ | |
| log check_func "$@" | |
| func=$1 | |
| shift | |
| disable $func | |
| check_ld "$@" <<EOF && enable $func | |
| extern int $func(); | |
| int main(void){ $func(); } | |
| EOF | |
| } | |
| check_mathfunc(){ | |
| log check_mathfunc "$@" | |
| func=$1 | |
| shift | |
| disable $func | |
| check_ld "$@" <<EOF && enable $func | |
| #include <math.h> | |
| float foo(float f) { return $func(f); } | |
| int main(void){ return 0; } | |
| EOF | |
| } | |
| check_func_headers(){ | |
| log check_func_headers "$@" | |
| headers=$1 | |
| func=$2 | |
| shift 2 | |
| disable $func | |
| incs="" | |
| for hdr in $headers; do | |
| incs="$incs | |
| #include <$hdr>" | |
| done | |
| check_ld "$@" <<EOF && enable $func && enable_safe $headers | |
| $incs | |
| int main(int argc, char **argv){ | |
| return (long) $func; | |
| } | |
| EOF | |
| } | |
| check_cpp_condition(){ | |
| log check_cpp_condition "$@" | |
| header=$1 | |
| condition=$2 | |
| shift 2 | |
| check_cpp $($filter_cppflags "$@") <<EOF | |
| #include <$header> | |
| #if !($condition) | |
| #error "unsatisfied condition: $condition" | |
| #endif | |
| EOF | |
| } | |
| check_lib(){ | |
| log check_lib "$@" | |
| header="$1" | |
| func="$2" | |
| shift 2 | |
| check_header $header && check_func $func "$@" && add_extralibs "$@" | |
| } | |
| check_lib2(){ | |
| log check_lib2 "$@" | |
| headers="$1" | |
| func="$2" | |
| shift 2 | |
| check_func_headers "$headers" $func "$@" && add_extralibs "$@" | |
| } | |
| check_exec(){ | |
| check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } | |
| } | |
| check_exec_crash(){ | |
| code=$(cat) | |
| # 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. | |
| (check_exec "$@") >> $logfile 2>&1 <<EOF | |
| #include <signal.h> | |
| static void sighandler(int sig){ | |
| raise(SIGTERM); | |
| } | |
| int main(void){ | |
| signal(SIGILL, sighandler); | |
| signal(SIGFPE, sighandler); | |
| signal(SIGSEGV, sighandler); | |
| #ifdef SIGBUS | |
| signal(SIGBUS, sighandler); | |
| #endif | |
| { $code } | |
| } | |
| EOF | |
| } | |
| check_type(){ | |
| log check_type "$@" | |
| headers=$1 | |
| type=$2 | |
| shift 2 | |
| disable_safe "$type" | |
| incs="" | |
| for hdr in $headers; do | |
| incs="$incs | |
| #include <$hdr>" | |
| done | |
| check_cc "$@" <<EOF && enable_safe "$type" | |
| $incs | |
| $type v; | |
| EOF | |
| } | |
| 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 | |
| } | |
| require(){ | |
| name="$1" | |
| header="$2" | |
| func="$3" | |
| shift 3 | |
| check_lib $header $func "$@" || die "ERROR: $name not found" | |
| } | |
| require2(){ | |
| name="$1" | |
| headers="$2" | |
| func="$3" | |
| shift 3 | |
| check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" | |
| } | |
| 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 | |
| } | |
| apply(){ | |
| file=$1 | |
| shift | |
| "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" | |
| } | |
| cp_if_changed(){ | |
| cmp -s "$1" "$2" && | |
| echo "$2 is unchanged" || | |
| cp -f "$1" "$2" | |
| } | |
| # CONFIG_LIST contains configurable options, while HAVE_LIST is for | |
| # system-dependent things. | |
| COMPONENT_LIST=" | |
| bsfs | |
| decoders | |
| demuxers | |
| encoders | |
| filters | |
| hwaccels | |
| indevs | |
| muxers | |
| outdevs | |
| parsers | |
| protocols | |
| " | |
| CONFIG_LIST=" | |
| $COMPONENT_LIST | |
| aandct | |
| avcodec | |
| avcore | |
| avdevice | |
| avfilter | |
| avformat | |
| avisynth | |
| bzlib | |
| dct | |
| doc | |
| dwt | |
| dxva2 | |
| fastdiv | |
| ffmpeg | |
| ffplay | |
| ffprobe | |
| ffserver | |
| fft | |
| golomb | |
| gpl | |
| gray | |
| h264dsp | |
| h264pred | |
| hardcoded_tables | |
| huffman | |
| libdc1394 | |
| libdirac | |
| libfaac | |
| libgsm | |
| libmp3lame | |
| libnut | |
| libopencore_amrnb | |
| libopencore_amrwb | |
| libopenjpeg | |
| librtmp | |
| libschroedinger | |
| libspeex | |
| libtheora | |
| libvorbis | |
| libvpx | |
| libx264 | |
| libxavs | |
| libxvid | |
| lpc | |
| lsp | |
| mdct | |
| memalign_hack | |
| mlib | |
| mpegaudio_hp | |
| network | |
| nonfree | |
| pic | |
| postproc | |
| rdft | |
| runtime_cpudetect | |
| shared | |
| small | |
| sram | |
| static | |
| swscale | |
| swscale_alpha | |
| vaapi | |
| vdpau | |
| version3 | |
| window | |
| x11grab | |
| zlib | |
| " | |
| THREADS_LIST=' | |
| pthreads | |
| w32threads | |
| ' | |
| ARCH_LIST=' | |
| alpha | |
| arm | |
| avr32 | |
| avr32_ap | |
| avr32_uc | |
| bfin | |
| ia64 | |
| m68k | |
| mips | |
| mips64 | |
| parisc | |
| ppc | |
| ppc64 | |
| s390 | |
| sh4 | |
| sparc | |
| sparc64 | |
| tomi | |
| x86 | |
| x86_32 | |
| x86_64 | |
| ' | |
| ARCH_EXT_LIST=' | |
| altivec | |
| amd3dnow | |
| amd3dnowext | |
| armv5te | |
| armv6 | |
| armv6t2 | |
| armvfp | |
| iwmmxt | |
| mmi | |
| mmx | |
| mmx2 | |
| neon | |
| ppc4xx | |
| sse | |
| ssse3 | |
| vis | |
| ' | |
| HAVE_LIST_PUB=' | |
| bigendian | |
| fast_unaligned | |
| ' | |
| HAVE_LIST=" | |
| $ARCH_EXT_LIST | |
| $HAVE_LIST_PUB | |
| $THREADS_LIST | |
| alsa_asoundlib_h | |
| altivec_h | |
| arpa_inet_h | |
| attribute_may_alias | |
| attribute_packed | |
| bswap | |
| closesocket | |
| cmov | |
| conio_h | |
| dcbzl | |
| 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 | |
| dlfcn_h | |
| dlopen | |
| dos_paths | |
| ebp_available | |
| ebx_available | |
| exp2 | |
| exp2f | |
| fast_64bit | |
| fast_clz | |
| fast_cmov | |
| fcntl | |
| fork | |
| getaddrinfo | |
| gethrtime | |
| GetProcessMemoryInfo | |
| GetProcessTimes | |
| getrusage | |
| gnu_as | |
| struct_rusage_ru_maxrss | |
| ibm_asm | |
| inet_aton | |
| inline_asm | |
| isatty | |
| ldbrx | |
| libdc1394_1 | |
| libdc1394_2 | |
| llrint | |
| llrintf | |
| local_aligned_16 | |
| local_aligned_8 | |
| log2 | |
| log2f | |
| loongson | |
| lrint | |
| lrintf | |
| lzo1x_999_compress | |
| machine_ioctl_bt848_h | |
| machine_ioctl_meteor_h | |
| malloc_h | |
| memalign | |
| mkstemp | |
| pld | |
| posix_memalign | |
| round | |
| roundf | |
| sdl | |
| sdl_video_size | |
| setmode | |
| socklen_t | |
| soundcard_h | |
| poll_h | |
| setrlimit | |
| strerror_r | |
| struct_addrinfo | |
| struct_ipv6_mreq | |
| struct_sockaddr_in6 | |
| struct_sockaddr_sa_len | |
| struct_sockaddr_storage | |
| symver | |
| symver_gnu_asm | |
| symver_asm_label | |
| sys_mman_h | |
| sys_resource_h | |
| sys_select_h | |
| sys_soundcard_h | |
| sys_videoio_h | |
| ten_operands | |
| termios_h | |
| threads | |
| truncf | |
| vfp_args | |
| VirtualAlloc | |
| winsock2_h | |
| xform_asm | |
| yasm | |
| " | |
| # options emitted with CONFIG_ prefix but not available on command line | |
| CONFIG_EXTRA=" | |
| avutil | |
| gplv3 | |
| lgplv3 | |
| " | |
| CMDLINE_SELECT=" | |
| $ARCH_EXT_LIST | |
| $CONFIG_LIST | |
| $THREADS_LIST | |
| asm | |
| cross_compile | |
| debug | |
| extra_warnings | |
| logging | |
| optimizations | |
| stripping | |
| yasm | |
| " | |
| PATHS_LIST=' | |
| bindir | |
| datadir | |
| incdir | |
| libdir | |
| mandir | |
| prefix | |
| shlibdir | |
| ' | |
| CMDLINE_SET=" | |
| $PATHS_LIST | |
| ar | |
| arch | |
| as | |
| build_suffix | |
| cc | |
| cpu | |
| cross_prefix | |
| dep_cc | |
| extra_version | |
| host_cc | |
| host_cflags | |
| host_ldflags | |
| host_libs | |
| host_os | |
| ld | |
| logfile | |
| malloc_prefix | |
| nm | |
| samples | |
| source_path | |
| strip | |
| sysinclude | |
| sysroot | |
| target_exec | |
| target_os | |
| target_path | |
| " | |
| CMDLINE_APPEND=" | |
| extra_cflags | |
| " | |
| # code dependency declarations | |
| # architecture extensions | |
| armv5te_deps="arm" | |
| armv6_deps="arm" | |
| armv6t2_deps="arm" | |
| armvfp_deps="arm" | |
| iwmmxt_deps="arm" | |
| neon_deps="arm" | |
| mmi_deps="mips" | |
| altivec_deps="ppc" | |
| ppc4xx_deps="ppc" | |
| vis_deps="sparc" | |
| x86_64_suggest="cmov fast_cmov" | |
| amd3dnow_deps="mmx" | |
| amd3dnowext_deps="amd3dnow" | |
| mmx_deps="x86" | |
| mmx2_deps="mmx" | |
| sse_deps="mmx" | |
| ssse3_deps="sse" | |
| fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" | |
| fast_clz_if_any="alpha armv5te avr32 mips ppc x86" | |
| fast_unaligned_if_any="armv6 ppc x86" | |
| need_memalign="altivec neon sse" | |
| inline_asm_deps="!tms470" | |
| symver_if_any="symver_asm_label symver_gnu_asm" | |
| # subsystems | |
| dct_select="rdft" | |
| mdct_select="fft" | |
| rdft_select="fft" | |
| lpc_select="window" | |
| dct_select="rdft" | |
| # decoders / encoders / hardware accelerators | |
| aac_decoder_select="mdct rdft" | |
| aac_encoder_select="mdct" | |
| ac3_decoder_select="mdct ac3_parser" | |
| alac_encoder_select="lpc" | |
| als_encoder_select="lpc" | |
| amrnb_decoder_select="lsp" | |
| atrac1_decoder_select="mdct" | |
| atrac3_decoder_select="mdct" | |
| binkaudio_dct_decoder_select="mdct rdft dct" | |
| binkaudio_rdft_decoder_select="mdct rdft" | |
| cavs_decoder_select="golomb" | |
| cook_decoder_select="mdct" | |
| cscd_decoder_suggest="zlib" | |
| dca_decoder_select="mdct" | |
| dnxhd_encoder_select="aandct" | |
| dxa_decoder_select="zlib" | |
| eac3_decoder_select="ac3_decoder" | |
| eamad_decoder_select="aandct" | |
| eatgq_decoder_select="aandct" | |
| eatqi_decoder_select="aandct" | |
| ffv1_decoder_select="golomb" | |
| flac_decoder_select="golomb" | |
| flac_encoder_select="golomb lpc" | |
| flashsv_decoder_select="zlib" | |
| flashsv_encoder_select="zlib" | |
| flv_decoder_select="h263_decoder" | |
| flv_encoder_select="h263_encoder" | |
| fraps_decoder_select="huffman" | |
| h261_encoder_select="aandct" | |
| h263_decoder_select="h263_parser" | |
| h263_encoder_select="aandct" | |
| h263_vaapi_hwaccel_select="vaapi h263_decoder" | |
| h263i_decoder_select="h263_decoder" | |
| h263p_encoder_select="h263_encoder" | |
| h264_decoder_select="golomb h264dsp h264pred" | |
| h264_dxva2_hwaccel_deps="dxva2api_h" | |
| h264_dxva2_hwaccel_select="dxva2 h264_decoder" | |
| h264_vaapi_hwaccel_select="vaapi" | |
| h264_vdpau_decoder_select="vdpau h264_decoder" | |
| imc_decoder_select="fft mdct" | |
| jpegls_decoder_select="golomb" | |
| jpegls_encoder_select="golomb" | |
| ljpeg_encoder_select="aandct" | |
| loco_decoder_select="golomb" | |
| mjpeg_encoder_select="aandct" | |
| mlp_decoder_select="mlp_parser" | |
| mp1float_decoder_select="dct" | |
| mp2float_decoder_select="dct" | |
| mp3adufloat_decoder_select="dct" | |
| mp3float_decoder_select="dct" | |
| mp3on4float_decoder_select="dct" | |
| mpeg1video_encoder_select="aandct" | |
| mpeg2video_encoder_select="aandct" | |
| mpeg4_decoder_select="h263_decoder mpeg4video_parser" | |
| mpeg4_encoder_select="h263_encoder" | |
| mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder" | |
| mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder" | |
| mpeg2_dxva2_hwaccel_deps="dxva2api_h" | |
| mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder" | |
| mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder" | |
| mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder" | |
| mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder" | |
| mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" | |
| mpeg_xvmc_decoder_select="mpegvideo_decoder" | |
| msmpeg4v1_decoder_select="h263_decoder" | |
| msmpeg4v1_encoder_select="h263_encoder" | |
| msmpeg4v2_decoder_select="h263_decoder" | |
| msmpeg4v2_encoder_select="h263_encoder" | |
| msmpeg4v3_decoder_select="h263_decoder" | |
| msmpeg4v3_encoder_select="h263_encoder" | |
| nellymoser_decoder_select="mdct" | |
| nellymoser_encoder_select="mdct" | |
| png_decoder_select="zlib" | |
| png_encoder_select="zlib" | |
| qcelp_decoder_select="lsp" | |
| qdm2_decoder_select="mdct rdft" | |
| ra_144_encoder_select="lpc" | |
| rv10_decoder_select="h263_decoder" | |
| rv10_encoder_select="h263_encoder" | |
| rv20_decoder_select="h263_decoder" | |
| rv20_encoder_select="h263_encoder" | |
| rv30_decoder_select="golomb h264pred" | |
| rv40_decoder_select="golomb h264pred" | |
| shorten_decoder_select="golomb" | |
| sipr_decoder_select="lsp" | |
| snow_decoder_select="dwt" | |
| snow_encoder_select="aandct dwt" | |
| sonic_decoder_select="golomb" | |
| sonic_encoder_select="golomb" | |
| sonic_ls_encoder_select="golomb" | |
| svq1_encoder_select="aandct" | |
| svq3_decoder_select="golomb h264dsp h264pred" | |
| svq3_decoder_suggest="zlib" | |
| theora_decoder_select="vp3_decoder" | |
| tiff_decoder_suggest="zlib" | |
| tiff_encoder_suggest="zlib" | |
| truehd_decoder_select="mlp_decoder" | |
| tscc_decoder_select="zlib" | |
| twinvq_decoder_select="mdct lsp" | |
| vc1_decoder_select="h263_decoder" | |
| vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex" | |
| vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" | |
| vc1_vaapi_hwaccel_select="vaapi vc1_decoder" | |
| vc1_vdpau_decoder_select="vdpau vc1_decoder" | |
| vorbis_decoder_select="mdct" | |
| vorbis_encoder_select="mdct" | |
| vp6_decoder_select="huffman" | |
| vp6a_decoder_select="vp6_decoder" | |
| vp6f_decoder_select="vp6_decoder" | |
| vp8_decoder_select="h264pred" | |
| wmapro_decoder_select="mdct" | |
| wmav1_decoder_select="mdct" | |
| wmav1_encoder_select="mdct" | |
| wmav2_decoder_select="mdct" | |
| wmav2_encoder_select="mdct" | |
| wmavoice_decoder_select="lsp rdft dct mdct" | |
| wmv1_decoder_select="h263_decoder" | |
| wmv1_encoder_select="h263_encoder" | |
| wmv2_decoder_select="h263_decoder" | |
| wmv2_encoder_select="h263_encoder" | |
| wmv3_decoder_select="vc1_decoder" | |
| wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" | |
| wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" | |
| wmv3_vdpau_decoder_select="vc1_vdpau_decoder" | |
| zlib_decoder_select="zlib" | |
| zlib_encoder_select="zlib" | |
| zmbv_decoder_select="zlib" | |
| zmbv_encoder_select="zlib" | |
| vaapi_deps="va_va_h" | |
| vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" | |
| # parsers | |
| h264_parser_select="golomb h264dsp h264pred" | |
| # external libraries | |
| libdirac_decoder_deps="libdirac !libschroedinger" | |
| libdirac_encoder_deps="libdirac" | |
| libfaac_encoder_deps="libfaac" | |
| libgsm_decoder_deps="libgsm" | |
| libgsm_encoder_deps="libgsm" | |
| libgsm_ms_decoder_deps="libgsm" | |
| libgsm_ms_encoder_deps="libgsm" | |
| libmp3lame_encoder_deps="libmp3lame" | |
| libopencore_amrnb_decoder_deps="libopencore_amrnb" | |
| libopencore_amrnb_encoder_deps="libopencore_amrnb" | |
| libopencore_amrwb_decoder_deps="libopencore_amrwb" | |
| libopenjpeg_decoder_deps="libopenjpeg" | |
| libschroedinger_decoder_deps="libschroedinger" | |
| libschroedinger_encoder_deps="libschroedinger" | |
| libspeex_decoder_deps="libspeex" | |
| libtheora_encoder_deps="libtheora" | |
| libvorbis_encoder_deps="libvorbis" | |
| libvpx_decoder_deps="libvpx" | |
| libvpx_encoder_deps="libvpx" | |
| libx264_encoder_deps="libx264" | |
| libxavs_encoder_deps="libxavs" | |
| libxvid_encoder_deps="libxvid" | |
| # demuxers / muxers | |
| ac3_demuxer_deps="ac3_parser" | |
| asf_stream_muxer_select="asf_muxer" | |
| avisynth_demuxer_deps="avisynth" | |
| dirac_demuxer_deps="dirac_parser" | |
| eac3_demuxer_select="ac3_parser" | |
| ipod_muxer_select="mov_muxer" | |
| libnut_demuxer_deps="libnut" | |
| libnut_muxer_deps="libnut" | |
| matroska_audio_muxer_select="matroska_muxer" | |
| matroska_demuxer_suggest="zlib bzlib" | |
| mov_demuxer_suggest="zlib" | |
| mp3_demuxer_deps="mpegaudio_parser" | |
| mp4_muxer_select="mov_muxer" | |
| mpegtsraw_demuxer_select="mpegts_demuxer" | |
| mxf_d10_muxer_select="mxf_muxer" | |
| ogg_demuxer_select="golomb" | |
| psp_muxer_select="mov_muxer" | |
| rtsp_demuxer_deps="sdp_demuxer" | |
| rtsp_muxer_deps="sdp_demuxer" | |
| rtsp_muxer_select="rtp_muxer" | |
| sdp_demuxer_deps="rtp_protocol mpegts_demuxer" | |
| sdp_demuxer_select="asf_demuxer rm_demuxer" | |
| spdif_muxer_select="aac_parser" | |
| tg2_muxer_select="mov_muxer" | |
| tgp_muxer_select="mov_muxer" | |
| w64_demuxer_deps="wav_demuxer" | |
| # indevs / outdevs | |
| 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" | |
| dv1394_indev_deps="dv1394 dv_demuxer" | |
| jack_indev_deps="jack_jack_h" | |
| libdc1394_indev_deps="libdc1394" | |
| oss_indev_deps_any="soundcard_h sys_soundcard_h" | |
| oss_outdev_deps_any="soundcard_h sys_soundcard_h" | |
| v4l_indev_deps="linux_videodev_h" | |
| v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" | |
| vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" | |
| vfwcap_indev_extralibs="-lavicap32" | |
| x11_grab_device_indev_deps="x11grab XShmCreateImage" | |
| x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" | |
| # protocols | |
| gopher_protocol_deps="network" | |
| http_protocol_deps="network" | |
| http_protocol_select="tcp_protocol" | |
| mmst_protocol_deps="network" | |
| rtmp_protocol_select="tcp_protocol" | |
| rtp_protocol_select="udp_protocol" | |
| tcp_protocol_deps="network" | |
| udp_protocol_deps="network" | |
| # libraries | |
| avdevice_deps="avcodec avformat" | |
| avformat_deps="avcodec" | |
| # programs | |
| ffmpeg_deps="avcodec avformat swscale" | |
| ffmpeg_select="buffer_filter" | |
| ffplay_deps="avcodec avformat swscale sdl" | |
| ffplay_select="rdft" | |
| ffprobe_deps="avcodec avformat" | |
| ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer" | |
| ffserver_extralibs='$ldl' | |
| doc_deps="texi2html" | |
| # tests | |
| test_deps(){ | |
| suf1=$1 | |
| suf2=$2 | |
| shift 2 | |
| for v; do | |
| dep=${v%=*} | |
| tests=${v#*=} | |
| for name in ${tests}; do | |
| eval ${name}_test_deps="'${dep}$suf1 ${dep}$suf2'" | |
| done | |
| done | |
| } | |
| set_ne_test_deps(){ | |
| eval ${1}_be_test_deps="bigendian" | |
| eval ${1}_le_test_deps="!bigendian" | |
| } | |
| test_deps _encoder _decoder \ | |
| ac3 \ | |
| adpcm_g726=g726 \ | |
| adpcm_ima_qt \ | |
| adpcm_ima_wav \ | |
| adpcm_ms \ | |
| adpcm_swf \ | |
| adpcm_yamaha=adpcm_yam \ | |
| alac \ | |
| asv1 \ | |
| asv2 \ | |
| bmp \ | |
| dnxhd="hdxhd_1080i dnxhd_720p dnxhd_720p_rd" \ | |
| 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" \ | |
| msmpeg4v3=msmpeg4 \ | |
| msmpeg4v2 \ | |
| pbm=pbmpipe \ | |
| pcx \ | |
| pgm="pgm pgmpipe" \ | |
| 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 \ | |
| mxf \ | |
| nut \ | |
| ogg \ | |
| rawvideo=pixfmt \ | |
| rm \ | |
| swf \ | |
| mpegts=ts \ | |
| voc \ | |
| wav \ | |
| yuv4mpegpipe=yuv4mpeg \ | |
| mpg_test_deps="mpeg1system_muxer mpegps_demuxer" | |
| set_ne_test_deps pixdesc | |
| set_ne_test_deps pixfmts_crop | |
| set_ne_test_deps pixfmts_null | |
| set_ne_test_deps pixfmts_pad | |
| set_ne_test_deps pixfmts_scale | |
| set_ne_test_deps pixfmts_vflip | |
| # default parameters | |
| logfile="config.log" | |
| # installation paths | |
| prefix_default="/usr/local" | |
| bindir_default='${prefix}/bin' | |
| datadir_default='${prefix}/share/ffmpeg' | |
| incdir_default='${prefix}/include' | |
| libdir_default='${prefix}/lib' | |
| mandir_default='${prefix}/share/man' | |
| shlibdir_default="$libdir_default" | |
| # toolchain | |
| ar_default="ar" | |
| cc_default="gcc" | |
| cc_version=\"unknown\" | |
| host_cc_default="gcc" | |
| ln_s="ln -sf" | |
| nm_default="nm" | |
| objformat="elf" | |
| ranlib="ranlib" | |
| strip_default="strip" | |
| yasmexe="yasm" | |
| nogas=":" | |
| nm_opts='-g' | |
| # machine | |
| arch_default=$(uname -m) | |
| cpu="generic" | |
| # OS | |
| target_os_default=$(tolower $(uname -s)) | |
| host_os=$target_os_default | |
| # configurable options | |
| enable avcodec | |
| enable avcore | |
| enable avdevice | |
| enable avfilter | |
| enable avformat | |
| enable avutil | |
| enable asm | |
| enable debug | |
| enable doc | |
| enable fastdiv | |
| enable ffmpeg | |
| enable ffplay | |
| enable ffprobe | |
| enable ffserver | |
| enable mpegaudio_hp | |
| enable network | |
| enable optimizations | |
| enable protocols | |
| enable static | |
| enable stripping | |
| enable swscale | |
| enable swscale_alpha | |
| # build settings | |
| SHFLAGS='-shared -Wl,-soname,$$(@F)' | |
| FFSERVERLDFLAGS=-Wl,-E | |
| LIBPREF="lib" | |
| LIBSUF=".a" | |
| FULLNAME='$(NAME)$(BUILDSUF)' | |
| LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' | |
| SLIBPREF="lib" | |
| SLIBSUF=".so" | |
| SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' | |
| SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' | |
| SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' | |
| LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' | |
| CC_O='-o $@' | |
| host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall' | |
| host_libs='-lm' | |
| target_path='$(CURDIR)' | |
| # 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 | |
| DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)' | |
| DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM' | |
| # find source path | |
| source_path="$(dirname "$0")" | |
| enable source_path_used | |
| if test -f configure; then | |
| source_path="$(pwd)" | |
| disable source_path_used | |
| else | |
| source_path="$(cd "$source_path"; pwd)" | |
| echo "$source_path" | grep -q '[[:blank:]]' && | |
| die "Out of tree builds are impossible with whitespace in source path." | |
| test -e "$source_path/config.h" && | |
| die "Out of tree builds are impossible with config.h in source dir." | |
| fi | |
| for v in "$@"; do | |
| r=${v#*=} | |
| l=${v%"$r"} | |
| r=$(sh_quote "$r") | |
| FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" | |
| done | |
| find_things(){ | |
| thing=$1 | |
| pattern=$2 | |
| file=$source_path/$3 | |
| sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file" | |
| } | |
| ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c) | |
| DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c) | |
| HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c) | |
| 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) | |
| OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) | |
| INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) | |
| PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) | |
| FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) | |
| find_tests(){ | |
| map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]') | |
| } | |
| ACODEC_TESTS=$(find_tests acodec) | |
| VCODEC_TESTS=$(find_tests vsynth1) | |
| LAVF_TESTS=$(find_tests lavf) | |
| LAVFI_TESTS=$(find_tests lavfi) | |
| SEEK_TESTS=$(find_tests seek seek_) | |
| pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST)) | |
| for n in $COMPONENT_LIST; do | |
| v=$(toupper ${n%s})_LIST | |
| eval enable \$$v | |
| eval ${n}_if_any="\$$v" | |
| done | |
| enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS | |
| die_unknown(){ | |
| echo "Unknown option \"$1\"." | |
| echo "See $0 --help for available options." | |
| exit 1 | |
| } | |
| show_list() { | |
| suffix=_$1 | |
| shift | |
| echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t | |
| exit 0 | |
| } | |
| for opt do | |
| optval="${opt#*=}" | |
| case "$opt" in | |
| --extra-ldflags=*) add_ldflags $optval | |
| ;; | |
| --extra-libs=*) add_extralibs $optval | |
| ;; | |
| --disable-devices) disable $INDEV_LIST $OUTDEV_LIST | |
| ;; | |
| --enable-debug=*) debuglevel="$optval" | |
| ;; | |
| --disable-everything) | |
| map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST | |
| ;; | |
| --enable-*=*|--disable-*=*) | |
| eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') | |
| is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" | |
| eval list=\$$(toupper $thing)_LIST | |
| name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} | |
| $action $(filter "$name" $list) | |
| ;; | |
| --enable-?*|--disable-?*) | |
| eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') | |
| if is_in $option $COMPONENT_LIST; then | |
| test $action = disable && action=unset | |
| eval $action \$$(toupper ${option%s})_LIST | |
| elif is_in $option $CMDLINE_SELECT; then | |
| $action $option | |
| else | |
| die_unknown $opt | |
| fi | |
| ;; | |
| --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 | |
| ;; | |
| *) | |
| optname="${opt%%=*}" | |
| optname="${optname#--}" | |
| optname=$(echo "$optname" | sed 's/-/_/g') | |
| 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 | |
| ;; | |
| esac | |
| done | |
| disabled logging && logfile=/dev/null | |
| echo "# $0 $FFMPEG_CONFIGURATION" > $logfile | |
| set >> $logfile | |
| test -n "$cross_prefix" && enable cross_compile | |
| 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 | |
| ar_default="${cross_prefix}${ar_default}" | |
| cc_default="${cross_prefix}${cc_default}" | |
| nm_default="${cross_prefix}${nm_default}" | |
| ranlib="${cross_prefix}${ranlib}" | |
| strip_default="${cross_prefix}${strip_default}" | |
| sysinclude_default="${sysroot}/usr/include" | |
| set_default cc nm strip sysinclude | |
| enabled cross_compile || host_cc_default=$cc | |
| set_default host_cc | |
| exesuf() { | |
| case $1 in | |
| mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;; | |
| esac | |
| } | |
| EXESUF=$(exesuf $target_os) | |
| HOSTEXESUF=$(exesuf $host_os) | |
| # set temporary file name | |
| : ${TMPDIR:=$TEMPDIR} | |
| : ${TMPDIR:=$TMP} | |
| : ${TMPDIR:=/tmp} | |
| if ! check_cmd type mktemp; then | |
| # simple replacement for missing mktemp | |
| # NOT SAFE FOR GENERAL USE | |
| mktemp(){ | |
| echo "${2%XXX*}.${HOSTNAME}.${UID}.$$" | |
| } | |
| fi | |
| tmpfile(){ | |
| tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 && | |
| (set -C; exec > $tmp) 2>/dev/null || | |
| die "Unable to create temporary file in $TMPDIR." | |
| append TMPFILES $tmp | |
| eval $1=$tmp | |
| } | |
| trap 'rm -f -- $TMPFILES' EXIT | |
| trap exit HUP INT TERM | |
| tmpfile TMPC .c | |
| tmpfile TMPE $EXESUF | |
| tmpfile TMPH .h | |
| tmpfile TMPO .o | |
| tmpfile TMPS .S | |
| tmpfile TMPV .ver | |
| tmpfile TMPSH .sh | |
| unset -f mktemp | |
| # 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 | |
| filter_cflags=echo | |
| filter_cppflags=echo | |
| filter_asflags=echo | |
| if $cc -v 2>&1 | grep -qi ^gcc; then | |
| cc_type=gcc | |
| cc_version=__VERSION__ | |
| gcc_extra_ver=$(expr "$($cc --version | head -n1)" : '.*\((.*)\)') | |
| cc_ident="gcc $($cc -dumpversion) $gcc_extra_ver" | |
| if ! $cc -dumpversion | grep -q '^2\.'; then | |
| CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' | |
| AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' | |
| fi | |
| speed_cflags='-O3' | |
| size_cflags='-Os' | |
| elif $cc --version 2>/dev/null | grep -q Intel; then | |
| cc_type=icc | |
| cc_version="AV_STRINGIFY(__INTEL_COMPILER)" | |
| cc_ident=$($cc --version | head -n1) | |
| CC_DEPFLAGS='-MMD' | |
| AS_DEPFLAGS='-MMD' | |
| speed_cflags='-O3' | |
| size_cflags='-Os' | |
| noopt_cflags='-O1' | |
| elif $cc -v 2>&1 | grep -q xlc; then | |
| cc_type=xlc | |
| cc_version="AV_STRINGIFY(__IBMC__)" | |
| cc_ident=$($cc -qversion 2>/dev/null | head -n1) | |
| speed_cflags='-O5' | |
| size_cflags='-O5 -qcompact' | |
| elif $cc -V 2>/dev/null | grep -q Compaq; then | |
| cc_type=ccc | |
| cc_version="AV_STRINGIFY(__DECC_VER)" | |
| cc_ident=$($cc -V | head -n1 | cut -d' ' -f1-3) | |
| DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M' | |
| debuglevel=3 | |
| add_ldflags -Wl,-z,now # calls to libots crash without this | |
| speed_cflags='-fast' | |
| size_cflags='-O1' | |
| elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then | |
| test -d "$sysroot" || die "No valid sysroot specified." | |
| cc_type=armcc | |
| cc_version="AV_STRINGIFY(__ARMCC_VERSION)" | |
| cc_ident=$($cc --vsn | head -n1) | |
| 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." | |
| cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc" | |
| as_default="${cross_prefix}gcc" | |
| CC_DEPFLAGS='-MMD' | |
| AS_DEPFLAGS='-MMD' | |
| speed_cflags='-O3' | |
| size_cflags='-Os' | |
| elif $cc -version 2>/dev/null | grep -q TMS470; then | |
| cc_type=tms470 | |
| cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)" | |
| cc_ident=$($cc -version | head -n1 | tr -s ' ') | |
| 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__= | |
| CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)' | |
| AS_DEPFLAGS='-MMD' | |
| speed_cflags='-O3 -mf=5' | |
| size_cflags='-O3 -mf=2' | |
| 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 ;; | |
| -mfpu=vfpv3) echo --float_support=vfpv3 ;; | |
| -msoft-float) echo --float_support=vfplib ;; | |
| -O[0-3]|-mf=*) echo $flag ;; | |
| -g) echo -g -mn ;; | |
| -pds=*) echo $flag ;; | |
| esac | |
| done | |
| } | |
| elif $cc -v 2>&1 | grep -q clang; then | |
| cc_type=clang | |
| $cc -dM -E $TMPC | grep -q __clang_version__ && | |
| cc_version=__clang_version__ || cc_version=__VERSION__ | |
| cc_ident=$($cc --version | head -n1) | |
| CC_DEPFLAGS='-MMD' | |
| AS_DEPFLAGS='-MMD' | |
| speed_cflags='-O3' | |
| size_cflags='-Os' | |
| elif $cc -V 2>&1 | grep -q Sun; then | |
| cc_type=suncc | |
| cc_version="AV_STRINGIFY(__SUNPRO_C)" | |
| cc_ident=$($cc -V 2>&1 | head -n1 | cut -d' ' -f 2-) | |
| DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' | |
| DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1' | |
| speed_cflags='-O5' | |
| size_cflags='-O5 -xspace' | |
| filter_cflags=suncc_flags | |
| suncc_flags(){ | |
| for flag; do | |
| case $flag in | |
| -march=*|-mcpu=*) | |
| case "${flag#*=}" in | |
| native) echo -xtarget=native ;; | |
| v9|niagara) echo -xarch=sparc ;; | |
| ultrasparc) echo -xarch=sparcvis ;; | |
| ultrasparc3|niagara2) echo -xarch=sparcvis2 ;; | |
| 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 | |
| } | |
| elif $cc -v 2>&1 | grep -q PathScale; then | |
| 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' | |
| fi | |
| test -n "$cc_type" && enable $cc_type || | |
| warn "Unknown C compiler $cc, unable to select optimal CFLAGS" | |
| : ${as_default:=$cc} | |
| : ${dep_cc_default:=$cc} | |
| : ${ld_default:=$cc} | |
| set_default ar as dep_cc ld | |
| test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD | |
| test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD | |
| add_cflags $extra_cflags | |
| add_asflags $extra_cflags | |
| if test -n "$sysroot"; then | |
| case "$cc_type" in | |
| gcc) | |
| add_cppflags --sysroot="$sysroot" | |
| add_ldflags --sysroot="$sysroot" | |
| ;; | |
| tms470) | |
| add_cppflags -I"$sysinclude" | |
| add_ldflags --sysroot="$sysroot" | |
| ;; | |
| clang) | |
| add_cppflags -isysroot "$sysroot" | |
| add_ldflags -isysroot "$sysroot" | |
| ;; | |
| esac | |
| fi | |
| if test "$cpu" = host; then | |
| enabled cross_compile && die "--cpu=host makes no sense when cross-compiling." | |
| case "$cc_type" in | |
| gcc) | |
| check_native(){ | |
| $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return | |
| sed -n "/$1=/{ | |
| s/.*$1=\\([^ ]*\\).*/\\1/ | |
| p | |
| q | |
| }" $TMPE | |
| } | |
| cpu=$(check_native -march || check_native -mcpu) | |
| ;; | |
| esac | |
| test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc" | |
| fi | |
| # Deal with common $arch aliases | |
| case "$arch" in | |
| arm*) | |
| arch="arm" | |
| ;; | |
| mips|mipsel|IP*) | |
| arch="mips" | |
| ;; | |
| mips64*) | |
| arch="mips" | |
| subarch="mips64" | |
| ;; | |
| parisc|hppa) | |
| arch="parisc" | |
| ;; | |
| parisc64|hppa64) | |
| arch="parisc" | |
| subarch="parisc64" | |
| ;; | |
| "Power Macintosh"|ppc|powerpc) | |
| arch="ppc" | |
| ;; | |
| ppc64|powerpc64) | |
| arch="ppc" | |
| subarch="ppc64" | |
| ;; | |
| s390|s390x) | |
| arch="s390" | |
| ;; | |
| sh4|sh) | |
| arch="sh4" | |
| ;; | |
| sun4u|sparc64) | |
| arch="sparc" | |
| subarch="sparc64" | |
| ;; | |
| i[3-6]86|i86pc|BePC|x86_64|amd64) | |
| arch="x86" | |
| ;; | |
| esac | |
| is_in $arch $ARCH_LIST || warn "unknown architecture $arch" | |
| enable $arch | |
| # Add processor-specific flags | |
| if test "$cpu" = generic; then | |
| : do nothing | |
| elif enabled ppc; then | |
| case $(tolower $cpu) in | |
| 601|ppc601|powerpc601) | |
| cpuflags="-mcpu=601" | |
| disable altivec | |
| ;; | |
| 603*|ppc603*|powerpc603*) | |
| cpuflags="-mcpu=603" | |
| disable altivec | |
| ;; | |
| 604*|ppc604*|powerpc604*) | |
| cpuflags="-mcpu=604" | |
| disable altivec | |
| ;; | |
| g3|75*|ppc75*|powerpc75*) | |
| cpuflags="-mcpu=750 -mpowerpc-gfxopt" | |
| disable altivec | |
| ;; | |
| g4|745*|ppc745*|powerpc745*) | |
| cpuflags="-mcpu=7450 -mpowerpc-gfxopt" | |
| ;; | |
| 74*|ppc74*|powerpc74*) | |
| cpuflags="-mcpu=7400 -mpowerpc-gfxopt" | |
| ;; | |
| g5|970|ppc970|powerpc970|power4*) | |
| cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" | |
| ;; | |
| cell) | |
| cpuflags="-mcpu=cell" | |
| enable ldbrx | |
| ;; | |
| e500v2) | |
| cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" | |
| disable altivec | |
| ;; | |
| e500) | |
| cpuflags="-mcpu=8540 -mhard-float" | |
| disable altivec | |
| ;; | |
| esac | |
| elif enabled x86; then | |
| 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) | |
| i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona) | |
| 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 | |
| elif enabled sparc; then | |
| case $cpu in | |
| niagara) | |
| cpuflags="-mcpu=$cpu" | |
| disable vis | |
| ;; | |
| sparc64) | |
| cpuflags="-mcpu=v9" | |
| ;; | |
| esac | |
| elif enabled arm; then | |
| case $cpu in | |
| armv*) | |
| cpuflags="-march=$cpu" | |
| subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') | |
| ;; | |
| *) | |
| cpuflags="-mcpu=$cpu" | |
| 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 | |
| ;; | |
| esac | |
| elif enabled alpha; then | |
| enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu" | |
| elif enabled bfin; then | |
| cpuflags="-mcpu=$cpu" | |
| elif enabled mips; then | |
| cpuflags="-march=$cpu" | |
| elif enabled avr32; then | |
| 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 | |
| fi | |
| add_cflags $cpuflags | |
| add_asflags $cpuflags | |
| # 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 | |
| add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 | |
| check_cflags -std=c99 | |
| check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64 | |
| #include <stdlib.h> | |
| EOF | |
| check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE | |
| #include <stdlib.h> | |
| EOF | |
| check_host_cflags -std=c99 | |
| case "$arch" in | |
| alpha|ia64|mips|parisc|sparc) | |
| spic=$shared | |
| ;; | |
| x86) | |
| subarch="x86_32" | |
| check_cc <<EOF && subarch="x86_64" | |
| int test[(int)sizeof(char*) - 7]; | |
| EOF | |
| if test "$subarch" = "x86_64"; then | |
| spic=$shared | |
| fi | |
| ;; | |
| esac | |
| enable $subarch | |
| enabled spic && enable pic | |
| # OS specific | |
| case $target_os in | |
| haiku) | |
| prefix_default="/boot/common" | |
| network_extralibs="-lnetwork" | |
| ;; | |
| sunos) | |
| FFSERVERLDFLAGS="" | |
| SHFLAGS='-shared -Wl,-h,$$(@F)' | |
| enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS" | |
| network_extralibs="-lsocket -lnsl" | |
| add_cppflags -D__EXTENSIONS__ | |
| nm_opts='-P -g' | |
| ;; | |
| netbsd) | |
| oss_indev_extralibs="-lossaudio" | |
| oss_outdev_extralibs="-lossaudio" | |
| add_cppflags -D_XOPEN_SOURCE=600 | |
| ;; | |
| openbsd) | |
| enable malloc_aligned | |
| # On OpenBSD 4.5. the compiler does not use PIC unless | |
| # explicitly using -fPIC. FFmpeg builds fine without PIC, | |
| # however the generated executable will not do anything | |
| # (simply quits with exit-code 1, no crash, no output). | |
| # Thus explicitly enable PIC here. | |
| enable pic | |
| SHFLAGS='-shared' | |
| oss_indev_extralibs="-lossaudio" | |
| oss_outdev_extralibs="-lossaudio" | |
| ;; | |
| freebsd|dragonfly) | |
| enable malloc_aligned | |
| ;; | |
| bsd/os) | |
| add_extralibs -lpoll -lgnugetopt | |
| strip="strip -d" | |
| ;; | |
| darwin) | |
| enable malloc_aligned | |
| gas="gas-preprocessor.pl $cc" | |
| enabled ppc && add_asflags -force_cpusubtype_ALL | |
| SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress' | |
| strip="${strip} -x" | |
| add_ldflags -Wl,-dynamic,-search_paths_first | |
| SLIBSUF=".dylib" | |
| SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' | |
| SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' | |
| FFSERVERLDFLAGS=-Wl,-bind_at_load | |
| objformat="macho" | |
| enabled x86_64 && objformat="macho64" | |
| enabled_any pic shared || | |
| { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } | |
| ;; | |
| mingw32*) | |
| if test $target_os = "mingw32ce"; then | |
| disable network | |
| else | |
| target_os=mingw32 | |
| fi | |
| LIBTARGET=i386 | |
| if enabled x86_64; then | |
| enable malloc_aligned | |
| LIBTARGET=x64 | |
| elif enabled arm; then | |
| LIBTARGET=arm | |
| fi | |
| shlibdir_default="$bindir_default" | |
| disable ffserver | |
| SLIBPREF="" | |
| SLIBSUF=".dll" | |
| SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' | |
| SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' | |
| SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)' | |
| SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \ | |
| 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)"' | |
| SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' | |
| 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' | |
| objformat="win32" | |
| enable dos_paths | |
| check_cflags -fno-common | |
| check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \ | |
| || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || | |
| die "ERROR: MinGW runtime version must be >= 3.15." | |
| ;; | |
| cygwin*) | |
| target_os=cygwin | |
| shlibdir_default="$bindir_default" | |
| 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' | |
| objformat="win32" | |
| enable dos_paths | |
| check_cflags -fno-common | |
| ;; | |
| *-dos|freedos|opendos) | |
| disable ffplay ffserver | |
| disable $INDEV_LIST $OUTDEV_LIST | |
| network_extralibs="-lsocket" | |
| objformat="coff" | |
| enable dos_paths | |
| ;; | |
| linux) | |
| enable dv1394 | |
| ;; | |
| irix*) | |
| target_os=irix | |
| ranlib="echo ignoring ranlib" | |
| ;; | |
| os/2*) | |
| strip="lxlite" | |
| ln_s="cp -f" | |
| add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap | |
| SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' | |
| FFSERVERLDFLAGS="" | |
| LIBSUF="_s.a" | |
| SLIBPREF="" | |
| SLIBSUF=".dll" | |
| SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' | |
| SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' | |
| 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)"' | |
| SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib' | |
| enable dos_paths | |
| ;; | |
| gnu/kfreebsd) | |
| ;; | |
| gnu) | |
| ;; | |
| none) | |
| ;; | |
| *) | |
| die "Unknown OS '$target_os'." | |
| ;; | |
| esac | |
| check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic | |
| set_default $PATHS_LIST | |
| # we need to build at least one lib type | |
| if ! enabled_any static shared; then | |
| cat <<EOF | |
| At least one library type must be built. | |
| Specify --enable-static to build the static libraries or --enable-shared to | |
| build the shared libraries as well. To only build the shared libraries specify | |
| --disable-static in addition to --enable-shared. | |
| EOF | |
| exit 1; | |
| fi | |
| disabled static && LIBNAME="" | |
| die_license_disabled() { | |
| enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; } | |
| } | |
| die_license_disabled gpl libx264 | |
| die_license_disabled gpl libxavs | |
| die_license_disabled gpl libxvid | |
| die_license_disabled gpl postproc | |
| die_license_disabled gpl x11grab | |
| die_license_disabled nonfree libfaac | |
| die_license_disabled version3 libopencore_amrnb | |
| die_license_disabled version3 libopencore_amrwb | |
| enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } | |
| check_deps $ARCH_EXT_LIST | |
| disabled optimizations || check_cflags -fomit-frame-pointer | |
| enable_pic() { | |
| enable pic | |
| add_cppflags -DPIC | |
| add_cflags -fPIC | |
| add_asflags -fPIC | |
| } | |
| enabled pic && enable_pic | |
| check_cc <<EOF || die "Symbol mangling check failed." | |
| int ff_extern; | |
| EOF | |
| sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }') | |
| extern_prefix=${sym%%ff_extern*} | |
| check_cc <<EOF && enable inline_asm | |
| void foo(void) { __asm__ volatile ("" ::); } | |
| EOF | |
| _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 | |
| check_cc <<EOF && enable attribute_may_alias | |
| union { int x; } __attribute__((may_alias)) x; | |
| EOF | |
| check_cc <<EOF || die "endian test failed" | |
| unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'; | |
| EOF | |
| od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian | |
| if enabled alpha; then | |
| check_cflags -mieee | |
| elif enabled arm; then | |
| check_cflags -marm | |
| nogas=die | |
| check_ld <<EOF && enable vfp_args | |
| __asm__ (".eabi_attribute 28, 1"); | |
| int main(void) { return 0; } | |
| EOF | |
| # 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"' | |
| enabled_all armv6t2 shared !pic && enable_pic | |
| elif enabled mips; then | |
| check_asm loongson '"dmult.g $1, $2, $3"' | |
| enabled mmi && check_asm mmi '"lq $2, 0($2)"' | |
| elif enabled ppc; then | |
| enable local_aligned_8 local_aligned_16 | |
| check_asm dcbzl '"dcbzl 0, %0" :: "r"(0)' | |
| check_asm ibm_asm '"add 0, 0, 0"' | |
| check_asm ppc4xx '"maclhw r10, r11, r12"' | |
| check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' | |
| # AltiVec flags: The FSF version of GCC differs from the Apple version | |
| if enabled altivec; then | |
| nogas=warn | |
| 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 | |
| elif enabled sparc; then | |
| enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc && | |
| add_cflags -mcpu=ultrasparc -mtune=ultrasparc | |
| elif enabled x86; then | |
| enable local_aligned_8 local_aligned_16 | |
| # 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. | |
| check_exec_crash <<EOF && enable ebp_available | |
| volatile int i=0; | |
| __asm__ volatile ( | |
| "xorl %%ebp, %%ebp" | |
| ::: "%ebp"); | |
| return i; | |
| EOF | |
| # check whether EBX is available on x86 | |
| check_asm ebx_available '""::"b"(0)' && | |
| check_asm ebx_available '"":::"%ebx"' | |
| # 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 | |
| # check whether binutils is new enough to compile SSSE3/MMX2 | |
| enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"' | |
| enabled mmx2 && check_asm mmx2 '"pmaxub %mm0, %mm1"' | |
| check_asm bswap '"bswap %%eax" ::: "%eax"' | |
| YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)" | |
| enabled x86_64 && append YASMFLAGS "-m amd64" | |
| enabled pic && append YASMFLAGS "-DPIC" | |
| test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX" | |
| case "$objformat" in | |
| elf) enabled debug && append YASMFLAGS "-g dwarf2" ;; | |
| esac | |
| if ! disabled yasm; then | |
| check_yasm "pabsw xmm0, xmm0" && enable yasm || | |
| warn "yasm not found, performance will suffer" | |
| fi | |
| case "$cpu" in | |
| athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode) | |
| disable fast_clz | |
| ;; | |
| esac | |
| fi | |
| 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 | |
| if check_func dlopen; then | |
| ldl= | |
| elif check_func dlopen -ldl; then | |
| ldl=-ldl | |
| fi | |
| # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that | |
| check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; } | |
| check_func fcntl | |
| check_func fork | |
| check_func getaddrinfo $network_extralibs | |
| check_func gethrtime | |
| check_func getrusage | |
| check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss | |
| check_func inet_aton $network_extralibs | |
| check_func isatty | |
| check_func ${malloc_prefix}memalign && enable memalign | |
| check_func mkstemp | |
| check_func ${malloc_prefix}posix_memalign && enable posix_memalign | |
| check_func setrlimit | |
| check_func strerror_r | |
| check_func_headers io.h setmode | |
| check_func_headers lzo/lzo1x.h lzo1x_999_compress | |
| check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi | |
| check_func_headers windows.h GetProcessTimes | |
| check_func_headers windows.h VirtualAlloc | |
| check_header conio.h | |
| check_header dlfcn.h | |
| check_header dxva2api.h | |
| check_header malloc.h | |
| check_header poll.h | |
| check_header sys/mman.h | |
| check_header sys/resource.h | |
| check_header sys/select.h | |
| check_header termios.h | |
| check_header vdpau/vdpau.h | |
| check_header vdpau/vdpau_x11.h | |
| check_header X11/extensions/XvMClib.h | |
| check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex | |
| if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned && | |
| enabled_any $need_memalign ; then | |
| die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack." | |
| fi | |
| disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib | |
| disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib | |
| # check for some common methods of building with pthread support | |
| # do this before the optional library checks as some of them require pthreads | |
| if ! disabled pthreads && ! enabled w32threads; then | |
| enable pthreads | |
| if check_func pthread_create; then | |
| : | |
| elif check_func pthread_create -pthread; then | |
| add_cflags -pthread | |
| add_extralibs -pthread | |
| elif check_func pthread_create -pthreads; then | |
| add_cflags -pthreads | |
| add_extralibs -pthreads | |
| elif check_func pthread_create -lpthreadGC2; then | |
| add_extralibs -lpthreadGC2 | |
| elif ! check_lib pthread.h pthread_create -lpthread; then | |
| disable pthreads | |
| fi | |
| fi | |
| for thread in $THREADS_LIST; do | |
| if enabled $thread; then | |
| test -n "$thread_type" && | |
| die "ERROR: Only one thread type must be selected." || | |
| thread_type="$thread" | |
| fi | |
| done | |
| check_lib math.h sin -lm | |
| disabled vaapi || check_lib va/va.h vaInitialize -lva | |
| check_mathfunc exp2 | |
| check_mathfunc exp2f | |
| check_mathfunc llrint | |
| check_mathfunc llrintf | |
| check_mathfunc log2 | |
| check_mathfunc log2f | |
| check_mathfunc lrint | |
| check_mathfunc lrintf | |
| check_mathfunc round | |
| check_mathfunc roundf | |
| check_mathfunc truncf | |
| # these are off by default, so fail if requested and not available | |
| enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32 | |
| enabled libdirac && add_cflags $(pkg-config --cflags dirac) && | |
| require libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) && | |
| require libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac) | |
| enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac | |
| enabled libgsm && require libgsm gsm/gsm.h gsm_create -lgsm | |
| enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame | |
| enabled libnut && require libnut libnut.h nut_demuxer_init -lnut | |
| 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 | |
| enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg | |
| enabled librtmp && { check_lib librtmp/rtmp.h RTMP_Socket $(pkg-config --libs librtmp) || | |
| die "ERROR: librtmp not found or RTMP_Socket() missing, librtmp version must be >= 2.2.f"; } | |
| enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) && | |
| require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0) | |
| enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex | |
| enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg | |
| enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg | |
| 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"; } | |
| enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx || | |
| die "ERROR: libvpx encoder version must be >=0.9.1"; } } | |
| enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && | |
| { check_cpp_condition x264.h "X264_BUILD >= 98" || | |
| die "ERROR: libx264 version must be >= 0.98."; } | |
| enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs | |
| enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore | |
| enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib | |
| # libdc1394 check | |
| if enabled libdc1394; then | |
| { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 && | |
| enable libdc1394_2; } || | |
| { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 && | |
| enable libdc1394_1; } || | |
| die "ERROR: No version of libdc1394 found " | |
| fi | |
| SDL_CONFIG="${cross_prefix}sdl-config" | |
| if "${SDL_CONFIG}" --version > /dev/null 2>&1; then | |
| sdl_cflags=$("${SDL_CONFIG}" --cflags) | |
| sdl_libs=$("${SDL_CONFIG}" --libs) | |
| check_func_headers SDL.h SDL_Init $sdl_cflags $sdl_libs && | |
| 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 | |
| fi | |
| texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html | |
| 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" | |
| 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 | |
| check_header linux/videodev.h | |
| check_header linux/videodev2.h | |
| check_header sys/videoio.h | |
| check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs" | |
| # 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 | |
| # check for ioctl_meteor.h, ioctl_bt848.h and alternatives | |
| { 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 | |
| check_header sys/soundcard.h | |
| check_header soundcard.h | |
| enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound | |
| enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack | |
| enabled x11grab && | |
| check_header X11/Xlib.h && | |
| check_header X11/extensions/XShm.h && | |
| check_header X11/extensions/Xfixes.h && | |
| check_func XOpenDisplay -lX11 && | |
| check_func XShmCreateImage -lX11 -lXext && | |
| check_func XFixesGetCursorImage -lX11 -lXext -lXfixes | |
| if ! disabled vdpau && enabled vdpau_vdpau_h; then | |
| check_cpp_condition \ | |
| vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || | |
| { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." && | |
| disable vdpau; } | |
| fi | |
| enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" | |
| # add some useful compiler flags if supported | |
| check_cflags -Wdeclaration-after-statement | |
| check_cflags -Wall | |
| check_cflags -Wno-parentheses | |
| check_cflags -Wno-switch | |
| check_cflags -Wdisabled-optimization | |
| check_cflags -Wpointer-arith | |
| check_cflags -Wredundant-decls | |
| check_cflags -Wno-pointer-sign | |
| check_cflags -Wcast-qual | |
| check_cflags -Wwrite-strings | |
| check_cflags -Wtype-limits | |
| check_cflags -Wundef | |
| check_cflags -Wmissing-prototypes | |
| enabled extra_warnings && check_cflags -Winline | |
| # add some linker flags | |
| check_ldflags -Wl,--warn-common | |
| check_ldflags -Wl,--as-needed | |
| check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' | |
| check_ldflags -Wl,-Bsymbolic | |
| echo "X{};" > $TMPV | |
| if test_ldflags -Wl,--version-script,$TMPV; then | |
| append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' | |
| check_cc <<EOF && enable symver_asm_label | |
| void ff_foo(void) __asm__ ("av_foo@VERSION"); | |
| void ff_foo(void) { ${inline_asm+__asm__($quotes);} } | |
| EOF | |
| check_cc <<EOF && enable symver_gnu_asm | |
| __asm__(".symver ff_foo,av_foo@VERSION"); | |
| void ff_foo(void) {} | |
| EOF | |
| fi | |
| if enabled small; then | |
| add_cflags $size_cflags | |
| optimizations="small" | |
| elif enabled optimizations; then | |
| add_cflags $speed_cflags | |
| else | |
| add_cflags $noopt_cflags | |
| fi | |
| check_cflags -fno-math-errno | |
| check_cflags -fno-signed-zeros | |
| if enabled icc; then | |
| # Just warnings, no remarks | |
| check_cflags -w1 | |
| # -wd: Disable following warnings | |
| # 144, 167, 556: -Wno-pointer-sign | |
| # 10006: ignoring unknown option -fno-signed-zeros | |
| # 10156: ignoring option '-W'; no argument required | |
| check_cflags -wd144,167,556,10006,10156 | |
| # 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 | |
| # icc 11.0 and 11.1 work with ebp_available, but don't pass the test | |
| enable ebp_available | |
| 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 | |
| elif enabled gcc; then | |
| check_cflags -fno-tree-vectorize | |
| check_cflags -Werror=implicit-function-declaration | |
| check_cflags -Werror=missing-prototypes | |
| elif enabled clang; then | |
| check_cflags -Qunused-arguments | |
| elif enabled armcc; then | |
| # 2523: use of inline assembler is deprecated | |
| add_cflags -Wrvct,--diag_suppress=2523 | |
| add_cflags -Wrvct,--diag_suppress=1207 | |
| elif enabled tms470; then | |
| add_cflags -pds=824 -pds=837 | |
| fi | |
| enabled_any $THREADS_LIST && enable threads | |
| check_deps $CONFIG_LIST \ | |
| $CONFIG_EXTRA \ | |
| $HAVE_LIST \ | |
| $DECODER_LIST \ | |
| $ENCODER_LIST \ | |
| $HWACCEL_LIST \ | |
| $PARSER_LIST \ | |
| $BSF_LIST \ | |
| $DEMUXER_LIST \ | |
| $MUXER_LIST \ | |
| $FILTER_LIST \ | |
| $INDEV_LIST \ | |
| $OUTDEV_LIST \ | |
| $PROTOCOL_LIST \ | |
| $ACODEC_TESTS \ | |
| $VCODEC_TESTS \ | |
| $LAVF_TESTS \ | |
| $LAVFI_TESTS \ | |
| $SEEK_TESTS \ | |
| enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } | |
| echo "install prefix $prefix" | |
| echo "source path $source_path" | |
| echo "C compiler $cc" | |
| echo "ARCH $arch ($cpu)" | |
| if test "$build_suffix" != ""; then | |
| echo "build suffix $build_suffix" | |
| fi | |
| if test "$extra_version" != ""; then | |
| echo "version string suffix $extra_version" | |
| fi | |
| echo "big-endian ${bigendian-no}" | |
| echo "runtime cpu detection ${runtime_cpudetect-no}" | |
| if enabled x86; then | |
| echo "yasm ${yasm-no}" | |
| echo "MMX enabled ${mmx-no}" | |
| echo "MMX2 enabled ${mmx2-no}" | |
| echo "3DNow! enabled ${amd3dnow-no}" | |
| echo "3DNow! extended enabled ${amd3dnowext-no}" | |
| echo "SSE enabled ${sse-no}" | |
| echo "SSSE3 enabled ${ssse3-no}" | |
| echo "CMOV enabled ${cmov-no}" | |
| echo "CMOV is fast ${fast_cmov-no}" | |
| echo "EBX available ${ebx_available-no}" | |
| echo "EBP available ${ebp_available-no}" | |
| echo "10 operands supported ${ten_operands-no}" | |
| fi | |
| if enabled arm; then | |
| echo "ARMv5TE enabled ${armv5te-no}" | |
| echo "ARMv6 enabled ${armv6-no}" | |
| echo "ARMv6T2 enabled ${armv6t2-no}" | |
| echo "ARM VFP enabled ${armvfp-no}" | |
| echo "IWMMXT enabled ${iwmmxt-no}" | |
| echo "NEON enabled ${neon-no}" | |
| fi | |
| if enabled mips; then | |
| echo "MMI enabled ${mmi-no}" | |
| fi | |
| if enabled ppc; then | |
| echo "AltiVec enabled ${altivec-no}" | |
| echo "PPC 4xx optimizations ${ppc4xx-no}" | |
| echo "dcbzl available ${dcbzl-no}" | |
| fi | |
| if enabled sparc; then | |
| echo "VIS enabled ${vis-no}" | |
| fi | |
| echo "debug symbols ${debug-no}" | |
| echo "strip symbols ${stripping-no}" | |
| echo "optimizations ${optimizations-no}" | |
| echo "static ${static-no}" | |
| echo "shared ${shared-no}" | |
| echo "postprocessing support ${postproc-no}" | |
| echo "new filter support ${avfilter-no}" | |
| 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}" | |
| echo "libdc1394 support ${libdc1394-no}" | |
| echo "libdirac enabled ${libdirac-no}" | |
| echo "libfaac enabled ${libfaac-no}" | |
| echo "libgsm enabled ${libgsm-no}" | |
| echo "libmp3lame enabled ${libmp3lame-no}" | |
| echo "libnut enabled ${libnut-no}" | |
| echo "libopencore-amrnb support ${libopencore_amrnb-no}" | |
| echo "libopencore-amrwb support ${libopencore_amrwb-no}" | |
| echo "libopenjpeg enabled ${libopenjpeg-no}" | |
| echo "librtmp enabled ${librtmp-no}" | |
| echo "libschroedinger enabled ${libschroedinger-no}" | |
| echo "libspeex enabled ${libspeex-no}" | |
| echo "libtheora enabled ${libtheora-no}" | |
| echo "libvorbis enabled ${libvorbis-no}" | |
| echo "libvpx enabled ${libvpx-no}" | |
| echo "libx264 enabled ${libx264-no}" | |
| echo "libxavs enabled ${libxavs-no}" | |
| echo "libxvid enabled ${libxvid-no}" | |
| echo "zlib enabled ${zlib-no}" | |
| echo "bzlib enabled ${bzlib-no}" | |
| echo | |
| for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do | |
| echo "Enabled ${type}s:" | |
| eval list=\$$(toupper $type)_LIST | |
| print_enabled '_*' $list | sort | pr -3 -t | |
| echo | |
| done | |
| license="LGPL version 2.1 or later" | |
| if enabled nonfree; then | |
| license="nonfree and unredistributable" | |
| elif enabled gplv3; then | |
| license="GPL version 3 or later" | |
| elif enabled lgplv3; then | |
| license="LGPL version 3 or later" | |
| elif enabled gpl; then | |
| license="GPL version 2 or later" | |
| fi | |
| echo "License: $license" | |
| echo "Creating config.mak and config.h..." | |
| # build tree in object directory if source path is different from current one | |
| if enabled source_path_used; then | |
| DIRS=" | |
| doc | |
| libavcodec | |
| libavcodec/$arch | |
| libavcore | |
| libavdevice | |
| libavfilter | |
| libavformat | |
| libavutil | |
| libavutil/$arch | |
| libpostproc | |
| libswscale | |
| libswscale/$arch | |
| tests | |
| tools | |
| " | |
| FILES=" | |
| Makefile | |
| common.mak | |
| subdir.mak | |
| doc/texi2pod.pl | |
| libavcodec/Makefile | |
| libavcodec/${arch}/Makefile | |
| libavcore/Makefile | |
| libavdevice/Makefile | |
| libavfilter/Makefile | |
| libavformat/Makefile | |
| libavutil/Makefile | |
| libpostproc/Makefile | |
| libswscale/Makefile | |
| " | |
| map 'mkdir -p $v' $DIRS; | |
| map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES | |
| fi | |
| enabled stripping || strip="echo skipping strip" | |
| cat > config.mak <<EOF | |
| # Automatically generated by configure - do not modify! | |
| ifndef FFMPEG_CONFIG_MAK | |
| FFMPEG_CONFIG_MAK=1 | |
| FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION | |
| 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 | |
| BUILD_ROOT="$PWD" | |
| CC_IDENT=$cc_ident | |
| ARCH=$arch | |
| CC=$cc | |
| AS=$as | |
| LD=$ld | |
| DEPCC=$dep_cc | |
| YASM=$yasmexe | |
| YASMDEP=$yasmexe | |
| AR=$ar | |
| RANLIB=$ranlib | |
| CP=cp -p | |
| LN_S=$ln_s | |
| STRIP=$strip | |
| 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 | |
| INSTALL=install | |
| 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} | |
| SAMPLES=$samples | |
| EOF | |
| get_version(){ | |
| name=$1 | |
| file=$source_path/$2 | |
| eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }') | |
| eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO | |
| lcname=$(tolower $name) | |
| eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak | |
| eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak | |
| } | |
| get_version LIBSWSCALE libswscale/swscale.h | |
| get_version LIBPOSTPROC libpostproc/postprocess.h | |
| get_version LIBAVCODEC libavcodec/avcodec.h | |
| get_version LIBAVCORE libavcore/avcore.h | |
| get_version LIBAVDEVICE libavdevice/avdevice.h | |
| get_version LIBAVFORMAT libavformat/avformat.h | |
| get_version LIBAVUTIL libavutil/avutil.h | |
| get_version LIBAVFILTER libavfilter/avfilter.h | |
| cat > $TMPH <<EOF | |
| /* Automatically generated by configure - do not modify! */ | |
| #ifndef FFMPEG_CONFIG_H | |
| #define FFMPEG_CONFIG_H | |
| #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)" | |
| #define FFMPEG_LICENSE "$(c_escape $license)" | |
| #define FFMPEG_DATADIR "$(eval c_escape $datadir)" | |
| #define CC_TYPE "$cc_type" | |
| #define CC_VERSION $cc_version | |
| #define restrict $_restrict | |
| #define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "\\n\\t" | |
| #define EXTERN_PREFIX "${extern_prefix}" | |
| #define EXTERN_ASM ${extern_prefix} | |
| EOF | |
| test -n "$malloc_prefix" && | |
| echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH | |
| if enabled small || disabled optimizations; then | |
| echo "#undef av_always_inline" >> $TMPH | |
| echo "#define av_always_inline" >> $TMPH | |
| fi | |
| print_config ARCH_ $TMPH config.mak $ARCH_LIST | |
| print_config HAVE_ $TMPH config.mak $HAVE_LIST | |
| print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ | |
| $CONFIG_EXTRA \ | |
| $DECODER_LIST \ | |
| $ENCODER_LIST \ | |
| $HWACCEL_LIST \ | |
| $PARSER_LIST \ | |
| $BSF_LIST \ | |
| $DEMUXER_LIST \ | |
| $MUXER_LIST \ | |
| $FILTER_LIST \ | |
| $PROTOCOL_LIST \ | |
| $INDEV_LIST \ | |
| $OUTDEV_LIST \ | |
| 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) | |
| LAVFI_TESTS=$(print_enabled -n _test $LAVFI_TESTS) | |
| SEEK_TESTS=$(print_enabled -n _test $SEEK_TESTS) | |
| EOF | |
| echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH | |
| echo "endif # FFMPEG_CONFIG_MAK" >> config.mak | |
| # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. | |
| cp_if_changed $TMPH config.h | |
| touch .config | |
| cat > $TMPH <<EOF | |
| /* Generated by ffconf */ | |
| #ifndef AVUTIL_AVCONFIG_H | |
| #define AVUTIL_AVCONFIG_H | |
| EOF | |
| print_config AV_HAVE_ $TMPH /dev/null $HAVE_LIST_PUB | |
| echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH | |
| cp_if_changed $TMPH libavutil/avconfig.h | |
| echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate | |
| test -n "$WARNINGS" && printf "\n$WARNINGS" | |
| # build pkg-config files | |
| pkgconfig_generate(){ | |
| name=$1 | |
| shortname=${name#lib}${build_suffix} | |
| comment=$2 | |
| version=$3 | |
| libs=$4 | |
| requires=$5 | |
| enabled $shortname || return 0 | |
| cat <<EOF > $name/$name.pc | |
| prefix=$prefix | |
| exec_prefix=\${prefix} | |
| libdir=$libdir | |
| includedir=$incdir | |
| Name: $name | |
| Description: $comment | |
| Version: $version | |
| Requires: $(enabled shared || echo $requires) | |
| Requires.private: $(enabled shared && echo $requires) | |
| Conflicts: | |
| Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) | |
| Libs.private: $(enabled shared && echo $libs) | |
| Cflags: -I\${includedir} | |
| EOF | |
| cat <<EOF > $name/$name-uninstalled.pc | |
| prefix= | |
| exec_prefix= | |
| libdir=\${pcfiledir} | |
| includedir=${source_path} | |
| Name: $name | |
| Description: $comment | |
| Version: $version | |
| Requires: $requires | |
| Conflicts: | |
| Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs | |
| Cflags: -I\${includedir} | |
| EOF | |
| } | |
| pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" | |
| pkgconfig_generate libavcore "FFmpeg multimedia shared core utilities library" "$LIBAVCORE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" | |
| pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavcore = $LIBAVCORE_VERSION" | |
| 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" "libavcore = $LIBAVCORE_VERSION" | |
| pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" | |
| pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" |