X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=31e82fc6db4b89f2ce235e3936da33e011d8cdf2;hb=c5ee740745596941b84b738cc528ec85b0e6f0a3;hp=01b092f37d37834b7ba69c17c1152ac5d81c907c;hpb=bb7a22b5840e56c034227ad596b1165c03f2da27;p=ffmpeg diff --git a/configure b/configure index 01b092f37d3..31e82fc6db4 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #!/bin/sh # -# FFmpeg configure script +# Libav configure script # # Copyright (c) 2000-2002 Fabrice Bellard # Copyright (c) 2005-2008 Diego Biurrun @@ -44,9 +44,9 @@ if test "$E1" != 0 || test "$E2" = 0; then 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 "THIS IS NOT A BUG IN LIBAV, DO NOT REPORT IT AS SUCH." echo "Instead, install a working POSIX-compatible shell." - echo "Disabling this configure test will create a broken FFmpeg." + echo "Disabling this configure test will create a broken Libav." 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." @@ -86,16 +86,14 @@ Configuration options: --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-postproc disable libpostproc build --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 @@ -108,8 +106,8 @@ Configuration options: --disable-lpc disable LPC code --disable-mdct disable MDCT code --disable-rdft disable RDFT code - --disable-vaapi disable VAAPI code - --disable-vdpau disable VDPAU code + --enable-vaapi enable VAAPI code + --enable-vdpau enable 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 @@ -170,6 +168,7 @@ External library support: and libraw1394 [no] --enable-libdirac enable Dirac support via libdirac [no] --enable-libfaac enable FAAC support via libfaac [no] + --enable-libfreetype enable libfreetype [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, @@ -179,6 +178,8 @@ External library support: --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-libvo-aacenc enable AAC encoding via libvo-aacenc [no] + --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] --enable-libvorbis enable Vorbis encoding via libvorbis, native implementation exists [no] --enable-libvpx enable VP8 support via libvpx [no] @@ -190,7 +191,6 @@ External library support: --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 @@ -223,6 +223,7 @@ Advanced options (experts only): --disable-mmx2 disable MMX2 optimizations --disable-sse disable SSE optimizations --disable-ssse3 disable SSSE3 optimizations + --disable-avx disable AVX optimizations --disable-armv5te disable armv5te optimizations --disable-armv6 disable armv6 optimizations --disable-armv6t2 disable armv6t2 optimizations @@ -237,13 +238,13 @@ Advanced options (experts only): --enable-sram allow use of on-chip SRAM --disable-symver disable symbol versioning -Developer options (useful when working on FFmpeg itself): +Developer options (useful when working on Libav 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 + --samples=PATH location of test samples for FATE, if not set use + \$FATE_SAMPLES at make invocation time. NOTE: Object files are built at the place where configure is launched. EOF @@ -278,7 +279,7 @@ die(){ If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the -ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net. +libav-user@libav.org mailing list or IRC #libav on irc.freenode.net. EOF if disabled logging; then cat <" + done + for func in $funcs; do + echo "long check_$func(void) { return (long) $func; }" + done + echo "int main(void) { return 0; }" + } | check_ld "$@" && enable $funcs && enable_safe $headers } check_cpp_condition(){ @@ -738,9 +746,23 @@ check_lib(){ check_lib2(){ log check_lib2 "$@" headers="$1" - func="$2" + funcs="$2" shift 2 - check_func_headers "$headers" $func "$@" && add_extralibs "$@" + check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@" +} + +check_pkg_config(){ + log check_pkg_config "$@" + pkg="$1" + headers="$2" + funcs="$3" + shift 3 + $pkg_config --exists $pkg || return + pkg_cflags=$($pkg_config --cflags $pkg) + pkg_libs=$($pkg_config --libs $pkg) + check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && + set_safe ${pkg}_cflags $pkg_cflags && + set_safe ${pkg}_libs $pkg_libs } check_exec(){ @@ -824,6 +846,13 @@ require2(){ check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" } +require_pkg_config(){ + pkg="$1" + check_pkg_config "$@" || die "ERROR: $pkg not found" + add_cflags $(get_safe ${pkg}_cflags) + add_extralibs $(get_safe ${pkg}_libs) +} + check_host_cc(){ log check_host_cc "$@" cat > $TMPC @@ -870,8 +899,8 @@ COMPONENT_LIST=" CONFIG_LIST=" $COMPONENT_LIST aandct + ac3dsp avcodec - avcore avdevice avfilter avformat @@ -898,6 +927,7 @@ CONFIG_LIST=" libdc1394 libdirac libfaac + libfreetype libgsm libmp3lame libnut @@ -909,6 +939,8 @@ CONFIG_LIST=" libschroedinger libspeex libtheora + libvo_aacenc + libvo_amrwbenc libvorbis libvpx libx264 @@ -919,7 +951,7 @@ CONFIG_LIST=" mdct memalign_hack mlib - mpegaudio_hp + mpegaudiodsp network nonfree pic @@ -928,6 +960,7 @@ CONFIG_LIST=" rtpdec runtime_cpudetect shared + sinewin small sram static @@ -977,6 +1010,7 @@ ARCH_EXT_LIST=' armv6 armv6t2 armvfp + avx iwmmxt mmi mmx @@ -985,6 +1019,7 @@ ARCH_EXT_LIST=' ppc4xx sse ssse3 + vfpv3 vis ' @@ -1006,7 +1041,6 @@ HAVE_LIST=" bswap closesocket cmov - conio_h dcbzl dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h @@ -1043,6 +1077,7 @@ HAVE_LIST=" llrintf local_aligned_16 local_aligned_8 + localtime_r log2 log2f loongson @@ -1063,6 +1098,7 @@ HAVE_LIST=" sdl sdl_video_size setmode + sndio_h socklen_t soundcard_h poll_h @@ -1083,8 +1119,8 @@ HAVE_LIST=" sys_soundcard_h sys_videoio_h ten_operands - termios_h threads + trunc truncf vfp_args VirtualAlloc @@ -1111,7 +1147,6 @@ CMDLINE_SELECT=" extra_warnings logging optimizations - stripping symver yasm " @@ -1146,9 +1181,8 @@ CMDLINE_SET=" logfile malloc_prefix nm + pkg_config samples - source_path - strip sysinclude sysroot target_exec @@ -1170,6 +1204,7 @@ armv6t2_deps="arm" armvfp_deps="arm" iwmmxt_deps="arm" neon_deps="arm" +vfpv3_deps="armvfp" mmi_deps="mips" @@ -1185,6 +1220,7 @@ mmx_deps="x86" mmx2_deps="mmx" sse_deps="mmx" ssse3_deps="sse" +avx_deps="ssse3" aligned_stack_if_any="ppc x86" fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" @@ -1200,27 +1236,30 @@ symver_if_any="symver_asm_label symver_gnu_asm" dct_select="rdft" mdct_select="fft" rdft_select="fft" +mpegaudiodsp_select="dct" # decoders / encoders / hardware accelerators -aac_decoder_select="mdct rdft" -aac_encoder_select="mdct" +aac_decoder_select="mdct sinewin" +aac_encoder_select="mdct sinewin" aac_latm_decoder_select="aac_decoder aac_latm_parser" -ac3_decoder_select="mdct ac3_parser" -ac3_encoder_select="mdct" +ac3_decoder_select="mdct ac3dsp ac3_parser" +ac3_encoder_select="mdct ac3dsp" +ac3_fixed_encoder_select="mdct ac3dsp" alac_encoder_select="lpc" amrnb_decoder_select="lsp" amrwb_decoder_select="lsp" -atrac1_decoder_select="mdct" +atrac1_decoder_select="mdct sinewin" atrac3_decoder_select="mdct" -binkaudio_dct_decoder_select="mdct rdft dct" -binkaudio_rdft_decoder_select="mdct rdft" +binkaudio_dct_decoder_select="mdct rdft dct sinewin" +binkaudio_rdft_decoder_select="mdct rdft sinewin" cavs_decoder_select="golomb" -cook_decoder_select="mdct" +cook_decoder_select="mdct sinewin" cscd_decoder_suggest="zlib" dca_decoder_select="mdct" dnxhd_encoder_select="aandct" dxa_decoder_select="zlib" eac3_decoder_select="ac3_decoder" +eac3_encoder_select="mdct ac3dsp" eamad_decoder_select="aandct" eatgq_decoder_select="aandct" eatqi_decoder_select="aandct" @@ -1243,18 +1282,23 @@ 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" +imc_decoder_select="fft mdct sinewin" 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" +mp1_decoder_select="mpegaudiodsp" +mp2_decoder_select="mpegaudiodsp" +mp3adu_decoder_select="mpegaudiodsp" +mp3_decoder_select="mpegaudiodsp" +mp3on4_decoder_select="mpegaudiodsp" +mp1float_decoder_select="mpegaudiodsp" +mp2float_decoder_select="mpegaudiodsp" +mp3adufloat_decoder_select="mpegaudiodsp" +mp3float_decoder_select="mpegaudiodsp" +mp3on4float_decoder_select="mpegaudiodsp" mpeg1video_encoder_select="aandct" mpeg2video_encoder_select="aandct" mpeg4_decoder_select="h263_decoder mpeg4video_parser" @@ -1274,12 +1318,12 @@ 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" +nellymoser_decoder_select="mdct sinewin" +nellymoser_encoder_select="mdct sinewin" png_decoder_select="zlib" png_encoder_select="zlib" qcelp_decoder_select="lsp" -qdm2_decoder_select="mdct rdft" +qdm2_decoder_select="mdct rdft mpegaudiodsp" ra_144_encoder_select="lpc" rv10_decoder_select="h263_decoder" rv10_encoder_select="h263_encoder" @@ -1291,9 +1335,6 @@ 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" @@ -1302,7 +1343,7 @@ tiff_decoder_suggest="zlib" tiff_encoder_suggest="zlib" truehd_decoder_select="mlp_decoder" tscc_decoder_select="zlib" -twinvq_decoder_select="mdct lsp" +twinvq_decoder_select="mdct lsp sinewin" vc1_decoder_select="h263_decoder" vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex" vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" @@ -1314,12 +1355,12 @@ 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" +wmapro_decoder_select="mdct sinewin" +wmav1_decoder_select="mdct sinewin" +wmav1_encoder_select="mdct sinewin" +wmav2_decoder_select="mdct sinewin" +wmav2_encoder_select="mdct sinewin" +wmavoice_decoder_select="lsp rdft dct mdct sinewin" wmv1_decoder_select="h263_decoder" wmv1_encoder_select="h263_encoder" wmv2_decoder_select="h263_decoder" @@ -1356,6 +1397,8 @@ libschroedinger_decoder_deps="libschroedinger" libschroedinger_encoder_deps="libschroedinger" libspeex_decoder_deps="libspeex" libtheora_encoder_deps="libtheora" +libvo_aacenc_encoder_deps="libvo_aacenc" +libvo_amrwbenc_encoder_deps="libvo_amrwbenc" libvorbis_encoder_deps="libvorbis" libvpx_decoder_deps="libvpx" libvpx_encoder_deps="libvpx" @@ -1399,10 +1442,13 @@ 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" +fbdev_indev_deps="linux_fb_h" 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" +sndio_indev_deps="sndio_h" +sndio_outdev_deps="sndio_h" v4l_indev_deps="linux_videodev_h" v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" @@ -1424,16 +1470,18 @@ udp_protocol_deps="network" # filters blackframe_filter_deps="gpl" cropdetect_filter_deps="gpl" +drawtext_filter_deps="libfreetype" frei0r_filter_deps="frei0r dlopen strtok_r" frei0r_src_filter_deps="frei0r dlopen strtok_r" hqdn3d_filter_deps="gpl" -scale_filter_deps="swscale" ocv_filter_deps="libopencv" +scale_filter_deps="swscale" yadif_filter_deps="gpl" # libraries avdevice_deps="avcodec avformat" avformat_deps="avcodec" +postproc_deps="gpl" # programs ffmpeg_deps="avcodec avformat swscale" @@ -1441,7 +1489,7 @@ 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_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer" ffserver_extralibs='$ldl' doc_deps="texi2html" @@ -1572,8 +1620,8 @@ host_cc_default="gcc" ln_s="ln -sf" nm_default="nm" objformat="elf" +pkg_config_default=pkg-config ranlib="ranlib" -strip_default="strip" yasmexe="yasm" nogas=":" @@ -1589,7 +1637,6 @@ host_os=$target_os_default # configurable options enable avcodec -enable avcore enable avdevice enable avfilter enable avformat @@ -1602,12 +1649,11 @@ enable ffmpeg enable ffplay enable ffprobe enable ffserver -enable mpegaudio_hp enable network enable optimizations +enable postproc enable protocols enable static -enable stripping enable swscale enable swscale_alpha @@ -1627,7 +1673,7 @@ LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' CC_O='-o $@' -host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall' +host_cflags='-D_ISOC99_SOURCE -O3 -g' host_libs='-lm' target_path='$(CURDIR)' @@ -1638,13 +1684,12 @@ DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F) 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)" + source_path=$(cd $(dirname "$0"); pwd) + enable source_path_used echo "$source_path" | grep -q '[[:blank:]]' && die "Out of tree builds are impossible with whitespace in source path." test -e "$source_path/config.h" && @@ -1655,7 +1700,7 @@ for v in "$@"; do r=${v#*=} l=${v%"$r"} r=$(sh_quote "$r") - FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" + LIBAV_CONFIGURATION="${LIBAV_CONFIGURATION# } ${l}${r}" done find_things(){ @@ -1767,7 +1812,7 @@ done disabled logging && logfile=/dev/null -echo "# $0 $FFMPEG_CONFIGURATION" > $logfile +echo "# $0 $LIBAV_CONFIGURATION" > $logfile set >> $logfile test -n "$cross_prefix" && enable cross_compile @@ -1782,18 +1827,23 @@ set_default arch target_os ar_default="${cross_prefix}${ar_default}" cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" +pkg_config_default="${cross_prefix}${pkg_config_default}" ranlib="${cross_prefix}${ranlib}" -strip_default="${cross_prefix}${strip_default}" sysinclude_default="${sysroot}/usr/include" -set_default cc nm strip sysinclude +set_default cc nm pkg_config sysinclude enabled cross_compile || host_cc_default=$cc set_default host_cc +if ! $pkg_config --version >/dev/null 2>&1; then + warn "$pkg_config not found, library detection may fail." + pkg_config=false +fi + exesuf() { case $1 in - mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;; + mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; esac } @@ -1865,8 +1915,11 @@ if $cc -v 2>&1 | grep -q '^gcc.*LLVM'; then elif $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" + gcc_version=$($cc --version | head -n1) + gcc_basever=$($cc -dumpversion) + gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)') + gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)") + cc_ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver") if ! $cc -dumpversion | grep -q '^2\.'; then CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' @@ -2016,6 +2069,7 @@ elif $cc -v 2>&1 | grep -q 'PathScale\|Path64'; then AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' speed_cflags='-O2' size_cflags='-Os' + filter_cflags='filter_out -Wdisabled-optimization' elif $cc -v 2>&1 | grep -q Open64; then cc_type=open64 cc_version=__OPEN64__ @@ -2024,6 +2078,7 @@ elif $cc -v 2>&1 | grep -q Open64; then AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' speed_cflags='-O2' size_cflags='-Os' + filter_cflags='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros' fi test -n "$cc_type" && enable $cc_type || @@ -2042,7 +2097,7 @@ add_asflags $extra_cflags if test -n "$sysroot"; then case "$cc_type" in - gcc|llvm_gcc) + gcc|llvm_gcc|clang) add_cppflags --sysroot="$sysroot" add_ldflags --sysroot="$sysroot" ;; @@ -2050,10 +2105,6 @@ if test -n "$sysroot"; then add_cppflags -I"$sysinclude" add_ldflags --sysroot="$sysroot" ;; - clang) - add_cppflags -isysroot "$sysroot" - add_ldflags -isysroot "$sysroot" - ;; esac fi @@ -2275,7 +2326,7 @@ if test "$?" != 0; then die "C compiler test failed." fi -add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 +add_cppflags -D_ISOC99_SOURCE check_cflags -std=c99 check_cc -D_FILE_OFFSET_BITS=64 < @@ -2285,6 +2336,7 @@ check_cc -D_LARGEFILE_SOURCE < 3) \ || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || die "ERROR: MinGW runtime version must be >= 3.15." + add_cppflags -U__STRICT_ANSI__ ;; cygwin*) target_os=cygwin @@ -2409,15 +2460,16 @@ case $target_os in objformat="win32" enable dos_paths check_cflags -fno-common + add_cppflags -U__STRICT_ANSI__ ;; *-dos|freedos|opendos) - disable ffplay ffserver - disable $INDEV_LIST $OUTDEV_LIST network_extralibs="-lsocket" objformat="coff" enable dos_paths + add_cppflags -U__STRICT_ANSI__ ;; linux) + add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 enable dv1394 ;; irix*) @@ -2425,8 +2477,9 @@ case $target_os in ranlib="echo ignoring ranlib" ;; os/2*) - strip="lxlite" ln_s="cp -f" + objformat="aout" + add_cppflags -D_GNU_SOURCE add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' FFSERVERLDFLAGS="" @@ -2448,6 +2501,7 @@ case $target_os in enable dos_paths ;; gnu/kfreebsd) + add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE ;; gnu) ;; @@ -2455,6 +2509,11 @@ case $target_os in add_cppflags -D_QNX_SOURCE network_extralibs="-lsocket" ;; + symbian) + SLIBSUF=".dll" + enable dos_paths + add_cflags --include=$sysinclude/gcce/gcce.h + ;; none) ;; *) @@ -2462,7 +2521,7 @@ case $target_os in ;; esac -echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate +echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$LIBAV_CONFIGURATION" >config.fate check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic @@ -2488,13 +2547,14 @@ die_license_disabled() { 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 +die_license_disabled version3 libvo_aacenc +die_license_disabled version3 libvo_amrwbenc enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } @@ -2570,6 +2630,7 @@ EOF 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 vfpv3 && check_asm vfpv3 '"vmov.f32 s0, #1.0"' enabled_all armv6t2 shared !pic && enable_pic @@ -2676,6 +2737,7 @@ EOF check_yasm "pextrd [eax], xmm0, 1" && enable yasm || die "yasm not found, use --disable-yasm for a crippled build" + check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx fi case "$cpu" in @@ -2692,6 +2754,8 @@ if enabled asm; then $nogas "GNU assembler not found, install gas-preprocessor" fi +check_ldflags -Wl,--as-needed + if check_func dlopen; then ldl= elif check_func dlopen -ldl; then @@ -2735,6 +2799,7 @@ 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 localtime_r check_func ${malloc_prefix}memalign && enable memalign check_func mkstemp check_func mmap @@ -2749,7 +2814,6 @@ check_func_headers windows.h GetProcessTimes check_func_headers windows.h MapViewOfFile check_func_headers windows.h VirtualAlloc -check_header conio.h check_header dlfcn.h check_header dxva2api.h check_header malloc.h @@ -2757,18 +2821,12 @@ 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 @@ -2799,8 +2857,8 @@ for thread in $THREADS_LIST; do fi done -check_lib math.h sin -lm -disabled vaapi || check_lib va/va.h vaInitialize -lva +check_lib math.h sin -lm && LIBM="-lm" +enabled vaapi && require vaapi va/va.h vaInitialize -lva check_mathfunc exp2 check_mathfunc exp2f @@ -2812,29 +2870,30 @@ check_mathfunc lrint check_mathfunc lrintf check_mathfunc round check_mathfunc roundf +check_mathfunc trunc 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 frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; } -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 libdirac && require_pkg_config dirac \ + "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h" \ + "dirac_decoder_init dirac_encoder_init" enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac +enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType enabled libgsm && require libgsm gsm/gsm.h gsm_create -lgsm enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -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 libopencv && { check_lib opencv/cv.h cvCreateImageHeader $(pkg-config --libs opencv) || - die "ERROR: libopencv not found"; } +enabled libopencv && require_pkg_config opencv opencv/cv.h cvCreateImageHeader 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 librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket +enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init 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 libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc +enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc 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 || @@ -2842,8 +2901,8 @@ enabled libvpx && { 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 >= 99" || - die "ERROR: libx264 version must be >= 0.99."; } + { check_cpp_condition x264.h "X264_BUILD >= 115" || + die "ERROR: libx264 version must be >= 0.115."; } 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 @@ -2857,11 +2916,7 @@ if enabled libdc1394; then 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 && +if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && enable sdl && check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size @@ -2869,6 +2924,7 @@ fi texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html +check_header linux/fb.h check_header linux/videodev.h check_header linux/videodev2.h check_header sys/videoio.h @@ -2887,6 +2943,7 @@ check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_def check_header dev/video/bktr/ioctl_bt848.h; } || check_header dev/ic/bt8xx.h +check_header sndio.h check_header sys/soundcard.h check_header soundcard.h @@ -2894,6 +2951,8 @@ enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimes enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack +enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio + enabled x11grab && check_header X11/Xlib.h && check_header X11/extensions/XShm.h && @@ -2929,8 +2988,7 @@ 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,-rpath-link,libpostproc -Wl,-rpath-link,libswscale -Wl,-rpath-link,libavfilter -Wl,-rpath-link,libavdevice -Wl,-rpath-link,libavformat -Wl,-rpath-link,libavcodec -Wl,-rpath-link,libavutil test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic echo "X{};" > $TMPV @@ -2962,10 +3020,11 @@ if enabled icc; then check_cflags -w1 # -wd: Disable following warnings # 144, 167, 556: -Wno-pointer-sign + # 1292: attribute "foo" ignored # 10006: ignoring unknown option -fno-signed-zeros # 10148: ignoring unknown option -Wno-parentheses # 10156: ignoring option '-W'; no argument required - check_cflags -wd144,167,556,10006,10148,10156 + check_cflags -wd144,167,556,1292,10006,10148,10156 # 11030: Warning unknown option --as-needed # 10156: ignoring option '-export'; no argument required check_ldflags -wd10156,11030 @@ -3031,6 +3090,9 @@ check_deps $CONFIG_LIST \ enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } +! enabled_any memalign posix_memalign malloc_aligned && + enabled_any $need_memalign && enable memalign_hack + echo "install prefix $prefix" echo "source path $source_path" echo "C compiler $cc" @@ -3044,13 +3106,14 @@ fi echo "big-endian ${bigendian-no}" echo "runtime cpu detection ${runtime_cpudetect-no}" if enabled x86; then - echo "yasm ${yasm-no}" + echo "${yasmexe} ${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 "AVX enabled ${avx-no}" echo "CMOV enabled ${cmov-no}" echo "CMOV is fast ${fast_cmov-no}" echo "EBX available ${ebx_available-no}" @@ -3077,7 +3140,6 @@ 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}" @@ -3103,6 +3165,9 @@ echo "librtmp enabled ${librtmp-no}" echo "libschroedinger enabled ${libschroedinger-no}" echo "libspeex enabled ${libspeex-no}" echo "libtheora enabled ${libtheora-no}" +echo "libva enabled ${vaapi-no}" +echo "libvo-aacenc support ${libvo_aacenc-no}" +echo "libvo-amrwbenc support ${libvo_amrwbenc-no}" echo "libvorbis enabled ${libvorbis-no}" echo "libvpx enabled ${libvpx-no}" echo "libx264 enabled ${libx264-no}" @@ -3115,7 +3180,7 @@ 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 + print_enabled '_*' $list | sort | pr -r -3 -t echo done @@ -3140,7 +3205,6 @@ if enabled source_path_used; then doc libavcodec libavcodec/$arch - libavcore libavdevice libavfilter libavfilter/$arch @@ -3160,7 +3224,6 @@ if enabled source_path_used; then doc/texi2pod.pl libavcodec/Makefile libavcodec/${arch}/Makefile - libavcore/Makefile libavdevice/Makefile libavfilter/Makefile libavfilter/${arch}/Makefile @@ -3173,15 +3236,13 @@ if enabled source_path_used; then map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES fi -enabled stripping || strip="echo skipping strip" - config_files="$TMPH config.mak" cat > config.mak < $TMPH <> $TMPH -echo "endif # FFMPEG_CONFIG_MAK" >> config.mak +echo "#endif /* LIBAV_CONFIG_H */" >> $TMPH +echo "endif # LIBAV_CONFIG_MAK" >> config.mak # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. cp_if_changed $TMPH config.h @@ -3390,11 +3448,10 @@ 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" +pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM" +pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" +pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" +pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" +pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" +pkgconfig_generate libpostproc "Libav post processing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" +pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"