X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=36909048f43d4d640cb9a02efe2b730c3c8e7918;hb=8769113accf1f3b78634dec60b37f7354ed6d88d;hp=c41a396f3e48f976ea9fbe7ef548d0663b25a41a;hpb=29f1fa74225e9fdbab6d590857edbecb51cf74da;p=ffmpeg diff --git a/configure b/configure index c41a396f3e4..36909048f43 100755 --- a/configure +++ b/configure @@ -81,6 +81,7 @@ Standard options: --prefix=PREFIX install in PREFIX [$prefix] --bindir=DIR install binaries in DIR [PREFIX/bin] --datadir=DIR install data files in DIR [PREFIX/share/avconv] + --docdir=DIR install documentation in DIR [PREFIX/share/doc/libav] --libdir=DIR install libs in DIR [PREFIX/lib] --shlibdir=DIR install shared libs in DIR [PREFIX/lib] --incdir=DIR install includes in DIR [PREFIX/include] @@ -120,14 +121,16 @@ Component options: --disable-avresample disable libavresample build [no] --disable-pthreads disable pthreads [auto] --disable-w32threads disable Win32 threads [auto] - --enable-x11grab enable X11 grabbing [no] --disable-network disable network support [no] --disable-dct disable DCT code + --disable-error-resilience disable error resilience 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 @@ -171,7 +174,7 @@ Individual component options: --disable-filters disable all filters External library support: - --enable-avisynth enable reading of AVISynth script files [no] + --enable-avisynth enable reading of AviSynth script files [no] --enable-bzlib enable bzlib [autodetect] --enable-frei0r enable frei0r video filtering --enable-gnutls enable gnutls [no] @@ -179,7 +182,7 @@ External library support: --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no] --enable-libfaac enable AAC encoding via libfaac [no] - --enable-libfdk-aac enable AAC encoding via libfdk-aac [no] + --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] --enable-libfreetype enable libfreetype [no] --enable-libgsm enable GSM de/encoding via libgsm [no] --enable-libilbc enable iLBC de/encoding via libilbc [no] @@ -198,11 +201,13 @@ External library support: --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] --enable-libvorbis enable Vorbis encoding via libvorbis [no] --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no] + --enable-libwavpack enable wavpack encoding via libwavpack [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-openssl enable openssl [no] + --enable-x11grab enable X11 grabbing [no] --enable-zlib enable zlib [autodetect] Advanced options (experts only): @@ -213,6 +218,7 @@ Advanced options (experts only): --target-os=OS compiler targets OS [$target_os] --target-exec=CMD command to run executables on target --target-path=DIR path to view of build directory on target + --target-samples=DIR path to samples directory on target --toolchain=NAME set tool defaults according to NAME --nm=NM use nm tool --ar=AR use archive tool AR [$ar_default] @@ -222,6 +228,7 @@ Advanced options (experts only): --ld=LD use linker LD --host-cc=HOSTCC use host C compiler HOSTCC --host-cflags=HCFLAGS use HCFLAGS when compiling for host + --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host --host-ld=HOSTLD use host linker HOSTLD --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host --host-libs=HLIBS use libs HLIBS when linking for host @@ -262,6 +269,7 @@ Optimization options (experts only): --disable-sse42 disable SSE4.2 optimizations --disable-avx disable AVX optimizations --disable-fma4 disable FMA4 optimizations + --disable-avx2 disable AVX2 optimizations --disable-armv5te disable armv5te optimizations --disable-armv6 disable armv6 optimizations --disable-armv6t2 disable armv6t2 optimizations @@ -322,7 +330,7 @@ die(){ If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the -libav-user@libav.org mailing list or IRC #libav on irc.freenode.net. +libav-tools@libav.org mailing list or IRC #libav on irc.freenode.net. EOF if disabled logging; then cat <&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p') + if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then + cc_default="c99wrap -noconv cl" + else + cc_default="c99wrap cl" + fi ld_default="c99wrap link" nm_default="dumpbin -symbols" ar_default="lib" target_os_default="win32" ;; + icl) + cc_default="c99wrap -noconv icl" + ld_default="c99wrap xilink" + nm_default="dumpbin -symbols" + ar_default="xilib" + target_os_default="win32" + ;; + gcov) + add_cflags -fprofile-arcs -ftest-coverage + add_ldflags -fprofile-arcs -ftest-coverage + ;; + hardened) + add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all + add_ldflags -Wl,-z,relro -Wl,-z,now + ;; ?*) die "Unknown toolchain $toolchain" ;; esac -set_default arch cc pkg_config sysinclude target_os +set_default arch cc pkg_config sysinclude target_exec target_os enabled cross_compile || host_cc_default=$cc set_default host_cc @@ -2181,20 +2404,35 @@ ccc_flags(){ done } -msvc_flags(){ +cparser_flags(){ for flag; do case $flag in - -fomit-frame-pointer) echo -Oy ;; - -g) echo -Z7 ;; - -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ - -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ - -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ - -wd4996 -wd4273 ;; + -Wno-switch) echo -Wno-switch-enum ;; + -Wno-format-zero-length) ;; + -Wdisabled-optimization) ;; + -Wno-pointer-sign) echo -Wno-other ;; + *) echo $flag ;; + esac + done +} + +msvc_common_flags(){ + for flag; do + case $flag in + # In addition to specifying certain flags under the compiler + # specific filters, they must be specified here as well or else the + # generic catch all at the bottom will print the original flag. + -Wall) ;; -std=c99) ;; + # Common flags + -fomit-frame-pointer) ;; + -g) echo -Z7 ;; -fno-math-errno) ;; -fno-common) ;; -fno-signed-zeros) ;; -fPIC) ;; + -mthumb) ;; + -march=*) ;; -lz) echo zlib.lib ;; -lavifil32) echo vfw32.lib ;; -lavicap32) echo vfw32.lib user32.lib ;; @@ -2204,6 +2442,30 @@ msvc_flags(){ done } +msvc_flags(){ + msvc_common_flags "$@" + for flag; do + case $flag in + -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ + -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ + -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ + -wd4273 ;; + esac + done +} + +icl_flags(){ + msvc_common_flags "$@" + for flag; do + case $flag in + # Despite what Intel's documentation says -Wall, which is supported + # on Windows, does enable remarks so disable them here. + -Wall) echo $flag -Qdiag-disable:remark ;; + -std=c99) echo -Qstd=c99 ;; + esac + done +} + pgi_flags(){ for flag; do case $flag in @@ -2235,10 +2497,10 @@ suncc_flags(){ 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 ;; + athlon-4|athlon-[mx]p) echo -xarch=ssea ;; k8|opteron|athlon64|athlon-fx) - echo -xarch=sse2a ;; - athlon*) echo -xarch=pentium_proa ;; + echo -xarch=sse2a ;; + athlon*) echo -xarch=pentium_proa ;; esac ;; -std=c99) echo -xc99 ;; @@ -2309,7 +2571,7 @@ probe_cc(){ fi _cflags_speed='-O3' _cflags_size='-Os' - elif $_cc --version 2>/dev/null | grep -q Intel; then + elif $_cc --version 2>/dev/null | grep -q ^icc; then _type=icc _ident=$($_cc --version | head -n1) _depflags='-MMD' @@ -2398,7 +2660,8 @@ probe_cc(){ _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' _cflags_speed="-O2" _cflags_size="-O1" - # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it + # Nonstandard output options, to avoid msys path conversion issues. + # Relies on wrapper to remap it. if $_cc 2>&1 | grep -q Linker; then _ld_o='-out $@' else @@ -2410,10 +2673,45 @@ probe_cc(){ _ld_lib='lib%.a' _ld_path='-libpath:' _flags='-nologo' - _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64' + _cflags='-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64' if [ $pfx = hostcc ]; then append _cflags -Dsnprintf=_snprintf fi + elif $_cc 2>&1 | grep -q Intel; then + _type=icl + _ident=$($cc 2>&1 | head -n1) + _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@' + # Not only is O3 broken on 13.x+ but it is slower on all previous + # versions (tested) as well. + _cflags_speed="-O2" + _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff + # Nonstandard output options, to avoid msys path conversion issues. + # Relies on wrapper to remap it. + if $_cc 2>&1 | grep -q Linker; then + _ld_o='-out $@' + else + _ld_o='-Fe$@' + fi + _cc_o='-Fo $@' + _cc_e='-P' + _flags_filter=icl_flags + _ld_lib='lib%.a' + _ld_path='-libpath:' + # -Qdiag-error to make icl error when seeing certain unknown arguments + _flags='-nologo -Qdiag-error:4044,10157' + # -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency + # with MSVC which enables it by default. + _cflags='-D_USE_MATH_DEFINES -FIstdlib.h -Dstrtoll=_strtoi64 -Qms0 -Qvec- -Qsimd- -GS' + if [ $pfx = hostcc ]; then + append _cflags -Dsnprintf=_snprintf + fi + elif $_cc --version 2>/dev/null | grep -q ^cparser; then + _type=cparser + _ident=$($_cc --version | head -n1) + _depflags='-MMD' + _cflags_speed='-O4' + _cflags_size='-O2' + _flags_filter=cparser_flags fi eval ${pfx}_type=\$_type @@ -2488,6 +2786,9 @@ if $ar 2>&1 | grep -q Microsoft; then elif $ar 2>&1 | grep -q 'Texas Instruments'; then arflags="rq" ar_o='$@' +elif $ar 2>&1 | grep -q 'Usage: ar.*-X.*any'; then + arflags='-Xany -r -c' + ar_o='$@' else arflags="rc" ar_o='$@' @@ -2510,7 +2811,8 @@ if test -n "$sysroot"; then fi if test "$cpu" = host; then - enabled cross_compile && die "--cpu=host makes no sense when cross-compiling." + enabled cross_compile && + die "--cpu=host makes no sense when cross-compiling." case "$cc_type" in gcc|llvm_gcc) @@ -2526,7 +2828,8 @@ if test "$cpu" = host; then ;; esac - test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc" + test "${cpu:-host}" = host && + die "--cpu=host not supported with compiler $cc" fi # Deal with common $arch aliases @@ -2736,21 +3039,21 @@ elif enabled x86; then cpuflags="-march=$cpu" disable mmx ;; - # targets that do NOT support conditional mov (cmov) + # targets that do NOT support nopl and conditional mov (cmov) pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) cpuflags="-march=$cpu" - disable cmov + disable i686 ;; - # targets that do support conditional mov (cmov) + # targets that do support nopl and conditional mov (cmov) 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 i686 enable fast_cmov ;; # targets that do support conditional mov but on which it's slow pentium4|pentium4m|prescott|nocona) cpuflags="-march=$cpu" - enable cmov + enable i686 disable fast_cmov ;; esac @@ -2824,17 +3127,21 @@ case "$arch" in esac enable $subarch -enabled spic && enable pic +enabled spic && enable_weak pic # OS specific case $target_os in + aix) + SHFLAGS=-shared + add_cppflags '-I\$(SRC_PATH)/compat/aix' + enabled shared && add_ldflags -Wl,-brtl + ;; haiku) prefix_default="/boot/common" network_extralibs="-lnetwork" host_libs= ;; sunos) - AVSERVERLDFLAGS="" SHFLAGS='-shared -Wl,-h,$$(@F)' enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS" network_extralibs="-lsocket -lnsl" @@ -2844,7 +3151,9 @@ case $target_os in # the Solaris assembler. As our libraries contain their own # guards for processor-specific code, instead suppress # generation of the HWCAPS ELF section on Solaris x86 only. - enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile + enabled_all suncc x86 && + echo "hwcap_1 = OVERRIDE;" > mapfile && + add_ldflags -Wl,-M,mapfile nm_default='nm -P -g' ;; netbsd) @@ -2855,7 +3164,7 @@ case $target_os in openbsd|bitrig) disable symver SHFLAGS='-shared' - SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBVERSION)' + SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' SLIB_INSTALL_LINKS= oss_indev_extralibs="-lossaudio" oss_outdev_extralibs="-lossaudio" @@ -2877,7 +3186,6 @@ case $target_os in SLIBSUF=".dylib" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' - AVSERVERLDFLAGS=-Wl,-bind_at_load objformat="macho" enabled x86_64 && objformat="macho64" enabled_any pic shared || @@ -2895,6 +3203,8 @@ case $target_os in elif enabled arm; then LIBTARGET=arm-wince fi + check_ldflags -Wl,--nxcompat + check_ldflags -Wl,--dynamicbase shlibdir_default="$bindir_default" SLIBPREF="" SLIBSUF=".dll" @@ -2910,15 +3220,13 @@ case $target_os in dlltool="${cross_prefix}dlltool" ranlib=: enable dos_paths - add_cppflags -U__STRICT_ANSI__ ;; win32|win64) if enabled shared; then # Link to the import library instead of the normal static library # for shared libs. LD_LIB='%.lib' - # Cannot build shared and static libraries at the same time with - # MSVC. + # Cannot build both shared and static libs with MSVC or icl. disable static fi shlibdir_default="$bindir_default" @@ -2969,7 +3277,6 @@ case $target_os in add_cppflags -D_GNU_SOURCE add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' - AVSERVERLDFLAGS="" LIBSUF="_s.a" SLIBPREF="" SLIBSUF=".dll" @@ -3009,7 +3316,6 @@ case $target_os in ;; osf1) add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT - AVSERVERLDFLAGS= ;; minix) ;; @@ -3023,7 +3329,6 @@ case $target_os in network_extralibs='-lbsd' exeobjs=compat/plan9/main.o disable avserver - ln_s='ln -s -f' cp_f='cp' ;; none) @@ -3035,6 +3340,7 @@ 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 @@ -3051,14 +3357,25 @@ elif check_header _mingw.h; then "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." + add_cppflags -U__STRICT_ANSI__ elif check_func_headers stdlib.h _get_doserrno; then libc_type=msvcrt add_compat strtod.o strtod=avpriv_strtod add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \ _snprintf=avpriv_snprintf \ vsnprintf=avpriv_vsnprintf + # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to + # 0x601 by default unless something else is set by the user. + # This can easily lead to us detecting functions only present + # in such new versions and producing binaries requiring windows 7.0. + # Therefore explicitly set the default to XP unless the user has + # set something else on the command line. + check_cpp_condition stdlib.h "defined(_WIN32_WINNT)" || add_cppflags -D_WIN32_WINNT=0x0502 elif check_cpp_condition stddef.h "defined __KLIBC__"; then libc_type=klibc +elif check_cpp_condition sys/cdefs.h "defined __BIONIC__"; then + libc_type=bionic + add_compat strtod.o strtod=avpriv_strtod fi test -n "$libc_type" && enable $libc_type @@ -3083,7 +3400,7 @@ esc(){ echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIGURATION)" >config.fate -check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic +check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic set_default $PATHS_LIST set_default nm @@ -3122,14 +3439,21 @@ enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } disabled optimizations || check_cflags -fomit-frame-pointer -enable_pic() { +enable_weak_pic() { + disabled pic && return enable pic add_cppflags -DPIC - add_cflags -fPIC + case "$target_os" in + mingw*|cygwin*) + ;; + *) + add_cflags -fPIC + ;; + esac add_asflags -fPIC } -enabled pic && enable_pic +enabled pic && enable_weak_pic check_cc <= 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 -enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb -enabled libopencv && require_pkg_config opencv opencv/cv.h cvCreateImageHeader -enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg -enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create -enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new -enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket -enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init -enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex -enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg -enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc -enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc -enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg -enabled libvpx && { +enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32 +enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; } +enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init +enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac +enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac +enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType +enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do + check_lib "${gsm_hdr}" gsm_create -lgsm && break; + done || die "ERROR: libgsm not found"; } +enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc +enabled libmp3lame && require "libmp3lame >= 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 +enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb +enabled libopencv && require_pkg_config opencv opencv/cv.h cvCreateImageHeader +enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg +enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create +enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new +enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket +enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init +enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex +enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg +enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc +enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc +enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg +enabled libvpx && { enabled libvpx_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"; } + die "ERROR: libvpx decoder version must be >=0.9.1"; } 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; } + 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."; } -enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs -enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore -enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || - check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 || - check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || - die "ERROR: openssl not found"; } +enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack +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."; } +enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs +enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore +enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || + check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 || + check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || + die "ERROR: openssl not found"; } if enabled gnutls; then { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } || @@ -3521,8 +3862,8 @@ fi if check_pkg_config sdl SDL_events.h SDL_PollEvent; then check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && - enable sdl && - check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size + check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && + enable sdl fi texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html @@ -3551,7 +3892,8 @@ check_header sndio.h check_header sys/soundcard.h check_header soundcard.h -enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound +enabled_any alsa_indev alsa_outdev && + check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func jack_port_get_latency_range -ljack @@ -3559,7 +3901,8 @@ 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 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 + 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 && @@ -3567,28 +3910,18 @@ require X11 X11/Xlib.h XOpenDisplay -lX11 && require Xext X11/extensions/XShm.h XShmCreateImage -lXext && require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes -# check for VDA header -if ! disabled vda && check_header VideoDecodeAcceleration/VDADecoder.h; then - enable vda && add_extralibs -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore -fi - -if ! disabled vdpau && enabled vdpau_vdpau_h; then +enabled vdpau && 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 + disable vdpau 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 -Wno-format-zero-length check_cflags -Wdisabled-optimization check_cflags -Wpointer-arith check_cflags -Wredundant-decls -check_cflags -Wno-pointer-sign check_cflags -Wcast-qual check_cflags -Wwrite-strings check_cflags -Wtype-limits @@ -3597,6 +3930,16 @@ check_cflags -Wmissing-prototypes check_cflags -Wstrict-prototypes enabled extra_warnings && check_cflags -Winline +check_disable_warning(){ + warning_flag=-W${1#-Wno-} + test_cflags $warning_flag && add_cflags $1 +} + +check_disable_warning -Wno-parentheses +check_disable_warning -Wno-switch +check_disable_warning -Wno-format-zero-length +check_disable_warning -Wno-pointer-sign + # add some linker flags check_ldflags -Wl,--warn-common check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample @@ -3608,7 +3951,7 @@ enabled xmm_clobber_test && -Wl,--wrap,avcodec_decode_video2 \ -Wl,--wrap,avcodec_decode_subtitle2 \ -Wl,--wrap,avcodec_encode_audio2 \ - -Wl,--wrap,avcodec_encode_video \ + -Wl,--wrap,avcodec_encode_video2 \ -Wl,--wrap,avcodec_encode_subtitle \ -Wl,--wrap,sws_scale || disable xmm_clobber_test @@ -3666,8 +4009,6 @@ if enabled icc; then # 11030: Warning unknown option --as-needed # 10156: ignoring option '-export'; no argument required check_ldflags -wd10156,11030 - # Allow to compile with optimizations - 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 @@ -3689,6 +4030,7 @@ elif enabled gcc; then check_cflags -Werror=return-type check_cflags -Werror=declaration-after-statement check_cflags -Werror=vla + enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized elif enabled llvm_gcc; then check_cflags -mllvm -stack-alignment=16 elif enabled clang; then @@ -3697,6 +4039,9 @@ elif enabled clang; then check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes check_cflags -Werror=return-type +elif enabled cparser; then + add_cflags -Wno-missing-variable-declarations + add_cflags -Wno-empty-statement elif enabled armcc; then # 2523: use of inline assembler is deprecated add_cflags -W${armcc_opt},--diag_suppress=2523 @@ -3709,8 +4054,20 @@ elif enabled tms470; then add_cflags -pds=824 -pds=837 elif enabled pathscale; then add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF -elif enabled msvc; then +elif enabled_any msvc icl; then enabled x86_32 && disable aligned_stack + enabled_all x86_32 debug && add_cflags -Oy- + enabled debug && add_ldflags -debug + enable pragma_deprecated + if enabled icl; then + # -Qansi-alias is basically -fstrict-aliasing, but does not work + # (correctly) on icl 13.x. + check_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" && + add_cflags -Qansi-alias + # icl will pass the inline asm tests but inline asm is currently + # not supported (build will fail) + disable inline_asm + fi fi case $target_os in @@ -3723,6 +4080,7 @@ case $target_os in esac enabled_any $THREADS_LIST && enable threads +enabled_any $ATOMICS_LIST && enable atomics_native enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } @@ -3756,7 +4114,7 @@ if enabled x86; then echo "SSSE3 enabled ${ssse3-no}" echo "AVX enabled ${avx-no}" echo "FMA4 enabled ${fma4-no}" - echo "CMOV enabled ${cmov-no}" + echo "i686 features enabled ${i686-no}" echo "CMOV is fast ${fast_cmov-no}" echo "EBX available ${ebx_available-no}" echo "EBP available ${ebp_available-no}" @@ -3786,47 +4144,18 @@ echo "network support ${network-no}" echo "threading support ${thread_type-no}" echo "safe bitstream reader ${safe_bitstream_reader-no}" echo "SDL support ${sdl-no}" -echo "libdxva2 enabled ${dxva2-no}" -echo "libva enabled ${vaapi-no}" -echo "libvdpau enabled ${vdpau-no}" -echo "AVISynth enabled ${avisynth-no}" -echo "frei0r enabled ${frei0r-no}" -echo "gnutls enabled ${gnutls-no}" -echo "libcdio support ${libcdio-no}" -echo "libdc1394 support ${libdc1394-no}" -echo "libfaac enabled ${libfaac-no}" -echo "libfdk-aac enabled ${libfdk_aac-no}" -echo "libgsm enabled ${libgsm-no}" -echo "libilbc enabled ${libilbc-no}" -echo "libmp3lame enabled ${libmp3lame-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 "libopus enabled ${libopus-no}" -echo "libpulse enabled ${libpulse-no}" -echo "librtmp enabled ${librtmp-no}" -echo "libschroedinger enabled ${libschroedinger-no}" -echo "libspeex enabled ${libspeex-no}" -echo "libtheora enabled ${libtheora-no}" -echo "libvo-aacenc support ${libvo_aacenc-no}" -echo "libvo-amrwbenc support ${libvo_amrwbenc-no}" -echo "libvorbis enabled ${libvorbis-no}" -echo "libvpx enabled ${libvpx-no}" -echo "libx264 enabled ${libx264-no}" -echo "libxavs enabled ${libxavs-no}" -echo "libxvid enabled ${libxvid-no}" -echo "openssl enabled ${openssl-no}" -echo "zlib enabled ${zlib-no}" -echo "bzlib enabled ${bzlib-no}" test -n "$random_seed" && echo "random seed ${random_seed}" echo +echo "External libraries:" +print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns +echo + for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do echo "Enabled ${type}s:" eval list=\$$(toupper $type)_LIST - print_enabled '_*' $list | sort | pr -r -3 -t + print_enabled '_*' $list | print_3_columns echo done @@ -3845,7 +4174,7 @@ echo "License: $license" echo "Creating config.mak and config.h..." -test -e Makefile || $ln_s "$source_path/Makefile" . +test -e Makefile || echo "include $source_path/Makefile" > Makefile config_files="$TMPH config.mak" @@ -3858,6 +4187,7 @@ SHLIBDIR=\$(DESTDIR)$shlibdir INCDIR=\$(DESTDIR)$incdir BINDIR=\$(DESTDIR)$bindir DATADIR=\$(DESTDIR)$datadir +DOCDIR=\$(DESTDIR)$docdir MANDIR=\$(DESTDIR)$mandir SRC_PATH=$source_path CC_IDENT=$cc_ident @@ -3875,6 +4205,7 @@ AR=$ar ARFLAGS=$arflags AR_O=$ar_o RANLIB=$ranlib +STRIP=$strip LN_S=$ln_s CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS @@ -3889,7 +4220,6 @@ LD_LIB=$LD_LIB LD_PATH=$LD_PATH DLLTOOL=$dlltool LDFLAGS=$LDFLAGS -LDFLAGS-avserver=$AVSERVERLDFLAGS SHFLAGS=$(echo $($ldflags_filter $SHFLAGS)) YASMFLAGS=$YASMFLAGS BUILDSUF=$build_suffix @@ -3910,6 +4240,7 @@ AS_DEPFLAGS=$AS_DEPFLAGS HOSTCC=$host_cc HOSTLD=$host_ld HOSTCFLAGS=$host_cflags +HOSTCPPFLAGS=$host_cppflags HOSTEXESUF=$HOSTEXESUF HOSTLDFLAGS=$host_ldflags HOSTLIBS=$host_libs @@ -3921,8 +4252,9 @@ HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS HOSTCC_C=$HOSTCC_C HOSTCC_O=$HOSTCC_O HOSTLD_O=$HOSTLD_O -TARGET_EXEC=$target_exec +TARGET_EXEC=$target_exec $target_exec_args TARGET_PATH=$target_path +TARGET_SAMPLES=${target_samples:-\$(SAMPLES)} LIBS-avplay=$sdl_libs CFLAGS-avplay=$sdl_cflags ZLIB=$($ldflags_filter -lz) @@ -3952,6 +4284,7 @@ get_version(){ eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak + eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak } map 'get_version $v' $LIBRARY_LIST @@ -3978,6 +4311,8 @@ if enabled yasm; then printf '' >$TMPASM fi +enabled getenv || echo "#define getenv(x) NULL" >> $TMPH + print_config ARCH_ "$config_files" $ARCH_LIST print_config HAVE_ "$config_files" $HAVE_LIST print_config CONFIG_ "$config_files" $CONFIG_LIST \ @@ -4049,10 +4384,15 @@ Cflags: -I\${includedir} EOF } -pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM" -pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" -pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" -pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" +lavfi_libs="libavutil = $LIBAVUTIL_VERSION" +enabled movie_filter && prepend lavfi_libs "libavformat >= $LIBAVFORMAT_VERSION, libavcodec >= $LIBAVCODEC_VERSION," +enabled resample_filter && prepend lavfi_libs "libavresample >= $LIBAVRESAMPLE_VERSION," +enabled scale_filter && prepend lavfi_libs "libswscale >= $LIBSWSCALE_VERSION," + +pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM" +pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" +pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" +pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" +pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs" pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION" +pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"