X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=891b06c43370ffadcaff3b78029c0fd1ebb84c15;hb=78998bf217ba427ec4fbb5d3ae82fff31ab81f2e;hp=62f9bf254479b18134a8755a27ef96d6abd64d07;hpb=e939cedd9d8513b09a767b9e4060adc03fd6a604;p=ffmpeg diff --git a/configure b/configure index 62f9bf25447..891b06c4337 100755 --- a/configure +++ b/configure @@ -83,6 +83,10 @@ Configuration options: --disable-ffmpeg disable ffmpeg build --disable-ffplay disable ffplay build --disable-ffserver disable ffserver build + --disable-avdevice disable libavdevice build + --disable-avcodec disable libavcodec build + --disable-avformat disable libavformat build + --disable-swscale disable libswscale build --enable-postproc enable GPLed postprocessing support [no] --enable-avfilter video filter support [no] --enable-avfilter-lavf video filters dependent on avformat [no] @@ -92,13 +96,13 @@ Configuration options: --enable-w32threads use Win32 threads [no] --enable-x11grab enable X11 grabbing [no] --disable-network disable network support [no] - --disable-ipv6 disable IPv6 support [no] --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no] --enable-gray enable full grayscale support (slower color) --disable-swscale-alpha disable alpha channel support in swscale --disable-fastdiv disable table-based division --enable-small optimize for size instead of speed --disable-aandct disable AAN DCT code + --disable-dct disable DCT code --disable-fft disable FFT code --disable-golomb disable Golomb code --disable-lpc disable LPC code @@ -106,6 +110,7 @@ Configuration options: --disable-rdft disable RDFT code --disable-vaapi disable VAAPI code --disable-vdpau disable VDPAU code + --disable-dxva2 disable DXVA2 code --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary) --enable-hardcoded-tables use hardcoded tables instead of runtime generation --enable-memalign-hack emulate memalign, interferes with memory debuggers @@ -208,6 +213,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 @@ -225,6 +231,8 @@ Advanced options (experts only): --disable-vis disable VIS optimizations --disable-yasm disable use of yasm assembler --enable-pic build position-independent code + --malloc-prefix=PFX prefix malloc and related names with PFX + --enable-sram allow use of on-chip SRAM Developer options (useful when working on FFmpeg itself): --disable-debug disable debugging symbols @@ -583,11 +591,11 @@ check_as(){ check_asm(){ log check_asm "$@" name="$1" - asm="$2" + code="$2" shift 2 disable $name check_as "$@" < +float foo(float f) { return $func(f); } +int main(void){ return 0; } +EOF +} + check_func_headers(){ log check_func_headers "$@" headers=$1 @@ -830,6 +850,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. @@ -850,12 +876,17 @@ COMPONENT_LIST=" CONFIG_LIST=" $COMPONENT_LIST aandct + avcodec + avdevice avfilter avfilter_lavf + avformat avisynth beos_netserver bzlib + dct doc + dxva2 fastdiv ffmpeg ffplay @@ -866,7 +897,6 @@ CONFIG_LIST=" gprof gray hardcoded_tables - ipv6 libdc1394 libdirac libfaac @@ -898,7 +928,9 @@ CONFIG_LIST=" runtime_cpudetect shared small + sram static + swscale swscale_alpha vaapi vdpau @@ -932,6 +964,7 @@ ARCH_LIST=' sh4 sparc sparc64 + tomi x86 x86_32 x86_64 @@ -956,14 +989,19 @@ 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_may_alias attribute_packed - bigendian bswap closesocket cmov @@ -1018,7 +1056,11 @@ HAVE_LIST=" socklen_t soundcard_h poll_h + setrlimit struct_addrinfo + struct_ipv6_mreq + struct_sockaddr_in6 + struct_sockaddr_sa_len struct_sockaddr_storage sys_mman_h sys_resource_h @@ -1038,6 +1080,7 @@ HAVE_LIST=" # options emitted with CONFIG_ prefix but not available on command line CONFIG_EXTRA=" + avutil gplv3 lgplv3 " @@ -1046,6 +1089,7 @@ CMDLINE_SELECT=" $ARCH_EXT_LIST $CONFIG_LIST $THREADS_LIST + asm cross_compile debug extra_warnings @@ -1082,6 +1126,7 @@ CMDLINE_SET=" host_os ld logfile + malloc_prefix nm source_path sysinclude @@ -1113,7 +1158,7 @@ ppc4xx_deps="ppc" vis_deps="sparc" -x86_64_select="cmov fast_cmov" +x86_64_suggest="cmov fast_cmov" amd3dnow_deps="mmx" amd3dnowext_deps="amd3dnow" mmx_deps="x86" @@ -1128,16 +1173,23 @@ fast_unaligned_if_any="armv6 ppc x86" need_memalign="altivec neon sse" inline_asm_deps="!tms470" +# subsystems +mdct_select="fft" +rdft_select="fft" + # decoders / encoders / hardware accelerators -aac_decoder_select="fft mdct aac_parser" -aac_encoder_select="fft mdct" -ac3_decoder_select="fft mdct ac3_parser" +aac_decoder_select="mdct aac_parser" +aac_encoder_select="mdct" +ac3_decoder_select="mdct ac3_parser" alac_encoder_select="lpc" -atrac3_decoder_select="fft mdct" +atrac1_decoder_select="mdct" +atrac3_decoder_select="mdct" +binkaudio_dct_decoder_select="mdct rdft dct" +binkaudio_rdft_decoder_select="mdct rdft" cavs_decoder_select="golomb" -cook_decoder_select="fft mdct" +cook_decoder_select="mdct" cscd_decoder_suggest="zlib" -dca_decoder_select="fft mdct" +dca_decoder_select="mdct" dnxhd_encoder_select="aandct" dxa_decoder_select="zlib" eac3_decoder_select="ac3_decoder" @@ -1159,6 +1211,8 @@ h263_vaapi_hwaccel_select="vaapi h263_decoder" h263i_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" h264_decoder_select="golomb" +h264_dxva2_hwaccel_deps="dxva2api_h" +h264_dxva2_hwaccel_select="dxva2 h264_decoder" h264_vaapi_hwaccel_deps="va_va_h" h264_vaapi_hwaccel_select="vaapi" h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" @@ -1192,11 +1246,11 @@ 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" +nellymoser_decoder_select="mdct" +nellymoser_encoder_select="mdct" png_decoder_select="zlib" png_encoder_select="zlib" -qdm2_decoder_select="fft mdct rdft" +qdm2_decoder_select="mdct rdft" rv10_decoder_select="h263_decoder" rv10_encoder_select="h263_encoder" rv20_decoder_select="h263_decoder" @@ -1214,24 +1268,29 @@ tiff_decoder_suggest="zlib" tiff_encoder_suggest="zlib" truehd_decoder_select="mlp_decoder" tscc_decoder_select="zlib" +twinvq_decoder_select="mdct" vc1_decoder_select="h263_decoder" +vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex" +vc1_dxva2_hwaccel_select="dxva2 vc1_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" vc1_vdpau_decoder_select="vdpau vc1_decoder" -vorbis_decoder_select="fft mdct" -vorbis_encoder_select="fft mdct" +vorbis_decoder_select="mdct" +vorbis_encoder_select="mdct" vp6a_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder" -wmav1_decoder_select="fft mdct" -wmav1_encoder_select="fft mdct" -wmav2_decoder_select="fft mdct" -wmav2_encoder_select="fft mdct" +wmapro_decoder_select="mdct" +wmav1_decoder_select="mdct" +wmav1_encoder_select="mdct" +wmav2_decoder_select="mdct" +wmav2_encoder_select="mdct" wmv1_decoder_select="h263_decoder" wmv1_encoder_select="h263_encoder" wmv2_decoder_select="h263_decoder" wmv2_encoder_select="h263_encoder" wmv3_decoder_select="vc1_decoder" +wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" wmv3_vdpau_decoder_select="vc1_vdpau_decoder" zlib_decoder_select="zlib" @@ -1312,7 +1371,7 @@ 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_extralibs="-lvfw32" +vfwcap_indev_extralibs="-lavicap32" x11_grab_device_indev_deps="x11grab XShmCreateImage" x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" @@ -1326,10 +1385,17 @@ udp_protocol_deps="network" # filters movie_filter_deps="avfilter_lavf" +avfilter_lavf_deps="avformat" + +# libraries +avdevice_deps="avcodec avformat" +avformat_deps="avcodec" # programs -ffplay_deps="sdl" -ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer" +ffmpeg_deps="avcodec avformat swscale" +ffplay_deps="avcodec avformat swscale sdl" +ffplay_select="rdft" +ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer" ffserver_extralibs='$ldl' doc_deps="texi2html" @@ -1359,28 +1425,35 @@ ranlib="ranlib" strip="strip" yasmexe="yasm" +nm_opts='-g' + # machine -arch=$(uname -m) +arch_default=$(uname -m) cpu="generic" # OS -target_os=$(tolower $(uname -s)) -host_os=$target_os +target_os_default=$(tolower $(uname -s)) +host_os=$target_os_default # configurable options +enable avcodec +enable avdevice +enable avformat +enable avutil +enable asm enable debug enable doc enable fastdiv enable ffmpeg enable ffplay enable ffserver -enable ipv6 enable mpegaudio_hp enable network enable optimizations enable protocols enable static enable stripping +enable swscale enable swscale_alpha # build settings @@ -1402,7 +1475,7 @@ CC_O='-o $@' host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall' host_libs='-lm' -target_path='.' +target_path='$(CURDIR)' # gcc stupidly only outputs the basename of targets with -MM, but we need the # full relative path for objects in subdirectories for non-recursive Make. @@ -1471,7 +1544,7 @@ die_unknown(){ show_list() { suffix=_$1 shift - echo $* | sed s/$suffix//g | tr ' ' '\n' | sort + echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t exit 0 } @@ -1534,6 +1607,13 @@ set >> $logfile test -n "$cross_prefix" && enable cross_compile +if enabled cross_compile; then + test -n "$arch" && test -n "$target_os" || + die "Must specify target arch and OS when cross-compiling" +fi + +set_default arch target_os + ar="${cross_prefix}${ar}" cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" @@ -1613,20 +1693,28 @@ if $cc -v 2>&1 | grep -qi ^gcc; then CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' fi + speed_cflags='-O3' + size_cflags='-Os' elif $cc --version 2>/dev/null | grep -q Intel; then cc_type=icc cc_version="AV_STRINGIFY(__INTEL_COMPILER)" CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' + speed_cflags='-O3' + size_cflags='-Os' elif $cc -v 2>&1 | grep -q xlc; then cc_type=xlc cc_version="AV_STRINGIFY(__IBMC__)" + 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)" DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M' debuglevel=3 add_ldflags -Wl,-z,now # calls to libots crash without this + speed_cflags='-fast' + size_cflags='-O1' elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then test -d "$sysroot" || die "No valid sysroot specified." cc_type=armcc @@ -1641,6 +1729,8 @@ elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then as_default="${cross_prefix}gcc" CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' + speed_cflags='-O3' + size_cflags='-Os' elif $cc -version 2>/dev/null | grep -q TMS470; then cc_type=tms470 cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)" @@ -1653,6 +1743,8 @@ elif $cc -version 2>/dev/null | grep -q TMS470; then add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__= CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)' AS_DEPFLAGS='-MMD' + speed_cflags='-O3 -mf=5' + size_cflags='-O3 -mf=2' filter_cflags=tms470_flags tms470_flags(){ for flag; do @@ -1670,10 +1762,11 @@ elif $cc -version 2>/dev/null | grep -q TMS470; then ;; -mfpu=neon) echo --float_support=vfpv3 --neon ;; -mfpu=vfp) echo --float_support=vfpv2 ;; + -mfpu=vfpv3) echo --float_support=vfpv3 ;; -msoft-float) echo --float_support=vfplib ;; - -Os) echo -O3 -mf=2 ;; - -O[0-3]) echo $flag -mf=5 ;; + -O[0-3]|-mf=*) echo $flag ;; -g) echo -g -mn ;; + -pds=*) echo $flag ;; esac done } @@ -1682,11 +1775,15 @@ elif $cc -v 2>&1 | grep -q clang; then cc_version=__VERSION__ CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' + speed_cflags='-O3' + size_cflags='-Os' elif $cc -V 2>&1 | grep -q Sun; then cc_type=suncc cc_version="AV_STRINGIFY(__SUNPRO_C)" DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1' + speed_cflags='-O5' + size_cflags='-O5 -xspace' filter_cflags=suncc_flags suncc_flags(){ for flag; do @@ -1715,7 +1812,6 @@ elif $cc -V 2>&1 | grep -q Sun; then -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 ;; @@ -1761,7 +1857,11 @@ if test "$cpu" = host; then gcc) check_native(){ $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return - awk "/$1=/{ match(\$0, /$1=(\\w+)/, a);print a[1];exit }" $TMPE + sed -n "/$1=/{ + s/.*$1=\\([^ ]*\\).*/\\1/ + p + q + }" $TMPE } cpu=$(check_native -march || check_native -mcpu) ;; @@ -1812,101 +1912,132 @@ case "$arch" in esac is_in $arch $ARCH_LIST || echo "WARNING: unknown arch $arch" +enable $arch # 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 - ;; - 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 - ;; - sparc64) - cpuflags="-mcpu=v9" - ;; - arm11*|cortex*) - cpuflags="-mcpu=$cpu" - ;; - armv[67]*) - cpuflags="-march=$cpu" - ;; - armv*) - cpuflags="-march=$cpu" - ;; - arm*) - cpuflags="-mcpu=$cpu" - ;; - ev4|ev45|ev5|ev56|pca56|ev6|ev67) - enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu" - ;; - bf*) - cpuflags="-mcpu=$cpu" - ;; - mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef]) - cpuflags="-march=$cpu" - ;; - 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" - ;; - generic) - ;; - *) - echo "WARNING: Unknown CPU \"$cpu\", ignored." - ;; -esac +if test "$cpu" = generic; then + : do nothing +elif enabled ppc; then + + case $(tolower $cpu) in + 601|ppc601|powerpc601) + cpuflags="-mcpu=601" + disable altivec + ;; + 603*|ppc603*|powerpc603*) + cpuflags="-mcpu=603" + disable altivec + ;; + 604*|ppc604*|powerpc604*) + cpuflags="-mcpu=604" + disable altivec + ;; + g3|75*|ppc75*|powerpc75*) + cpuflags="-mcpu=750 -mpowerpc-gfxopt" + disable altivec + ;; + g4|745*|ppc745*|powerpc745*) + cpuflags="-mcpu=7450 -mpowerpc-gfxopt" + ;; + 74*|ppc74*|powerpc74*) + cpuflags="-mcpu=7400 -mpowerpc-gfxopt" + ;; + g5|970|ppc970|powerpc970|power4*) + cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" + ;; + cell) + cpuflags="-mcpu=cell" + enable ldbrx + ;; + e500v2) + cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" + disable altivec + ;; + e500) + cpuflags="-mcpu=8540 -mhard-float" + disable altivec + ;; + esac + +elif enabled x86; then + + case $cpu in + i[345]86|pentium) + cpuflags="-march=$cpu" + disable mmx + ;; + # targets that do NOT support conditional mov (cmov) + pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) + cpuflags="-march=$cpu" + disable cmov + ;; + # targets that do support conditional mov (cmov) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10) + 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 @@ -1950,7 +2081,7 @@ EOF ;; esac -enable $arch $subarch +enable $subarch enabled spic && enable pic check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic @@ -1986,6 +2117,7 @@ case $target_os in enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS" network_extralibs="-lsocket -lnsl" add_cppflags -D__EXTENSIONS__ + nm_opts='-P -g' ;; netbsd) oss_indev_extralibs="-lossaudio" @@ -2025,8 +2157,6 @@ case $target_os in { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } ;; mingw32*) - # Only WinXP or greater are supported - add_cflags -D_WIN32_WINNT=0x0501 if test $target_os = "mingw32ce"; then disable network else @@ -2061,7 +2191,7 @@ case $target_os in 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 + fi ;; cygwin*) target_os=cygwin @@ -2116,7 +2246,8 @@ case $target_os in ;; gnu) ;; - + none) + ;; *) die "Unknown OS '$target_os'." ;; @@ -2191,7 +2322,7 @@ enabled pic && enable_pic check_cc <= 79" || - die "ERROR: libx264 version must be >= 0.79."; } + { 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 @@ -2467,7 +2606,10 @@ 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/socket.h "struct sockaddr_storage" + check_type netinet/in.h "struct ipv6_mreq" + check_type netinet/in.h "struct sockaddr_in6" + check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" + check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len # Prefer arpa/inet.h over winsock2 if check_header arpa/inet.h ; then check_func closesocket @@ -2478,31 +2620,20 @@ if enabled network; then network_extralibs="-lws2_32"; } check_type ws2tcpip.h socklen_t check_type ws2tcpip.h "struct addrinfo" + check_type ws2tcpip.h "struct ipv6_mreq" + check_type ws2tcpip.h "struct sockaddr_in6" check_type ws2tcpip.h "struct sockaddr_storage" + check_struct winsock2.h "struct sockaddr" sa_len else disable network fi fi -enabled_all network ipv6 && check_ld < -#include -#include -#include -int main(void) { - struct sockaddr_storage saddr; - struct ipv6_mreq mreq6; - getaddrinfo(0,0,0,0); - getnameinfo(0,0,0,0,0,0,0); - IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0); -} -EOF - check_header linux/videodev.h check_header linux/videodev2.h check_header sys/videoio.h -check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32 +check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs" # check for ioctl_meteor.h, ioctl_bt848.h and alternatives { check_header dev/bktr/ioctl_meteor.h && @@ -2562,19 +2693,10 @@ 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 + add_cflags $size_cflags optimizations="small" 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 - add_cflags -O3 - fi + add_cflags $speed_cflags fi check_cflags -fno-math-errno check_cflags -fno-signed-zeros @@ -2606,6 +2728,11 @@ elif enabled gcc; then check_cflags -fno-tree-vectorize elif enabled clang; then check_cflags -Qunused-arguments +elif enabled armcc; then + # 2523: use of inline assembler is deprecated + add_cflags -Wrvct,--diag_suppress=2523 +elif enabled tms470; then + add_cflags -pds=824 -pds=837 fi if enabled gprof; then @@ -2644,6 +2771,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" @@ -2701,9 +2830,6 @@ echo "postprocessing support ${postproc-no}" echo "new filter support ${avfilter-no}" echo "filters using lavformat ${avfilter_lavf-no}" echo "network support ${network-no}" -if enabled network; then - echo "IPv6 support ${ipv6-no}" -fi echo "threading support ${thread_type-no}" echo "SDL support ${sdl-no}" echo "Sun medialib support ${mlib-no}" @@ -2753,6 +2879,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 + if enabled small || disabled optimizations; then echo "#define av_always_inline" >> $TMPH fi @@ -2885,48 +3052,19 @@ echo "#endif /* FFMPEG_CONFIG_H */" >> $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