X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=7b90fcefc38738aa09d790650f206e441fb02da3;hb=70b348ec5b6a524ead4283fb5831891fe6658d5a;hp=6d9ed503cb0cb23b60229b66378eccfbc3efc009;hpb=33db40f8d38de03efa0d2a80aa298cf6e1f95093;p=ffmpeg diff --git a/configure b/configure index 6d9ed503cb0..7b90fcefc38 100755 --- a/configure +++ b/configure @@ -100,6 +100,7 @@ Configuration options: --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary) --enable-gray enable full grayscale support (slower color) --disable-swscale-alpha disable alpha channel support in swscale + --disable-all disable building components, libraries and programs Program options: --disable-programs do not build command line programs @@ -113,6 +114,7 @@ Component options: --disable-avdevice disable libavdevice build --disable-avcodec disable libavcodec build --disable-avformat disable libavformat build + --disable-avutil disable libavutil build --disable-swscale disable libswscale build --disable-avfilter disable video filter support [no] --disable-avresample disable libavresample build [no] @@ -121,12 +123,13 @@ Component options: --enable-x11grab enable X11 grabbing [no] --disable-network disable network support [no] --disable-dct disable DCT code - --disable-dwt disable DWT code --disable-lsp disable LSP code --disable-lzo disable LZO decoder code --disable-mdct disable MDCT code --disable-rdft disable RDFT code --disable-fft disable FFT code + +Hardware accelerators: --enable-dxva2 enable DXVA2 code --enable-vaapi enable VAAPI code --enable-vda enable VDA code @@ -196,7 +199,7 @@ External library support: --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 [no] - --enable-libvpx enable VP8 de/encoding via libvpx [no] + --enable-libvpx enable VP8 and VP9 de/encoding 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, @@ -264,7 +267,7 @@ Optimization options (experts only): --disable-armv5te disable armv5te optimizations --disable-armv6 disable armv6 optimizations --disable-armv6t2 disable armv6t2 optimizations - --disable-armvfp disable ARM VFP optimizations + --disable-vfp disable VFP optimizations --disable-neon disable NEON optimizations --disable-vis disable VIS optimizations --disable-inline-asm disable use of inline assembler @@ -534,12 +537,13 @@ is_in(){ return 1 } -check_deps(){ +do_check_deps(){ for cfg; do cfg="${cfg#!}" enabled ${cfg}_checking && die "Circular dependency for $cfg." disabled ${cfg}_checking && continue enable ${cfg}_checking + append allopts $cfg eval dep_all="\$${cfg}_deps" eval dep_any="\$${cfg}_deps_any" @@ -549,7 +553,7 @@ check_deps(){ 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 + do_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; } @@ -559,8 +563,6 @@ check_deps(){ 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 @@ -569,6 +571,18 @@ check_deps(){ done } +check_deps(){ + unset allopts + + do_check_deps "$@" + + for cfg in $allopts; do + enabled $cfg || continue + eval dep_extralibs="\$${cfg}_extralibs" + test -n "$dep_extralibs" && add_extralibs $dep_extralibs + done +} + print_config(){ pfx=$1 files=$2 @@ -681,9 +695,9 @@ as_o(){ check_as(){ log check_as "$@" - cat > $TMPC - log_file $TMPC - check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPC + cat > $TMPS + log_file $TMPS + check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS } check_inline_asm(){ @@ -692,11 +706,17 @@ check_inline_asm(){ code="$2" shift 2 disable $name - check_as "$@" < $TMPS @@ -979,6 +999,22 @@ COMPONENT_LIST=" protocols " +HWACCEL_LIST=" + dxva2 + vaapi + vda + vdpau +" +LIBRARY_LIST=" + avcodec + avdevice + avfilter + avformat + avresample + avutil + swscale +" + PROGRAM_LIST=" avconv avplay @@ -988,18 +1024,13 @@ PROGRAM_LIST=" CONFIG_LIST=" $COMPONENT_LIST + $HWACCEL_LIST + $LIBRARY_LIST $PROGRAM_LIST - avcodec - avdevice - avfilter - avformat - avresample avisynth bzlib dct doc - dwt - dxva2 fft frei0r gnutls @@ -1046,12 +1077,8 @@ CONFIG_LIST=" small sram static - swscale swscale_alpha thumb - vaapi - vda - vdpau version3 xmm_clobber_test x11grab @@ -1090,6 +1117,15 @@ ARCH_LIST=' x86_64 ' +ARCH_EXT_LIST_ARM=' + armv5te + armv6 + armv6t2 + neon + vfp + vfpv3 +' + ARCH_EXT_LIST_X86=' amd3dnow amd3dnowext @@ -1106,15 +1142,10 @@ ARCH_EXT_LIST_X86=' ' ARCH_EXT_LIST=" + $ARCH_EXT_LIST_ARM $ARCH_EXT_LIST_X86 altivec - armv5te - armv6 - armv6t2 - armvfp - neon ppc4xx - vfpv3 vis " @@ -1173,8 +1204,11 @@ HAVE_LIST=" asm_mod_y attribute_may_alias attribute_packed + cdio_paranoia_h + cdio_paranoia_paranoia_h closesocket cmov + CommandLineToArgvW cpunop CryptGenRandom dcbzl @@ -1206,6 +1240,7 @@ HAVE_LIST=" getservbyport gettimeofday gnu_as + gsm_h ibm_asm inet_aton io_h @@ -1235,6 +1270,7 @@ HAVE_LIST=" sched_getaffinity sdl sdl_video_size + SetConsoleTextAttribute setmode setrlimit Sleep @@ -1276,11 +1312,10 @@ HAVE_LIST=" xmm_clobbers " -# options emitted with CONFIG_ prefix but not available on command line +# options emitted with CONFIG_ prefix but not available on the command line CONFIG_EXTRA=" aandcttables ac3dsp - avutil error_resilience gcrypt golomb @@ -1299,7 +1334,9 @@ CONFIG_EXTRA=" nettle rangecoder rtpdec + rtpenc_chain sinewin + videodsp vp3dsp " @@ -1371,9 +1408,11 @@ CMDLINE_APPEND=" armv5te_deps="arm" armv6_deps="arm" armv6t2_deps="arm" -armvfp_deps="arm" neon_deps="arm" -vfpv3_deps="armvfp" +vfp_deps="arm" +vfpv3_deps="vfp" + +map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM altivec_deps="ppc" ppc4xx_deps="ppc" @@ -1408,8 +1447,8 @@ done aligned_stack_if_any="ppc x86" 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" +fast_clz_if_any="alpha avr32 mips ppc x86" +fast_unaligned_if_any="ppc x86" inline_asm_deps="!tms470" need_memalign="altivec neon sse" @@ -1424,9 +1463,10 @@ mdct_select="fft" rdft_select="fft" mpegaudio_select="mpegaudiodsp" mpegaudiodsp_select="dct" +mpegvideo_select="videodsp" mpegvideoenc_select="mpegvideo" -# decoders / encoders / hardware accelerators +# decoders / encoders aac_decoder_select="mdct sinewin" aac_encoder_select="mdct sinewin" aac_latm_decoder_select="aac_decoder aac_latm_parser" @@ -1468,15 +1508,9 @@ h261_decoder_select="error_resilience mpegvideo" h261_encoder_select="aandcttables mpegvideoenc" h263_decoder_select="error_resilience h263_parser mpegvideo" h263_encoder_select="aandcttables error_resilience mpegvideoenc" -h263_vaapi_hwaccel_select="vaapi h263_decoder" h263i_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" h264_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo" -h264_dxva2_hwaccel_deps="dxva2api_h" -h264_dxva2_hwaccel_select="dxva2 h264_decoder" -h264_vaapi_hwaccel_select="vaapi h264_decoder" -h264_vda_hwaccel_select="vda h264_decoder" -h264_vdpau_decoder_select="vdpau h264_decoder" huffyuv_encoder_select="huffman" iac_decoder_select="fft mdct sinewin" imc_decoder_select="fft mdct sinewin" @@ -1499,21 +1533,14 @@ mp3on4_decoder_select="mpegaudio" mp3on4float_decoder_select="mpegaudio" mpc7_decoder_select="mpegaudiodsp" mpc8_decoder_select="mpegaudiodsp" -mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder" mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" mpeg_xvmc_decoder_select="mpegvideo_decoder" -mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder" mpeg1video_decoder_select="error_resilience mpegvideo" mpeg1video_encoder_select="aandcttables error_resilience mpegvideoenc" -mpeg2_dxva2_hwaccel_deps="dxva2api_h" -mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder" -mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder" mpeg2video_decoder_select="error_resilience mpegvideo" mpeg2video_encoder_select="aandcttables error_resilience mpegvideoenc" mpeg4_decoder_select="h263_decoder mpeg4video_parser" mpeg4_encoder_select="h263_encoder" -mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder" -mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder" msmpeg4v1_decoder_select="h263_decoder" msmpeg4v1_encoder_select="h263_encoder" msmpeg4v2_decoder_select="h263_decoder" @@ -1538,8 +1565,6 @@ rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvi rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo" shorten_decoder_select="golomb" sipr_decoder_select="lsp" -snow_decoder_select="dwt rangecoder" -snow_encoder_select="aandcttables dwt error_resilience mpegvideoenc rangecoder" svq1_decoder_select="error_resilience mpegvideo" svq1_encoder_select="aandcttables error_resilience mpegvideoenc" svq3_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo" @@ -1552,19 +1577,15 @@ tscc_decoder_select="zlib" twinvq_decoder_select="mdct lsp sinewin" utvideo_encoder_select="huffman" vc1_decoder_select="h263_decoder h264chroma h264qpel" -vc1_dxva2_hwaccel_deps="dxva2api_h" -vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" -vc1_vaapi_hwaccel_select="vaapi vc1_decoder" -vc1_vdpau_decoder_select="vdpau vc1_decoder" vc1image_decoder_select="vc1_decoder" vorbis_decoder_select="mdct" vorbis_encoder_select="mdct" -vp3_decoder_select="vp3dsp" -vp5_decoder_select="vp3dsp" -vp6_decoder_select="huffman vp3dsp" +vp3_decoder_select="vp3dsp videodsp" +vp5_decoder_select="vp3dsp videodsp" +vp6_decoder_select="huffman vp3dsp videodsp" vp6a_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder" -vp8_decoder_select="h264pred h264qpel" +vp8_decoder_select="h264pred videodsp" wmapro_decoder_select="mdct sinewin" wmav1_decoder_select="mdct sinewin" wmav1_encoder_select="mdct sinewin" @@ -1576,9 +1597,6 @@ 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" wmv3image_decoder_select="wmv3_decoder" zerocodec_decoder_select="zlib" zlib_decoder_select="zlib" @@ -1586,12 +1604,41 @@ zlib_encoder_select="zlib" zmbv_decoder_select="zlib" zmbv_encoder_select="zlib" +# hardware accelerators vaapi_deps="va_va_h" vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" +h263_vaapi_hwaccel_select="vaapi h263_decoder" +h263_vdpau_hwaccel_select="vdpau h263_decoder" +h264_dxva2_hwaccel_deps="dxva2api_h" +h264_dxva2_hwaccel_select="dxva2 h264_decoder" +h264_vaapi_hwaccel_select="vaapi h264_decoder" +h264_vda_hwaccel_select="vda h264_decoder" +h264_vdpau_decoder_select="vdpau h264_decoder" +h264_vdpau_hwaccel_select="vdpau h264_decoder" +mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder" +mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder" +mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder" +mpeg2_dxva2_hwaccel_deps="dxva2api_h" +mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder" +mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder" +mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder" +mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder" +mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder" +mpeg4_vdpau_hwaccel_select="vdpau mpeg4_decoder" +vc1_dxva2_hwaccel_deps="dxva2api_h" +vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" +vc1_vaapi_hwaccel_select="vaapi vc1_decoder" +vc1_vdpau_decoder_select="vdpau vc1_decoder" +vc1_vdpau_hwaccel_select="vdpau vc1_decoder" +wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" +wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" +wmv3_vdpau_decoder_select="vc1_vdpau_decoder" +wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" + # parsers -h264_parser_select="error_resilience golomb h264dsp h264pred mpegvideo" +h264_parser_select="error_resilience golomb h264dsp h264pred h264qpel mpegvideo" mpeg4video_parser_select="error_resilience mpegvideo" mpegvideo_parser_select="error_resilience mpegvideo" vc1_parser_select="error_resilience mpegvideo" @@ -1621,8 +1668,10 @@ 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" +libvpx_vp8_decoder_deps="libvpx" +libvpx_vp8_encoder_deps="libvpx" +libvpx_vp9_decoder_deps="libvpx" +libvpx_vp9_encoder_deps="libvpx" libx264_encoder_deps="libx264" libxavs_encoder_deps="libxavs" libxvid_encoder_deps="libxvid" @@ -1635,9 +1684,11 @@ dirac_demuxer_select="dirac_parser" eac3_demuxer_select="ac3_parser" flac_demuxer_select="flac_parser" ipod_muxer_select="mov_muxer" +ismv_muxer_select="mov_muxer" matroska_audio_muxer_select="matroska_muxer" matroska_demuxer_suggest="bzlib lzo zlib" mov_demuxer_suggest="zlib" +mov_muxer_select="rtpenc_chain" mp3_demuxer_select="mpegaudio_parser" mp4_muxer_select="mov_muxer" mpegts_muxer_select="adts_muxer latm_muxer mpegvideo" @@ -1649,12 +1700,13 @@ rtp_demuxer_select="sdp_demuxer" rtp_muxer_select="mpegvideo" rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer" rtsp_demuxer_select="http_protocol rtpdec" -rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol" +rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain" sap_demuxer_select="sdp_demuxer" -sap_muxer_select="rtp_muxer rtp_protocol" +sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain" sdp_demuxer_select="rtpdec" smoothstreaming_muxer_select="ismv_muxer" spdif_muxer_select="aac_parser" +tak_demuxer_select="tak_parser" tg2_muxer_select="mov_muxer" tgp_muxer_select="mov_muxer" w64_demuxer_deps="wav_demuxer" @@ -1684,10 +1736,8 @@ ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl" ffrtmpcrypt_protocol_select="tcp_protocol" ffrtmphttp_protocol_deps="!librtmp_protocol" ffrtmphttp_protocol_select="http_protocol" -gopher_protocol_deps="network" -httpproxy_protocol_deps="network" +gopher_protocol_select="network" httpproxy_protocol_select="tcp_protocol" -http_protocol_deps="network" http_protocol_select="tcp_protocol" https_protocol_select="tls_protocol" librtmp_protocol_deps="librtmp" @@ -1696,7 +1746,7 @@ librtmps_protocol_deps="librtmp" librtmpt_protocol_deps="librtmp" librtmpte_protocol_deps="librtmp" mmsh_protocol_select="http_protocol" -mmst_protocol_deps="network" +mmst_protocol_select="network" rtmp_protocol_deps="!librtmp_protocol" rtmp_protocol_select="tcp_protocol" rtmpe_protocol_select="ffrtmpcrypt_protocol" @@ -1706,11 +1756,13 @@ rtmpt_protocol_select="ffrtmphttp_protocol" rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol" rtmpts_protocol_select="ffrtmphttp_protocol https_protocol" rtp_protocol_select="udp_protocol" -sctp_protocol_deps="network struct_sctp_event_subscribe" -tcp_protocol_deps="network" +sctp_protocol_deps="struct_sctp_event_subscribe" +sctp_protocol_select="network" +srtp_protocol_select="rtp_protocol" +tcp_protocol_select="network" tls_protocol_deps_any="openssl gnutls" tls_protocol_select="tcp_protocol" -udp_protocol_deps="network" +udp_protocol_select="network" # filters blackframe_filter_deps="gpl" @@ -1729,14 +1781,19 @@ scale_filter_deps="swscale" yadif_filter_deps="gpl" # libraries -avdevice_deps="avcodec avformat" -avformat_deps="avcodec" +avcodec_deps="avutil" +avdevice_deps="avutil avcodec avformat" +avfilter_deps="avutil" +avformat_deps="avutil avcodec" +avresample_deps="avutil" +swscale_deps="avutil" # programs -avconv_deps="avcodec avfilter avformat avresample swscale - aformat_filter asyncts_filter - format_filter fps_filter scale_filter setpts_filter" -avplay_deps="avcodec avformat swscale sdl" +avconv_deps="avcodec avfilter avformat avresample swscale" +avconv_select="aformat_filter anull_filter asyncts_filter format_filter + fps_filter null_filter resample_filter scale_filter + setpts_filter" +avplay_deps="avcodec avformat avresample swscale sdl" avplay_select="rdft" avprobe_deps="avcodec avformat" avserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer !shared" @@ -1780,20 +1837,11 @@ target_os_default=$(tolower $(uname -s)) host_os=$target_os_default # configurable options -enable $PROGRAM_LIST - -enable avcodec -enable avdevice -enable avfilter -enable avformat -enable avresample -enable avutil -enable swscale +enable $LIBRARY_LIST $PROGRAM_LIST enable asm enable debug enable doc -enable network enable optimizations enable safe_bitstream_reader enable static @@ -1900,8 +1948,6 @@ for n in $COMPONENT_LIST; do eval ${n}_if_any="\$$v" done -disable snow_decoder snow_encoder - enable $ARCH_EXT_LIST die_unknown(){ @@ -1941,66 +1987,74 @@ do_random(){ 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-programs) - disable $PROGRAM_LIST - ;; - --disable-everything) - map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST - ;; - --enable-random|--disable-random) - action=${opt%%-random} - do_random ${action#--} $COMPONENT_LIST - ;; - --enable-random=*|--disable-random=*) - action=${opt%%-random=*} - do_random ${action#--} $optval - ;; - --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 - ;; + --extra-ldflags=*) + add_ldflags $optval + ;; + --extra-libs=*) + add_extralibs $optval + ;; + --disable-devices) + disable $INDEV_LIST $OUTDEV_LIST + ;; + --enable-debug=*) + debuglevel="$optval" + ;; + --disable-programs) + disable $PROGRAM_LIST + ;; + --disable-everything) + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + ;; + --disable-all) + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + disable $LIBRARY_LIST $PROGRAM_LIST doc + ;; + --enable-random|--disable-random) + action=${opt%%-random} + do_random ${action#--} $COMPONENT_LIST + ;; + --enable-random=*|--disable-random=*) + action=${opt%%-random=*} + do_random ${action#--} $optval + ;; + --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 @@ -2145,6 +2199,7 @@ msvc_flags(){ -fno-math-errno) ;; -fno-common) ;; -fno-signed-zeros) ;; + -fPIC) ;; -lz) echo zlib.lib ;; -lavifil32) echo vfw32.lib ;; -lavicap32) echo vfw32.lib user32.lib ;; @@ -2182,6 +2237,8 @@ suncc_flags(){ prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; *-sse3) echo -xarch=sse3 ;; core2) echo -xarch=ssse3 -xchip=core2 ;; + corei7) echo -xarch=sse4_2 -xchip=nehalem ;; + corei7-avx) echo -xarch=avx -xchip=sandybridge ;; amdfam10|barcelona|bdver*) echo -xarch=sse4_1 ;; athlon-4|athlon-[mx]p) echo -xarch=ssea ;; k8|opteron|athlon64|athlon-fx) @@ -2193,7 +2250,8 @@ suncc_flags(){ -fomit-frame-pointer) echo -xregs=frameptr ;; -fPIC) echo -KPIC -xcode=pic32 ;; -W*,*) echo $flag ;; - -f*-*|-W*) ;; + -f*-*|-W*|-mimpure-text) ;; + -shared) echo -G ;; *) echo $flag ;; esac done @@ -2514,10 +2572,7 @@ is_in $arch $ARCH_LIST || warn "unknown architecture $arch" enable $arch # Add processor-specific flags -if test "$cpu" = generic; then - : do nothing - -elif enabled aarch64; then +if enabled aarch64; then case $cpu in armv*) @@ -2534,6 +2589,37 @@ elif enabled alpha; then elif enabled arm; then + check_arm_arch() { + check_cpp_condition stddef.h \ + "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \ + $cpuflags + } + + probe_arm_arch() { + if check_arm_arch 4; then echo armv4; + elif check_arm_arch 4T; then echo armv4t; + elif check_arm_arch 5; then echo armv5; + elif check_arm_arch 5E; then echo armv5e; + elif check_arm_arch 5T; then echo armv5t; + elif check_arm_arch 5TE; then echo armv5te; + elif check_arm_arch 5TEJ; then echo armv5te; + elif check_arm_arch 6; then echo armv6; + elif check_arm_arch 6J; then echo armv6j; + elif check_arm_arch 6K; then echo armv6k; + elif check_arm_arch 6Z; then echo armv6z; + elif check_arm_arch 6ZK; then echo armv6zk; + elif check_arm_arch 6T2; then echo armv6t2; + elif check_arm_arch 7; then echo armv7; + elif check_arm_arch 7A 7_A; then echo armv7-a; + elif check_arm_arch 7R 7_R; then echo armv7-r; + elif check_arm_arch 7M 7_M; then echo armv7-m; + elif check_arm_arch 7EM 7E_M; then echo armv7-m; + elif check_arm_arch 8A 8_A; then echo armv8-a; + fi + } + + [ "$cpu" = generic ] && cpu=$(probe_arm_arch) + case $cpu in armv*) cpuflags="-march=$cpu" @@ -2548,10 +2634,16 @@ elif enabled arm; then arm11*) subarch=armv6 ;; arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; armv4*|arm7*|arm9[24]*) subarch=armv4 ;; + *) subarch=$(probe_arm_arch) ;; esac ;; esac + case "$subarch" in + armv5t*) enable fast_clz ;; + armv[6-8]*) enable fast_clz fast_unaligned ;; + esac + elif enabled avr32; then case $cpu in @@ -2655,7 +2747,7 @@ elif enabled x86; then 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|atom|bdver*) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*) cpuflags="-march=$cpu" enable cmov enable fast_cmov @@ -2670,8 +2762,10 @@ elif enabled x86; then fi -add_cflags $cpuflags -add_asflags $cpuflags +if [ "$cpu" != generic ]; then + add_cflags $cpuflags + add_asflags $cpuflags +fi # compiler sanity check check_exec < 4' + spic=$shared ;; sparc) check_64bit sparc sparc64 'sizeof(void *) > 4' @@ -2763,12 +2858,6 @@ case $target_os in oss_outdev_extralibs="-lossaudio" ;; openbsd|bitrig) - # On OpenBSD 4.5. the compiler does not use PIC unless - # explicitly using -fPIC. Libav 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 disable symver SHFLAGS='-shared' SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBVERSION)' @@ -2816,12 +2905,12 @@ case $target_os in SLIBSUF=".dll" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' - SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' + SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS= SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' - 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' + SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' objformat="win32" dlltool="${cross_prefix}dlltool" ranlib=: @@ -2951,21 +3040,23 @@ esac # determine libc flavour +# uclibc defines __GLIBC__, so it needs to be checked before glibc. if check_cpp_condition features.h "defined __UCLIBC__"; then libc_type=uclibc add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 elif check_cpp_condition features.h "defined __GLIBC__"; then libc_type=glibc add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 +# MinGW headers can be installed on Cygwin, so check for newlib first. +elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then + libc_type=newlib + add_cppflags -U__STRICT_ANSI__ elif check_header _mingw.h; then libc_type=mingw 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." -elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then - libc_type=newlib - add_cppflags -U__STRICT_ANSI__ elif check_func_headers stdlib.h _get_doserrno; then libc_type=msvcrt add_compat strtod.o strtod=avpriv_strtod @@ -3082,6 +3173,7 @@ if enabled alpha; then elif enabled arm; then + check_cpp_condition stddef.h "defined __thumb__" && enable_weak thumb enabled thumb && check_cflags -mthumb || check_cflags -marm nogas=die @@ -3098,12 +3190,16 @@ EOF warn "Compiler does not indicate floating-point ABI, guessing $fpabi." fi - enabled armv5te && check_inline_asm armv5te '"qadd r0, r0, r0"' - enabled armv6 && check_inline_asm armv6 '"sadd16 r0, r0, r0"' - enabled armv6t2 && check_inline_asm armv6t2 '"movt r0, #0"' - enabled armvfp && check_inline_asm armvfp '"fadds s0, s0, s0"' - enabled neon && check_inline_asm neon '"vadd.i16 q0, q0, q0"' - enabled vfpv3 && check_inline_asm vfpv3 '"vmov.f32 s0, #1.0"' + enabled armv5te && check_insn armv5te 'qadd r0, r0, r0' + enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0' + enabled armv6t2 && check_insn armv6t2 'movt r0, #0' + enabled neon && check_insn neon 'vadd.i16 q0, q0, q0' + enabled vfp && check_insn vfp 'fadds s0, s0, s0' + enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0' + + [ $target_os = linux ] || + map 'enabled_any ${v}_external ${v}_inline || disable $v' \ + $ARCH_EXT_LIST_ARM check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)' check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)' @@ -3218,8 +3314,13 @@ fi if enabled asm; then as=${gas:=$as} - check_inline_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' || + check_as <= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb @@ -3391,10 +3495,12 @@ enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -l 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 || + enabled libvpx_vp8_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 VPX_CQ" -lvpx || - die "ERROR: libvpx encoder version must be >=0.9.6"; } } + enabled libvpx_vp8_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VPX_CQ" -lvpx || + die "ERROR: libvpx encoder version must be >=0.9.6"; } + enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; } + enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } } enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && { check_cpp_condition x264.h "X264_BUILD >= 118" || die "ERROR: libx264 version must be >= 0.118."; } @@ -3458,8 +3564,9 @@ 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 libcdio && - check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio +if enabled libcdio; then + check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio +fi enabled x11grab && require X11 X11/Xlib.h XOpenDisplay -lX11 && @@ -3585,6 +3692,7 @@ elif enabled gcc; then check_optflags -fno-tree-vectorize check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes + check_cflags -Werror=return-type check_cflags -Werror=declaration-after-statement check_cflags -Werror=vla elif enabled llvm_gcc; then @@ -3594,6 +3702,7 @@ elif enabled clang; then check_cflags -Qunused-arguments check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes + check_cflags -Werror=return-type elif enabled armcc; then # 2523: use of inline assembler is deprecated add_cflags -W${armcc_opt},--diag_suppress=2523 @@ -3662,7 +3771,7 @@ 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 "VFP enabled ${vfp-no}" echo "NEON enabled ${neon-no}" fi if enabled ppc; then @@ -3787,7 +3896,7 @@ LD_PATH=$LD_PATH DLLTOOL=$dlltool LDFLAGS=$LDFLAGS LDFLAGS-avserver=$AVSERVERLDFLAGS -SHFLAGS=$SHFLAGS +SHFLAGS=$(echo $($ldflags_filter $SHFLAGS)) YASMFLAGS=$YASMFLAGS BUILDSUF=$build_suffix FULLNAME=$FULLNAME @@ -3842,7 +3951,7 @@ SAMPLES:=${samples:-\$(LIBAV_SAMPLES)} EOF get_version(){ - lcname=$1 + lcname=lib${1} name=$(toupper $lcname) file=$source_path/$lcname/version.h eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file") @@ -3851,13 +3960,7 @@ get_version(){ eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak } -get_version libavcodec -get_version libavdevice -get_version libavfilter -get_version libavformat -get_version libavresample -get_version libavutil -get_version libswscale +map 'get_version $v' $LIBRARY_LIST cat > $TMPH <