X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=configure;h=efd16bbe033141c1e534fb4b6783e5e8701c1522;hb=fdf4662211fb8e50854e795f47a59753378f2a10;hp=83791fc02bb1855efe8f2ba74b307fbd44fb3f3e;hpb=5755bc88e51a82dd00897d840df2a688631da768;p=ffmpeg diff --git a/configure b/configure index 83791fc02bb..efd16bbe033 100755 --- a/configure +++ b/configure @@ -208,6 +208,7 @@ Advanced options (experts only): instruction selection, may crash on older CPUs) --enable-powerpc-perf enable performance report on PPC (requires enabling PMC) + --disable-asm disable all assembler optimizations --disable-altivec disable AltiVec optimizations --disable-amd3dnow disable 3DNow! optimizations --disable-amd3dnowext disable 3DNow! extended optimizations @@ -355,11 +356,15 @@ disable_weak(){ } enable_safe(){ - enable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g') + for var; do + enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g') + done } disable_safe(){ - disable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g') + for var; do + disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g') + done } do_enable_deep(){ @@ -446,11 +451,15 @@ check_deps(){ eval dep_any="\$${cfg}_deps_any" eval dep_sel="\$${cfg}_select" eval dep_sgs="\$${cfg}_suggest" + eval dep_ifa="\$${cfg}_if" + eval dep_ifn="\$${cfg}_if_any" - pushvar cfg dep_all dep_any dep_sel dep_sgs - check_deps $dep_all $dep_any $dep_sel $dep_sgs - popvar cfg dep_all dep_any dep_sel dep_sgs + pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn + check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn + popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn + [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; } + [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; } enabled_all $dep_all || disable $cfg enabled_any $dep_any || disable $cfg disabled_any $dep_sel && disable $cfg @@ -478,6 +487,7 @@ print_config(){ echo "${pfx}${ucname}=yes" >> $makefile else echo "#define ${pfx}${ucname} 0" >> $header + echo "!${pfx}${ucname}=yes" >> $makefile fi done } @@ -574,11 +584,11 @@ check_as(){ check_asm(){ log check_asm "$@" name="$1" - asm="$2" + code="$2" shift 2 disable $name check_as "$@" < #if !($condition) #error "unsatisfied condition: $condition" @@ -694,11 +710,7 @@ check_lib2(){ headers="$1" func="$2" shift 2 - temp_extralibs "$@" - check_func_headers "$headers" $func && add_extralibs "$@" - err=$? - restore_flags - return $err + check_func_headers "$headers" $func "$@" && add_extralibs "$@" } check_exec(){ @@ -736,18 +748,36 @@ check_type(){ headers=$1 type=$2 shift 2 - disable $type + disable_safe "$type" incs="" for hdr in $headers; do incs="$incs #include <$hdr>" done - check_cc "$@" <$member; +EOF +} + require(){ name="$1" header="$2" @@ -801,6 +831,12 @@ apply(){ "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" } +cp_if_changed(){ + cmp -s "$1" "$2" && + echo "$2 is unchanged" || + cp -f "$1" "$2" +} + # CONFIG_LIST contains configurable options, while HAVE_LIST is for # system-dependent things. @@ -927,14 +963,18 @@ ARCH_EXT_LIST=' vis ' +HAVE_LIST_PUB=' + bigendian +' + HAVE_LIST=" $ARCH_EXT_LIST + $HAVE_LIST_PUB $THREADS_LIST alsa_asoundlib_h altivec_h arpa_inet_h attribute_packed - bigendian bswap closesocket cmov @@ -950,10 +990,14 @@ HAVE_LIST=" dos_paths ebp_available ebx_available + exp2 + exp2f fast_64bit + fast_clz fast_cmov fast_unaligned fork + getaddrinfo gethrtime GetProcessTimes getrusage @@ -965,6 +1009,7 @@ HAVE_LIST=" libdc1394_2 llrint log2 + log2f loongson lrint lrintf @@ -984,6 +1029,8 @@ HAVE_LIST=" socklen_t soundcard_h poll_h + struct_addrinfo + struct_sockaddr_storage sys_mman_h sys_resource_h sys_select_h @@ -1010,6 +1057,7 @@ CMDLINE_SELECT=" $ARCH_EXT_LIST $CONFIG_LIST $THREADS_LIST + asm cross_compile debug extra_warnings @@ -1062,30 +1110,40 @@ CMDLINE_APPEND=" # code dependency declarations # architecture extensions -altivec_deps="ppc" -amd3dnow_deps="mmx" -amd3dnowext_deps="amd3dnow" + armv5te_deps="arm" armv6_deps="arm" armv6t2_deps="arm" armvfp_deps="arm" iwmmxt_deps="arm" +neon_deps="arm" + mmi_deps="mips" + +altivec_deps="ppc" +ppc4xx_deps="ppc" + +vis_deps="sparc" + +x86_64_select="cmov fast_cmov" +amd3dnow_deps="mmx" +amd3dnowext_deps="amd3dnow" mmx_deps="x86" mmx2_deps="mmx" -neon_deps="arm" -ppc4xx_deps="ppc" sse_deps="mmx" ssse3_deps="sse" -vis_deps="sparc" + +fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" +fast_clz_if_any="alpha armv5te avr32 mips ppc x86" +fast_unaligned_if_any="armv6 ppc x86" need_memalign="altivec neon sse" inline_asm_deps="!tms470" # decoders / encoders / hardware accelerators -aac_decoder_select="fft mdct" +aac_decoder_select="fft mdct aac_parser" aac_encoder_select="fft mdct" -ac3_decoder_select="fft mdct" +ac3_decoder_select="fft mdct ac3_parser" alac_encoder_select="lpc" atrac3_decoder_select="fft mdct" cavs_decoder_select="golomb" @@ -1103,11 +1161,14 @@ flac_decoder_select="golomb" flac_encoder_select="golomb lpc" flashsv_decoder_select="zlib" flashsv_encoder_select="zlib" +flv_decoder_select="h263_decoder" flv_encoder_select="h263_encoder" h261_encoder_select="aandct" +h263_decoder_select="h263_parser" h263_encoder_select="aandct" h263_vaapi_hwaccel_deps="va_va_h" h263_vaapi_hwaccel_select="vaapi h263_decoder" +h263i_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" h264_decoder_select="golomb" h264_vaapi_hwaccel_deps="va_va_h" @@ -1120,8 +1181,10 @@ jpegls_encoder_select="golomb" ljpeg_encoder_select="aandct" loco_decoder_select="golomb" mjpeg_encoder_select="aandct" +mlp_decoder_select="mlp_parser" mpeg1video_encoder_select="aandct" mpeg2video_encoder_select="aandct" +mpeg4_decoder_select="h263_decoder mpeg4video_parser" mpeg4_encoder_select="h263_encoder" mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder" @@ -1131,17 +1194,24 @@ mpeg2_vaapi_hwaccel_deps="va_va_h" mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder" mpeg4_vaapi_hwaccel_deps="va_va_h" mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder" +mpeg4_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" +mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder" mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" mpeg_xvmc_decoder_select="mpegvideo_decoder" +msmpeg4v1_decoder_select="h263_decoder" msmpeg4v1_encoder_select="h263_encoder" +msmpeg4v2_decoder_select="h263_decoder" msmpeg4v2_encoder_select="h263_encoder" +msmpeg4v3_decoder_select="h263_decoder" msmpeg4v3_encoder_select="h263_encoder" nellymoser_decoder_select="fft mdct" nellymoser_encoder_select="fft mdct" png_decoder_select="zlib" png_encoder_select="zlib" qdm2_decoder_select="fft mdct rdft" +rv10_decoder_select="h263_decoder" rv10_encoder_select="h263_encoder" +rv20_decoder_select="h263_decoder" rv20_encoder_select="h263_encoder" rv30_decoder_select="golomb" rv40_decoder_select="golomb" @@ -1154,7 +1224,9 @@ svq3_decoder_suggest="zlib" theora_decoder_select="vp3_decoder" tiff_decoder_suggest="zlib" tiff_encoder_suggest="zlib" +truehd_decoder_select="mlp_decoder" tscc_decoder_select="zlib" +vc1_decoder_select="h263_decoder" vc1_vaapi_hwaccel_deps="va_va_h" vc1_vaapi_hwaccel_select="vaapi vc1_decoder" vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" @@ -1167,7 +1239,9 @@ wmav1_decoder_select="fft mdct" wmav1_encoder_select="fft mdct" wmav2_decoder_select="fft mdct" wmav2_encoder_select="fft mdct" +wmv1_decoder_select="h263_decoder" wmv1_encoder_select="h263_encoder" +wmv2_decoder_select="h263_decoder" wmv2_encoder_select="h263_encoder" wmv3_decoder_select="vc1_decoder" wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" @@ -1180,6 +1254,9 @@ zmbv_encoder_select="zlib" # parsers h264_parser_select="golomb" +# bitstream_filters +aac_adtstoasc_bsf_select="aac_parser" + # external libraries libdirac_decoder_deps="libdirac !libschroedinger" libdirac_encoder_deps="libdirac" @@ -1208,6 +1285,7 @@ ac3_demuxer_deps="ac3_parser" asf_stream_muxer_select="asf_muxer" avisynth_demuxer_deps="avisynth" dirac_demuxer_deps="dirac_parser" +eac3_demuxer_select="ac3_parser" ipod_muxer_select="mov_muxer" libnut_demuxer_deps="libnut" libnut_muxer_deps="libnut" @@ -1218,10 +1296,11 @@ mp3_demuxer_deps="mpegaudio_parser" mp4_muxer_select="mov_muxer" mpegtsraw_demuxer_select="mpegts_demuxer" mxf_d10_muxer_select="mxf_muxer" +ogg_demuxer_select="golomb" psp_muxer_select="mov_muxer" -rtp_muxer_deps="network rtp_protocol" rtsp_demuxer_deps="sdp_demuxer" sdp_demuxer_deps="rtp_protocol mpegts_demuxer" +spdif_muxer_select="aac_parser" tg2_muxer_select="mov_muxer" tgp_muxer_select="mov_muxer" w64_demuxer_deps="wav_demuxer" @@ -1247,7 +1326,7 @@ v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" vfwcap_indev_deps="capCreateCaptureWindow" vfwcap_indev_extralibs="-lvfw32" x11_grab_device_indev_deps="x11grab XShmCreateImage" -x11_grab_device_indev_extralibs="-lX11 -lXext" +x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" # protocols gopher_protocol_deps="network" @@ -1301,6 +1380,7 @@ target_os=$(tolower $(uname -s)) host_os=$target_os # configurable options +enable asm enable debug enable doc enable fastdiv @@ -1517,6 +1597,7 @@ tmpfile TMPE $EXESUF tmpfile TMPH .h tmpfile TMPO .o tmpfile TMPS .S +tmpfile TMPV .ver tmpfile TMPSH .sh unset -f mktemp @@ -1619,6 +1700,41 @@ elif $cc -V 2>&1 | grep -q Sun; then cc_version="AV_STRINGIFY(__SUNPRO_C)" DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1' + filter_cflags=suncc_flags + suncc_flags(){ + for flag; do + case $flag in + -march=*|-mcpu=*) + case "${flag#*=}" in + native) echo -xtarget=native ;; + v9) echo -xarch=sparc ;; + ultrasparc) echo -xarch=sparcvis ;; + ultrasparc3|niagara*) echo -xarch=sparcvis2 ;; + i586|pentium) echo -xchip=pentium ;; + i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;; + pentium3*|c3-2) echo -xtarget=pentium3 ;; + pentium-m) echo -xarch=sse2 -xchip=pentium3 ;; + pentium4*) echo -xtarget=pentium4 ;; + prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; + *-sse3) echo -xarch=sse3 ;; + core2) echo -xarch=ssse3 -xchip=core2 ;; + amdfam10|barcelona) echo -xarch=sse4_1 ;; + athlon-4|athlon-[mx]p) echo -xarch=ssea ;; + k8|opteron|athlon64|athlon-fx) + echo -xarch=sse2a ;; + athlon*) echo -xarch=pentium_proa ;; + esac + ;; + -std=c99) echo -xc99 ;; + -fomit-frame-pointer) echo -xregs=frameptr ;; + -fPIC) echo -KPIC -xcode=pic32 ;; + -Os) echo -O5 -xspace ;; + -W*,*) echo $flag ;; + -f*-*|-W*) ;; + *) echo $flag ;; + esac + done + } fi test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc" @@ -1667,99 +1783,163 @@ if test "$cpu" = host; then test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc" fi -# Add processor-specific flags -case $cpu in - 601|ppc601|PowerPC601) - cpuflags="-mcpu=601" - ;; - 603*|ppc603*|PowerPC603*) - cpuflags="-mcpu=603" - ;; - 604*|ppc604*|PowerPC604*) - cpuflags="-mcpu=604" - ;; - G3|g3|75*|ppc75*|PowerPC75*) - cpuflags="-mcpu=750 -mpowerpc-gfxopt" - ;; - G4|g4|745*|ppc745*|PowerPC745*) - cpuflags="-mcpu=7450 -mpowerpc-gfxopt" - ;; - 74*|ppc74*|PowerPC74*) - cpuflags="-mcpu=7400 -mpowerpc-gfxopt" - ;; - G5|g5|970|ppc970|PowerPC970|power4*|Power4*) - cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" - ;; - Cell|CELL|cell) - cpuflags="-mcpu=cell" - enable ldbrx - ;; - # targets that do NOT support conditional mov (cmov) - i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) - cpuflags="-march=$cpu" - disable cmov - ;; - # targets that do support conditional mov (cmov) - i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10) - cpuflags="-march=$cpu" - enable cmov - enable fast_cmov - ;; - # targets that do support conditional mov but on which it's slow - pentium4|pentium4m|prescott|nocona) - cpuflags="-march=$cpu" - enable cmov - disable fast_cmov - ;; - sparc64) - cpuflags="-mcpu=v9" - ;; - arm11*|cortex*) - cpuflags="-mcpu=$cpu" - enable fast_unaligned - ;; - armv[67]*) - cpuflags="-march=$cpu" - enable fast_unaligned - ;; - armv*) - cpuflags="-march=$cpu" - ;; +# Deal with common $arch aliases +case "$arch" in arm*) - cpuflags="-mcpu=$cpu" + arch="arm" ;; - ev4|ev45|ev5|ev56|pca56|ev6|ev67) - enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu" + mips|mipsel|IP*) + arch="mips" ;; - bf*) - cpuflags="-mcpu=$cpu" + mips64) + arch="mips" + subarch="mips64" ;; - mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef]) - cpuflags="-march=$cpu" + parisc|hppa) + arch="parisc" ;; - ap7[02]0[0-2]) - subarch="avr32_ap" - cpuflags="-mpart=$cpu" + parisc64|hppa64) + arch="parisc" + subarch="parisc64" ;; - ap) - subarch="avr32_ap" - cpuflags="-march=$cpu" + "Power Macintosh"|ppc|powerpc) + arch="ppc" ;; - uc3[ab]*) - subarch="avr32_uc" - cpuflags="-mcpu=$cpu" + ppc64) + arch="ppc" + subarch="ppc64" + ;; + s390|s390x) + arch="s390" ;; - uc) - subarch="avr32_uc" - cpuflags="-march=$cpu" + sh4|sh) + arch="sh4" ;; - generic) + sun4u|sparc64) + arch="sparc" + subarch="sparc64" ;; - *) - echo "WARNING: Unknown CPU \"$cpu\", ignored." + i[3-6]86|i86pc|BePC|x86_64|amd64) + arch="x86" ;; esac +is_in $arch $ARCH_LIST || echo "WARNING: unknown arch $arch" +enable $arch + +# Add processor-specific flags +if test "$cpu" = generic; then + : do nothing +elif enabled ppc; then + + case $cpu in + 601|ppc601|PowerPC601) + cpuflags="-mcpu=601" + ;; + 603*|ppc603*|PowerPC603*) + cpuflags="-mcpu=603" + ;; + 604*|ppc604*|PowerPC604*) + cpuflags="-mcpu=604" + ;; + G3|g3|75*|ppc75*|PowerPC75*) + cpuflags="-mcpu=750 -mpowerpc-gfxopt" + ;; + G4|g4|745*|ppc745*|PowerPC745*) + cpuflags="-mcpu=7450 -mpowerpc-gfxopt" + ;; + 74*|ppc74*|PowerPC74*) + cpuflags="-mcpu=7400 -mpowerpc-gfxopt" + ;; + G5|g5|970|ppc970|PowerPC970|power4*|Power4*) + cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" + ;; + Cell|CELL|cell) + cpuflags="-mcpu=cell" + enable ldbrx + ;; + esac + +elif enabled x86; then + + case $cpu in + i[345]86|pentium) + cpuflags="-march=$cpu" + disable mmx + ;; + # targets that do NOT support conditional mov (cmov) + pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) + cpuflags="-march=$cpu" + disable cmov + ;; + # targets that do support conditional mov (cmov) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10) + cpuflags="-march=$cpu" + enable cmov + enable fast_cmov + ;; + # targets that do support conditional mov but on which it's slow + pentium4|pentium4m|prescott|nocona) + cpuflags="-march=$cpu" + enable cmov + disable fast_cmov + ;; + esac + +elif enabled sparc; then + + case $cpu in + sparc64) + cpuflags="-mcpu=v9" + ;; + esac + +elif enabled arm; then + + case $cpu in + armv*) + cpuflags="-march=$cpu" + ;; + *) + cpuflags="-mcpu=$cpu" + ;; + esac + +elif enabled alpha; then + + enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu" + +elif enabled bfin; then + + cpuflags="-mcpu=$cpu" + +elif enabled mips; then + + cpuflags="-march=$cpu" + +elif enabled avr32; then + + case $cpu in + ap7[02]0[0-2]) + subarch="avr32_ap" + cpuflags="-mpart=$cpu" + ;; + ap) + subarch="avr32_ap" + cpuflags="-march=$cpu" + ;; + uc3[ab]*) + subarch="avr32_uc" + cpuflags="-mcpu=$cpu" + ;; + uc) + subarch="avr32_uc" + cpuflags="-march=$cpu" + ;; + esac + +fi + add_cflags $cpuflags add_asflags $cpuflags @@ -1788,96 +1968,22 @@ EOF check_host_cflags -std=c99 case "$arch" in - alpha) - arch="alpha" - enable fast_64bit - check_cflags -mieee - spic=$shared - ;; - arm|armv[4567]*l) - arch="arm" - ;; - avr32) - ;; - bfin) - arch="bfin" - ;; - ia64) - arch="ia64" - enable fast_64bit - spic=$shared - # HACK: currently fails to build if .bss is > 4MB and shared libs are built - enabled shared && enable_weak hardcoded_tables - ;; - m68k) - arch="m68k" - ;; - mips|mipsel|IP*) - arch="mips" - spic=$shared - ;; - mips64) - arch="mips" - subarch="mips64" - enable fast_64bit - spic=$shared - ;; - parisc|hppa) - arch="parisc" - spic=$shared - ;; - parisc64|hppa64) - arch="parisc" - enable fast_64bit - spic=$shared - ;; - "Power Macintosh"|ppc|powerpc) - arch="ppc" - enable fast_unaligned - ;; - ppc64) - arch="ppc" - subarch="ppc64" - enable fast_64bit - enable fast_unaligned - ;; - s390|s390x) - arch="s390" - ;; - sh4|sh) - arch="sh4" - ;; - sparc) - arch="sparc" - spic=$shared - ;; - sun4u|sparc64) - arch="sparc" - subarch="sparc64" - enable fast_64bit + alpha|ia64|mips|parisc|sparc) spic=$shared ;; - i386|i486|i586|i686|i86pc|BePC|x86_64|amd64) - arch="x86" + x86) subarch="x86_32" - enable fast_unaligned - check_cc < 4MB and shared libs are built + enabled shared && enable_weak hardcoded_tables + elif enabled mips; then check_asm loongson '"dmult.g $1, $2, $3"' @@ -2243,6 +2360,12 @@ EOF esac disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; } + case "$cpu" in + athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode) + disable fast_clz + ;; + esac + fi if check_func dlopen; then @@ -2255,6 +2378,7 @@ fi check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; } check_func fork +check_func getaddrinfo $network_extralibs check_func gethrtime check_func getrusage check_func inet_aton $network_extralibs @@ -2316,8 +2440,11 @@ done check_lib math.h sin -lm check_lib va/va.h vaInitialize -lva +check_func exp2 +check_func exp2f check_func llrint check_func log2 +check_func log2f check_func lrint check_func lrintf check_func round @@ -2340,11 +2467,11 @@ enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg 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/theora.h theora_info_init -ltheora -logg +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 libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm && - { check_cpp_condition x264.h "X264_BUILD >= 78" || - die "ERROR: libx264 version must be >= 0.78."; } + { check_cpp_condition x264.h "X264_BUILD >= 83" || + die "ERROR: libx264 version must be >= 0.83."; } enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib @@ -2357,37 +2484,22 @@ if enabled libdc1394; then die "ERROR: No version of libdc1394 found " fi -disable sdl_too_old -disable sdl 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) - temp_cflags $sdl_cflags - temp_extralibs $sdl_libs - if check_lib2 SDL.h SDL_Init; then - _sdlversion=$("${SDL_CONFIG}" --version | sed 's/[^0-9]//g') - if test "$_sdlversion" -lt 121 ; then - enable sdl_too_old - else - enable sdl - check_cc $sdl_cflags < -int main(int argc, char **argv){ - const SDL_VideoInfo *vi = SDL_GetVideoInfo(); - int w = vi->current_w; - return 0; -} -EOF - fi - fi - restore_flags + check_func_headers SDL.h SDL_Init $sdl_cflags $sdl_libs && + check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && + enable sdl && + check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size fi texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html if enabled network; then check_type "sys/types.h sys/socket.h" socklen_t + check_type netdb.h "struct addrinfo" + check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" # Prefer arpa/inet.h over winsock2 if check_header arpa/inet.h ; then check_func closesocket @@ -2397,6 +2509,8 @@ if enabled network; then { check_func_headers winsock2.h closesocket -lws2_32 && \ network_extralibs="-lws2_32"; } check_type ws2tcpip.h socklen_t + check_type ws2tcpip.h "struct addrinfo" + check_type ws2tcpip.h "struct sockaddr_storage" else disable network fi @@ -2441,8 +2555,17 @@ enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack enabled x11grab && check_header X11/Xlib.h && check_header X11/extensions/XShm.h && +check_header X11/extensions/Xfixes.h && check_func XOpenDisplay -lX11 && -check_func XShmCreateImage -lX11 -lXext +check_func XShmCreateImage -lX11 -lXext && +check_func XFixesGetCursorImage -lX11 -lXext -lXfixes + +if ! disabled vdpau && enabled vdpau_vdpau_h; then +check_cpp_condition \ + vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || + { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." && + disable vdpau; } +fi enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" @@ -2466,6 +2589,10 @@ 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,-Bsymbolic +echo "X{};" > $TMPV +test_ldflags -Wl,--version-script,$TMPV && + append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' + if enabled small; then check_cflags -Os # not all compilers support -Os optimizations="small" @@ -2473,6 +2600,8 @@ elif enabled optimizations; then if enabled xlc; then add_cflags -O5 add_ldflags -O5 + elif enabled suncc; then + add_cflags -O5 elif enabled ccc; then add_cflags -fast else @@ -2547,6 +2676,8 @@ check_deps $CONFIG_LIST \ $OUTDEV_LIST \ $PROTOCOL_LIST \ +enabled asm || disable $ARCH_LIST $ARCH_EXT_LIST + echo "install prefix $prefix" echo "source path $source_path" echo "C compiler $cc" @@ -2609,9 +2740,6 @@ if enabled network; then fi echo "threading support ${thread_type-no}" echo "SDL support ${sdl-no}" -if enabled sdl_too_old; then - echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support." -fi echo "Sun medialib support ${mlib-no}" echo "AVISynth enabled ${avisynth-no}" echo "libdc1394 support ${libdc1394-no}" @@ -2659,6 +2787,44 @@ echo "License: $license" echo "Creating config.mak and config.h..." +# build tree in object directory if source path is different from current one +if enabled source_path_used; then + DIRS=" + doc + libavcodec + libavcodec/$arch + libavdevice + libavfilter + libavformat + libavutil + libavutil/$arch + libpostproc + libswscale + libswscale/$arch + tests + tools + " + FILES=" + Makefile + common.mak + subdir.mak + doc/texi2pod.pl + libavcodec/Makefile + libavdevice/Makefile + libavfilter/Makefile + libavformat/Makefile + libavutil/Makefile + libpostproc/Makefile + libswscale/Makefile + " + for dir in $DIRS ; do + mkdir -p $dir + done + for f in $FILES ; do + $ln_s "$source_path/$f" $f + done +fi + enabled stripping || strip="echo skipping strip" cat > config.mak < $TMPH <> $TMPH echo "endif # FFMPEG_CONFIG_MAK" >> config.mak # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. -cmp -s $TMPH config.h && - echo "config.h is unchanged" || - mv -f $TMPH config.h +cp_if_changed $TMPH config.h -# build tree in object directory if source path is different from current one -if enabled source_path_used; then - DIRS=" - doc - libavcodec - libavcodec/$arch - libavdevice - libavfilter - libavformat - libavutil - libavutil/$arch - libpostproc - libswscale - libswscale/$arch - tests - tools - " - FILES=" - Makefile - common.mak - subdir.mak - doc/texi2pod.pl - libavcodec/Makefile - libavdevice/Makefile - libavfilter/Makefile - libavformat/Makefile - libavutil/Makefile - libpostproc/Makefile - libswscale/Makefile - " - for dir in $DIRS ; do - mkdir -p $dir - done - for f in $FILES ; do - $ln_s "$source_path/$f" $f - done -fi +cat > $TMPH <> $TMPH +cp_if_changed $TMPH libavutil/avconfig.h # build pkg-config files