X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=abd599ef1d97cdd1cf46ecf2d650cda0740b0da2;hb=67f34aaa9746f6446baf112639ff8c6e5a0fa4ba;hp=e4f99cfe6388a890798dfac37cb09beb9941c666;hpb=f054aaf731e5c0cad4967addb59360ecb24b1d47;p=ffmpeg diff --git a/configure b/configure index e4f99cfe638..abd599ef1d9 100755 --- a/configure +++ b/configure @@ -86,11 +86,11 @@ 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-avfilter disable video filter support [no] - --enable-avfilter-lavf video filters dependent on avformat [no] --disable-pthreads disable pthreads [auto] --enable-w32threads use Win32 threads [no] --enable-x11grab enable X11 grabbing [no] @@ -104,6 +104,7 @@ Configuration options: --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 @@ -161,8 +162,10 @@ Configuration options: External library support: --enable-avisynth enable reading of AVISynth script files [no] --enable-bzlib enable bzlib [autodetect] + --enable-frei0r enable frei0r video filtering --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] + --enable-libopencv enable video filtering via libopencv [no] --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no] --enable-libdirac enable Dirac support via libdirac [no] @@ -180,6 +183,7 @@ External library support: 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] @@ -304,7 +308,7 @@ c_escape(){ sh_quote(){ v=$(echo "$1" | sed "s/'/'\\\\''/g") - test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'" + test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'" echo "$v" } @@ -493,20 +497,38 @@ check_deps(){ done } +print_config_h(){ + enabled $1 && v=1 || v=0 + echo "#define $2 $v" +} + +print_config_mak(){ + enabled $1 && v= || v=! + echo "$v$2=yes" +} + +print_config_asm(){ + enabled $1 && echo "%define $2" +} + print_config(){ pfx=$1 - header=$2 - makefile=$3 - shift 3 + files=$2 + shift 2 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 + for f in $files; do + "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f + done + done +} + +print_enabled(){ + test "$1" = -n && end=" " && shift || end="\n" + suf=$1 + shift + for v; do + enabled $v && printf "%s$end" ${v%$suf}; done } @@ -836,9 +858,9 @@ CONFIG_LIST=" $COMPONENT_LIST aandct avcodec + avcore avdevice avfilter - avfilter_lavf avformat avisynth bzlib @@ -852,11 +874,14 @@ CONFIG_LIST=" ffprobe ffserver fft + frei0r golomb gpl gray h264dsp + h264pred hardcoded_tables + huffman libdc1394 libdirac libfaac @@ -865,6 +890,7 @@ CONFIG_LIST=" libnut libopencore_amrnb libopencore_amrwb + libopencv libopenjpeg librtmp libschroedinger @@ -873,6 +899,7 @@ CONFIG_LIST=" libvorbis libvpx libx264 + libxavs libxvid lpc lsp @@ -885,6 +912,7 @@ CONFIG_LIST=" pic postproc rdft + rtpdec runtime_cpudetect shared small @@ -949,12 +977,14 @@ ARCH_EXT_LIST=' HAVE_LIST_PUB=' bigendian + fast_unaligned ' HAVE_LIST=" $ARCH_EXT_LIST $HAVE_LIST_PUB $THREADS_LIST + aligned_stack alsa_asoundlib_h altivec_h arpa_inet_h @@ -980,7 +1010,6 @@ HAVE_LIST=" fast_64bit fast_clz fast_cmov - fast_unaligned fcntl fork getaddrinfo @@ -1024,6 +1053,7 @@ HAVE_LIST=" poll_h setrlimit strerror_r + strtok_r struct_addrinfo struct_ipv6_mreq struct_sockaddr_in6 @@ -1045,6 +1075,7 @@ HAVE_LIST=" VirtualAlloc winsock2_h xform_asm + xmm_clobbers yasm " @@ -1139,6 +1170,7 @@ mmx2_deps="mmx" sse_deps="mmx" ssse3_deps="sse" +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" @@ -1149,11 +1181,12 @@ inline_asm_deps="!tms470" symver_if_any="symver_asm_label symver_gnu_asm" # subsystems +dct_select="rdft" mdct_select="fft" rdft_select="fft" # decoders / encoders / hardware accelerators -aac_decoder_select="mdct rdft aac_parser" +aac_decoder_select="mdct rdft" aac_encoder_select="mdct" ac3_decoder_select="mdct ac3_parser" alac_encoder_select="lpc" @@ -1179,13 +1212,14 @@ 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" +h264_decoder_select="golomb h264dsp h264pred" h264_dxva2_hwaccel_deps="dxva2api_h" h264_dxva2_hwaccel_select="dxva2 h264_decoder" h264_vaapi_hwaccel_select="vaapi" @@ -1232,8 +1266,8 @@ rv10_decoder_select="h263_decoder" rv10_encoder_select="h263_encoder" rv20_decoder_select="h263_decoder" rv20_encoder_select="h263_encoder" -rv30_decoder_select="golomb h264dsp" -rv40_decoder_select="golomb h264dsp" +rv30_decoder_select="golomb h264pred" +rv40_decoder_select="golomb h264pred" shorten_decoder_select="golomb" sipr_decoder_select="lsp" snow_decoder_select="dwt" @@ -1242,7 +1276,7 @@ sonic_decoder_select="golomb" sonic_encoder_select="golomb" sonic_ls_encoder_select="golomb" svq1_encoder_select="aandct" -svq3_decoder_select="golomb h264dsp" +svq3_decoder_select="golomb h264dsp h264pred" svq3_decoder_suggest="zlib" theora_decoder_select="vp3_decoder" tiff_decoder_suggest="zlib" @@ -1257,9 +1291,10 @@ 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="h264dsp" +vp8_decoder_select="h264pred" wmapro_decoder_select="mdct" wmav1_decoder_select="mdct" wmav1_encoder_select="mdct" @@ -1283,10 +1318,7 @@ vaapi_deps="va_va_h" vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" # parsers -h264_parser_select="golomb h264dsp" - -# bitstream_filters -aac_adtstoasc_bsf_select="aac_parser" +h264_parser_select="golomb h264dsp h264pred" # external libraries libdirac_decoder_deps="libdirac !libschroedinger" @@ -1309,6 +1341,7 @@ 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 @@ -1329,11 +1362,13 @@ 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" +rtp_demuxer_select="sdp_demuxer" +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" +sap_demuxer_select="sdp_demuxer" +sap_muxer_select="rtp_muxer rtp_protocol" +sdp_demuxer_select="rtpdec" spdif_muxer_select="aac_parser" tg2_muxer_select="mov_muxer" tgp_muxer_select="mov_muxer" @@ -1341,19 +1376,16 @@ w64_demuxer_deps="wav_demuxer" # indevs / outdevs alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp" -alsa_indev_extralibs="-lasound" alsa_outdev_deps="alsa_asoundlib_h" -alsa_outdev_extralibs="-lasound" 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" -jack_indev_extralibs="-ljack" 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_indev_deps="capCreateCaptureWindow vfwcap_defines" vfwcap_indev_extralibs="-lavicap32" x11_grab_device_indev_deps="x11grab XShmCreateImage" x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" @@ -1362,6 +1394,7 @@ x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" gopher_protocol_deps="network" http_protocol_deps="network" http_protocol_select="tcp_protocol" +mmsh_protocol_select="http_protocol" mmst_protocol_deps="network" rtmp_protocol_select="tcp_protocol" rtp_protocol_select="udp_protocol" @@ -1369,8 +1402,11 @@ tcp_protocol_deps="network" udp_protocol_deps="network" # filters -movie_filter_deps="avfilter_lavf" -avfilter_lavf_deps="avformat" +blackframe_filter_deps="gpl" +cropdetect_filter_deps="gpl" +frei0r_filter_deps="frei0r dlopen strtok_r" +ocv_smooth_filter_deps="libopencv" +yadif_filter_deps="gpl" # libraries avdevice_deps="avcodec avformat" @@ -1387,6 +1423,109 @@ 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="dnxhd_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_hflip +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" @@ -1425,6 +1564,7 @@ host_os=$target_os_default # configurable options enable avcodec +enable avcore enable avdevice enable avfilter enable avformat @@ -1512,13 +1652,25 @@ 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 +enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS die_unknown(){ echo "Unknown option \"$1\"." @@ -1654,6 +1806,7 @@ tmpfile TMPO .o tmpfile TMPS .S tmpfile TMPV .ver tmpfile TMPSH .sh +tmpfile TMPASM .asm unset -f mktemp @@ -1674,9 +1827,20 @@ filter_cflags=echo filter_cppflags=echo filter_asflags=echo -if $cc -v 2>&1 | grep -qi ^gcc; then +if $cc -v 2>&1 | grep -q '^gcc.*LLVM'; then + cc_type=llvm_gcc + cc_version=__VERSION__ + gcc_extra_ver=$(expr "$($cc --version | head -n1)" : '.*\((.*)\)') + cc_ident="llvm-gcc $($cc -dumpversion) $gcc_extra_ver" + CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' + AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' + speed_cflags='-O3' + size_cflags='-Os' +elif $cc -v 2>&1 | grep -qi ^gcc; then 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 $@' @@ -1686,6 +1850,8 @@ if $cc -v 2>&1 | grep -qi ^gcc; then 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) + icc_version=$($cc -dumpversion) CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' speed_cflags='-O3' @@ -1694,11 +1860,13 @@ elif $cc --version 2>/dev/null | grep -q Intel; then 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 @@ -1708,12 +1876,14 @@ 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 --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc" as_default="${cross_prefix}gcc" CC_DEPFLAGS='-MMD' @@ -1723,6 +1893,7 @@ elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then 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" @@ -1763,6 +1934,7 @@ 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' @@ -1770,6 +1942,7 @@ elif $cc -v 2>&1 | grep -q clang; then 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' @@ -1808,6 +1981,22 @@ elif $cc -V 2>&1 | grep -q Sun; then esac done } +elif $cc -v 2>&1 | grep -q 'PathScale\|Path64'; 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' +elif $cc -v 2>&1 | grep -q Open64; then + cc_type=open64 + cc_version=__OPEN64__ + cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :) + CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' + AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' + speed_cflags='-O2' + size_cflags='-Os' fi test -n "$cc_type" && enable $cc_type || @@ -1826,7 +2015,7 @@ add_asflags $extra_cflags if test -n "$sysroot"; then case "$cc_type" in - gcc) + gcc|llvm_gcc) add_cppflags --sysroot="$sysroot" add_ldflags --sysroot="$sysroot" ;; @@ -1845,7 +2034,7 @@ if test "$cpu" = host; then enabled cross_compile && die "--cpu=host makes no sense when cross-compiling." case "$cc_type" in - gcc) + gcc|llvm_gcc) check_native(){ $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return sed -n "/$1=/{ @@ -1963,7 +2152,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) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona|atom) cpuflags="-march=$cpu" enable cmov enable fast_cmov @@ -1993,9 +2182,18 @@ 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 @@ -2114,7 +2312,7 @@ case $target_os in enable malloc_aligned ;; bsd/os) - osextralibs="-lpoll -lgnugetopt" + add_extralibs -lpoll -lgnugetopt strip="strip -d" ;; darwin) @@ -2123,7 +2321,7 @@ case $target_os in 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" - FFLDFLAGS="-Wl,-dynamic,-search_paths_first" + add_ldflags -Wl,-dynamic,-search_paths_first SLIBSUF=".dylib" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' @@ -2162,13 +2360,9 @@ case $target_os in objformat="win32" enable dos_paths check_cflags -fno-common - if ! enabled x86_64; then - check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || + 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." - enabled_any avisynth vfwcap_indev && - { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" || - die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; } - fi ;; cygwin*) target_os=cygwin @@ -2199,7 +2393,7 @@ case $target_os in os/2*) strip="lxlite" ln_s="cp -f" - FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap" + add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' FFSERVERLDFLAGS="" LIBSUF="_s.a" @@ -2230,15 +2424,12 @@ case $target_os in ;; esac +echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate + check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic set_default $PATHS_LIST -add_extralibs $osextralibs - -# Combine FFLDFLAGS and the LDFLAGS environment variable. -LDFLAGS="$FFLDFLAGS $LDFLAGS" - # we need to build at least one lib type if ! enabled_any static shared; then cat <= 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 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 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 && require2 libvpx "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_dec_init_ver" -lvpx && - require2 libvpx "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver" -lvpx +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 @@ -2588,7 +2800,7 @@ 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 ipv6_mreq" -D_DARWIN_C_SOURCE check_type netinet/in.h "struct sockaddr_in6" check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len @@ -2616,6 +2828,9 @@ 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 && @@ -2653,6 +2868,7 @@ 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 @@ -2668,7 +2884,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)/libavutil' +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 @@ -2710,6 +2926,11 @@ if enabled icc; then check_ldflags -march=$cpu # icc 11.0 and 11.1 work with ebp_available, but don't pass the test enable ebp_available + if enabled x86_32; then + test ${icc_version%%.*} -ge 11 && \ + check_cflags -falign-stack=maintain-16-byte || \ + disable aligned_stack + fi elif enabled ccc; then # disable some annoying warnings add_cflags -msg_disable cvtu32to64 @@ -2722,12 +2943,15 @@ elif enabled gcc; then check_cflags -fno-tree-vectorize check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes +elif enabled llvm_gcc; then + check_cflags -mllvm -stack-alignment=16 elif enabled clang; then + check_cflags -mllvm -stack-alignment=16 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 + add_cflags -W${armcc_opt},--diag_suppress=2523 + add_cflags -W${armcc_opt},--diag_suppress=1207 elif enabled tms470; then add_cflags -pds=824 -pds=837 fi @@ -2748,6 +2972,11 @@ check_deps $CONFIG_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; } @@ -2803,12 +3032,12 @@ echo "static ${static-no}" echo "shared ${shared-no}" echo "postprocessing support ${postproc-no}" echo "new filter support ${avfilter-no}" -echo "filters using lavformat ${avfilter_lavf-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 "frei0r enabled ${frei0r-no}" echo "libdc1394 support ${libdc1394-no}" echo "libdirac enabled ${libdirac-no}" echo "libfaac enabled ${libfaac-no}" @@ -2817,6 +3046,7 @@ 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 "libopencv support ${libopencv-no}" echo "libopenjpeg enabled ${libopenjpeg-no}" echo "librtmp enabled ${librtmp-no}" echo "libschroedinger enabled ${libschroedinger-no}" @@ -2825,6 +3055,7 @@ 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}" @@ -2833,9 +3064,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 - for part in $list; do - enabled $part && echo ${part%_*} - done | sort | pr -3 -t + print_enabled '_*' $list | sort | pr -3 -t echo done @@ -2860,8 +3089,10 @@ if enabled source_path_used; then doc libavcodec libavcodec/$arch + libavcore libavdevice libavfilter + libavfilter/$arch libavformat libavutil libavutil/$arch @@ -2878,8 +3109,10 @@ if enabled source_path_used; then doc/texi2pod.pl libavcodec/Makefile libavcodec/${arch}/Makefile + libavcore/Makefile libavdevice/Makefile libavfilter/Makefile + libavfilter/${arch}/Makefile libavformat/Makefile libavutil/Makefile libpostproc/Makefile @@ -2891,6 +3124,8 @@ fi enabled stripping || strip="echo skipping strip" +config_files="$TMPH config.mak" + cat > config.mak < $TMPH <> $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 \ +if enabled yasm; then + append config_files $TMPASM + printf '' >$TMPASM +fi + +print_config ARCH_ "$config_files" $ARCH_LIST +print_config HAVE_ "$config_files" $HAVE_LIST +print_config CONFIG_ "$config_files" $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 <> $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 + +enabled yasm && cp_if_changed $TMPASM config.asm cat > $TMPH < $TMPH <> $TMPH @@ -3049,6 +3303,7 @@ comment=$2 version=$3 libs=$4 requires=$5 +enabled ${name#lib} || return 0 cat < $name/$name.pc prefix=$prefix exec_prefix=\${prefix} @@ -3082,11 +3337,10 @@ EOF } pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" -pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $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" -enabled avfilter && - pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -enabled postproc && - pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_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"