X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=0bd54ddee7796a107937c5107ecfe70b13398c16;hb=7ef760d95c73dfee021b8fdee04f65126eb7edd1;hp=ed2fdfee810d7148586d5709fafb4da16e7252a9;hpb=1277dc07fbe6ec6d7a10312a053e482e6070c52b;p=ffmpeg diff --git a/configure b/configure index ed2fdfee810..0bd54ddee77 100755 --- a/configure +++ b/configure @@ -200,6 +200,7 @@ 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, @@ -216,6 +217,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] @@ -424,21 +426,21 @@ get_safe(){ } pushvar(){ - for var in $*; do - eval level=\${${var}_level:=0} - eval ${var}_${level}="\$$var" - eval ${var}_level=$(($level+1)) + for pvar in $*; do + eval level=\${${pvar}_level:=0} + eval ${pvar}_${level}="\$$pvar" + eval ${pvar}_level=$(($level+1)) done } popvar(){ - for var in $*; do - eval level=\${${var}_level:-0} + for pvar in $*; do + eval level=\${${pvar}_level:-0} test $level = 0 && continue eval level=$(($level-1)) - eval $var="\${${var}_${level}}" - eval ${var}_level=$level - eval unset ${var}_${level} + eval $pvar="\${${pvar}_${level}}" + eval ${pvar}_level=$level + eval unset ${pvar}_${level} done } @@ -489,8 +491,13 @@ enable_deep(){ } enable_deep_weak(){ - do_enable_deep $* - enable_weak $* + for var; do + disabled $var && continue + pushvar var + do_enable_deep $var + popvar var + enable_weak $var + done } enabled(){ @@ -906,6 +913,7 @@ static void sighandler(int sig){ int foo(void){ $code } +int (*func_ptr)(void) = foo; int main(void){ signal(SIGILL, sighandler); signal(SIGFPE, sighandler); @@ -913,7 +921,7 @@ int main(void){ #ifdef SIGBUS signal(SIGBUS, sighandler); #endif - foo(); + return func_ptr(); } EOF } @@ -1053,6 +1061,7 @@ EXTERNAL_LIBRARY_LIST=" libvo_amrwbenc libvorbis libvpx + libwavpack libx264 libxavs libxvid @@ -1248,7 +1257,6 @@ HAVE_LIST=" cdio_paranoia_h cdio_paranoia_paranoia_h closesocket - cmov CommandLineToArgvW cpunop CryptGenRandom @@ -1282,9 +1290,11 @@ HAVE_LIST=" gettimeofday gnu_as gsm_h + i686 ibm_asm inet_aton io_h + inline_asm_labels isatty jack_port_get_latency_range ldbrx @@ -1439,6 +1449,7 @@ CMDLINE_SET=" target_exec target_os target_path + target_samples toolchain " @@ -1465,7 +1476,7 @@ ppc4xx_deps="ppc" vis_deps="sparc" -x86_64_suggest="cmov fast_cmov" +x86_64_suggest="fast_cmov i686" amd3dnow_deps="mmx" amd3dnowext_deps="amd3dnow" @@ -1521,11 +1532,12 @@ aac_latm_decoder_select="aac_decoder aac_latm_parser" ac3_decoder_select="mdct ac3dsp ac3_parser dsputil" ac3_encoder_select="mdct ac3dsp dsputil" ac3_fixed_encoder_select="mdct ac3dsp dsputil" +aic_decoder_select="dsputil golomb" alac_encoder_select="lpc" als_decoder_select="dsputil" amrnb_decoder_select="lsp" amrwb_decoder_select="lsp" -amv_decoder_select="dsputil" +amv_decoder_select="dsputil hpeldsp" ape_decoder_select="dsputil" asv1_decoder_select="dsputil" asv1_encoder_select="dsputil" @@ -1566,6 +1578,7 @@ flv_decoder_select="h263_decoder" flv_encoder_select="h263_encoder" fourxm_decoder_select="dsputil" fraps_decoder_select="dsputil huffman" +g2m_decoder_select="dsputil zlib" h261_decoder_select="error_resilience mpegvideo" h261_encoder_select="aandcttables mpegvideoenc" h263_decoder_select="error_resilience h263_parser mpegvideo" @@ -1580,7 +1593,7 @@ iac_decoder_select="dsputil fft mdct sinewin" imc_decoder_select="dsputil fft mdct sinewin" indeo3_decoder_select="hpeldsp" interplay_video_decoder_select="hpeldsp" -jpegls_decoder_select="dsputil golomb" +jpegls_decoder_select="dsputil golomb hpeldsp" jpegls_encoder_select="golomb" jv_decoder_select="dsputil" lagarith_decoder_select="dsputil" @@ -1588,8 +1601,8 @@ ljpeg_encoder_select="aandcttables mpegvideoenc" loco_decoder_select="golomb" mdec_decoder_select="dsputil error_resilience mpegvideo" mimic_decoder_select="dsputil hpeldsp" -mjpeg_decoder_select="dsputil" -mjpegb_decoder_select="dsputil" +mjpeg_decoder_select="dsputil hpeldsp" +mjpegb_decoder_select="dsputil hpeldsp" mjpeg_encoder_select="aandcttables dsputil mpegvideoenc" mlp_decoder_select="dsputil mlp_parser" motionpixels_decoder_select="dsputil" @@ -1619,7 +1632,7 @@ msmpeg4v2_encoder_select="h263_encoder" msmpeg4v3_decoder_select="h263_decoder" msmpeg4v3_encoder_select="h263_encoder" mss2_decoder_select="error_resilience vc1_decoder" -mxpeg_decoder_select="dsputil" +mxpeg_decoder_select="dsputil hpeldsp" nellymoser_decoder_select="mdct sinewin" nellymoser_encoder_select="audio_frame_queue mdct sinewin" nuv_decoder_select="dsputil lzo" @@ -1639,7 +1652,7 @@ rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvi rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" shorten_decoder_select="golomb" sipr_decoder_select="lsp" -sp5x_decoder_select="dsputil" +sp5x_decoder_select="dsputil hpeldsp" svq1_decoder_select="hpeldsp" svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc" svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp" @@ -1648,7 +1661,7 @@ tak_decoder_select="dsputil" theora_decoder_select="vp3_decoder" tiff_decoder_suggest="zlib" tiff_encoder_suggest="zlib" -thp_decoder_select="dsputil" +thp_decoder_select="dsputil hpeldsp" truehd_decoder_select="mlp_decoder" truemotion2_decoder_select="dsputil" truespeech_decoder_select="dsputil" @@ -1780,6 +1793,7 @@ libvpx_vp8_decoder_deps="libvpx" libvpx_vp8_encoder_deps="libvpx" libvpx_vp9_decoder_deps="libvpx" libvpx_vp9_encoder_deps="libvpx" +libwavpack_encoder_deps="libwavpack" libx264_encoder_deps="libx264" libxavs_encoder_deps="libxavs" libxvid_encoder_deps="libxvid" @@ -1824,7 +1838,7 @@ alsa_outdev_deps="alsa_asoundlib_h" 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" fbdev_indev_deps="linux_fb_h" -jack_indev_deps="jack_jack_h" +jack_indev_deps="jack_jack_h pthreads" libcdio_indev_deps="libcdio" libdc1394_indev_deps="libdc1394" oss_indev_deps_any="soundcard_h sys_soundcard_h" @@ -1898,9 +1912,9 @@ swscale_deps="avutil" # programs avconv_deps="avcodec avfilter avformat avresample swscale" -avconv_select="aformat_filter anull_filter asyncts_filter format_filter +avconv_select="aformat_filter anull_filter asyncts_filter atrim_filter format_filter fps_filter null_filter resample_filter scale_filter - setpts_filter" + setpts_filter trim_filter" avplay_deps="avcodec avformat avresample swscale sdl" avplay_select="rdft" avprobe_deps="avcodec avformat" @@ -1960,7 +1974,6 @@ enable dxva2 vdpau # build settings SHFLAGS='-shared -Wl,-soname,$$(@F)' -AVSERVERLDFLAGS=-Wl,-E LIBPREF="lib" LIBSUF=".a" FULLNAME='$(NAME)$(BUILDSUF)' @@ -2205,6 +2218,24 @@ case "$toolchain" in add_cflags -fsanitize=thread -pie add_ldflags -fsanitize=thread -pie ;; + gcc-asan) + cc_default="gcc" + add_cflags -fsanitize=address + add_ldflags -fsanitize=address + ;; + gcc-tsan) + cc_default="gcc" + add_cflags -fsanitize=thread -pie -fPIC + add_ldflags -fsanitize=thread -pie -fPIC + ;; + valgrind-massif) + target_exec_default="valgrind" + target_exec_args="--alloc-fn=av_malloc --alloc-fn=av_mallocz" + ;; + valgrind-memcheck) + target_exec_default="valgrind" + target_exec_args="--track-origins=yes --leak-check=full" + ;; msvc) cc_default="c99wrap cl" ld_default="c99wrap link" @@ -2212,6 +2243,13 @@ case "$toolchain" in 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 @@ -2221,7 +2259,7 @@ case "$toolchain" in ;; 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 @@ -2306,20 +2344,23 @@ ccc_flags(){ done } -msvc_flags(){ +msvc_common_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 ;; + # 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 ;; @@ -2329,6 +2370,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 \ + -wd4996 -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 @@ -2360,10 +2425,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 ;; @@ -2523,7 +2588,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 @@ -2539,6 +2605,34 @@ probe_cc(){ 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 fi eval ${pfx}_type=\$_type @@ -2635,7 +2729,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) @@ -2651,7 +2746,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 @@ -2861,21 +2957,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 @@ -2949,17 +3045,19 @@ case "$arch" in esac enable $subarch -enabled spic && enable pic +enabled spic && enable_weak pic # OS specific case $target_os in + aix) + add_cppflags '-I\$(SRC_PATH)/compat/aix' + ;; 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" @@ -2969,7 +3067,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) @@ -3002,7 +3102,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 || @@ -3020,6 +3119,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" @@ -3041,8 +3142,7 @@ case $target_os in # 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 shared and static libs at the same time with MSVC. disable static fi shlibdir_default="$bindir_default" @@ -3093,7 +3193,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" @@ -3133,7 +3232,6 @@ case $target_os in ;; osf1) add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT - AVSERVERLDFLAGS= ;; minix) ;; @@ -3182,8 +3280,18 @@ elif check_func_headers stdlib.h _get_doserrno; then 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 @@ -3208,7 +3316,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 @@ -3247,14 +3355,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; } || @@ -3684,7 +3803,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 @@ -3692,7 +3812,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 && @@ -3834,8 +3955,17 @@ 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 + if enabled icl; then + # basically -fstrict-aliasing that does not work (correctly) on icl 13.x + check_cpp_condition "windows.h" "__ICL < 1300" && 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 @@ -3882,7 +4012,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}" @@ -3986,7 +4116,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 @@ -4019,8 +4148,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) @@ -4077,6 +4207,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 \ @@ -4148,10 +4280,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"