X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=3299b1bd11320146456e23cb92482ff9e79be16e;hb=81f14884b59334b765eddb64b0dc8ca5dec7f9bd;hp=40821e15b7020cb6e653406195a13c69653e9590;hpb=26abd5149ebf9602d8036be4c6e72e08c98ea998;p=ffmpeg diff --git a/configure b/configure index 40821e15b70..3299b1bd113 100755 --- a/configure +++ b/configure @@ -91,6 +91,7 @@ Standard options: --enable-rpath use rpath to allow installing libraries in paths not part of the dynamic linker search path use rpath when linking programs [USE WITH CARE] + --install-name-dir=DIR Darwin directory name for installed targets Licensing options: --enable-gpl allow use of GPL code, the resulting libs @@ -154,7 +155,6 @@ Hardware accelerators: --disable-vaapi disable VAAPI code [autodetect] --disable-vda disable VDA code [autodetect] --disable-vdpau disable VDPAU code [autodetect] - --enable-videotoolbox enable VideoToolbox code [autodetect] Individual component options: --disable-everything disable all components listed below @@ -196,6 +196,7 @@ Individual component options: External library support: --enable-avisynth enable reading of AviSynth script files [no] --disable-bzlib disable bzlib [autodetect] + --enable-cuda enable dynamically linked CUDA [no] --enable-chromaprint enable audio fingerprinting with chromaprint [no] --enable-fontconfig enable fontconfig, useful for drawtext filter [no] --enable-frei0r enable frei0r video filtering [no] @@ -206,6 +207,7 @@ External library support: --enable-gnutls enable gnutls, needed for https support if openssl is not used [no] --disable-iconv disable iconv [autodetect] + --enable-jni enable JNI support [no] --enable-ladspa enable LADSPA audio filtering [no] --enable-libass enable libass subtitles rendering, needed for subtitles and ass filter [no] @@ -274,6 +276,7 @@ External library support: --enable-libzvbi enable teletext support via libzvbi [no] --disable-lzma disable lzma [autodetect] --enable-decklink enable Blackmagic DeckLink I/O support [no] + --enable-mediacodec enable Android MediaCodec support [no] --enable-mmal enable decoding via MMAL [no] --enable-netcdf enable NetCDF, needed for sofalizer filter [no] --enable-nvenc enable NVIDIA NVENC support [no] @@ -287,6 +290,7 @@ External library support: --disable-sdl disable sdl [autodetect] --disable-securetransport disable Secure Transport, needed for TLS support on OSX if openssl and gnutls are not used [autodetect] + --disable-videotoolbox disable VideoToolbox code [autodetect] --enable-x11grab enable X11 grabbing (legacy) [no] --disable-xlib disable xlib [autodetect] --disable-zlib disable zlib [autodetect] @@ -309,6 +313,7 @@ Toolchain options: --nm=NM use nm tool NM [$nm_default] --ar=AR use archive tool AR [$ar_default] --as=AS use assembler AS [$as_default] + --strip=STRIP use strip tool STRIP [$strip_default] --windres=WINDRES use windows resource compiler WINDRES [$windres_default] --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default] --cc=CC use C compiler CC [$cc_default] @@ -579,15 +584,8 @@ enable(){ set_all yes $* } -check_requested() { - for var; do - eval test "x\$${var#!}_requested" = "xyes" && die "${var%%_*} cannot be enabled" - done -} - disable(){ set_all no $* - check_requested $* } enable_weak(){ @@ -638,32 +636,6 @@ enable_deep_weak(){ done } -do_enable_deep_force(){ - for var; do - enabled $var && continue - eval sel="\$${var}_deps\ \$${var}_deps_any\ \$${var}_select\ \$${var}_suggest\ \$${var}_select_any" - pushvar var - enable_deep_force $sel - popvar var - done -} - -enable_deep_force(){ - do_enable_deep_force $* - for var; do - is_in $var $ALL_COMPONENTS $COMPONENT_LIST $LIBRARY_LIST && enable $var - done -} - -request(){ - disable $* # force the refresh of the dependencies - for var; do - enable ${var}_requested - done - enable_deep_force $* - enable $* -} - enabled(){ test "${1#!}" = "$1" && op='=' || op=!= eval test "x\$${1#!}" $op "xyes" @@ -723,7 +695,7 @@ do_check_deps(){ append allopts $cfg eval dep_all="\$${cfg}_deps" - eval dep_any="\$${cfg}_deps_any\ \$${cfg}_select_any" + eval dep_any="\$${cfg}_deps_any" eval dep_sel="\$${cfg}_select" eval dep_sgs="\$${cfg}_suggest" eval dep_ifa="\$${cfg}_if" @@ -1459,12 +1431,14 @@ EXTERNAL_LIBRARY_LIST=" bzlib chromaprint crystalhd + cuda decklink frei0r gcrypt gmp gnutls iconv + jni ladspa libass libbluray @@ -1528,6 +1502,7 @@ EXTERNAL_LIBRARY_LIST=" libzmq libzvbi lzma + mediacodec mmal netcdf nvenc @@ -1538,6 +1513,7 @@ EXTERNAL_LIBRARY_LIST=" schannel sdl securetransport + videotoolbox x11grab xlib zlib @@ -1569,7 +1545,7 @@ HWACCEL_LIST=" vaapi vda vdpau - videotoolbox + videotoolbox_hwaccel xvmc " @@ -1765,6 +1741,7 @@ BUILTIN_LIST=" mm_empty rdtsc sarestart + sem_timedwait sync_val_compare_and_swap " HAVE_LIST_CMDLINE=" @@ -1786,6 +1763,7 @@ HEADERS_LIST=" asm_types_h cdio_paranoia_h cdio_paranoia_paranoia_h + dispatch_dispatch_h dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h dev_ic_bt8xx_h @@ -2038,6 +2016,7 @@ CONFIG_EXTRA=" iirfilter imdct15 intrax8 + iso_media ividsp jpegtables lgplv3 @@ -2070,6 +2049,7 @@ CONFIG_EXTRA=" texturedsp texturedspenc tpeldsp + vc1dsp videodsp vp3dsp vp56dsp @@ -2104,6 +2084,7 @@ PATHS_LIST=" pkgconfigdir prefix shlibdir + install_name_dir " CMDLINE_SET=" @@ -2253,6 +2234,7 @@ dirac_parse_select="golomb" error_resilience_select="me_cmp" faandct_deps="faan fdctdsp" faanidct_deps="faan idctdsp" +h264dsp_select="startcode" frame_thread_encoder_deps="encoders threads" intrax8_select="error_resilience" mdct_select="fft" @@ -2264,6 +2246,7 @@ mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp" mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp" qsvdec_select="qsv" qsvenc_select="qsv" +vc1dsp_select="h264chroma qpeldsp startcode" rdft_select="fft" # decoders / encoders @@ -2343,7 +2326,7 @@ h263_encoder_select="aandcttables h263dsp mpegvideoenc" h263i_decoder_select="h263_decoder" h263p_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" -h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel startcode videodsp" +h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel videodsp" h264_decoder_suggest="error_resilience" h264_qsv_decoder_deps="libmfx" h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel" @@ -2410,7 +2393,7 @@ msmpeg4v2_decoder_select="h263_decoder" msmpeg4v2_encoder_select="h263_encoder" msmpeg4v3_decoder_select="h263_decoder" msmpeg4v3_encoder_select="h263_encoder" -mss2_decoder_select="vc1_decoder" +mss2_decoder_select="vc1_decoder mpegvideo" mts2_decoder_select="mss34dsp" mxpeg_decoder_select="mjpeg_decoder" nellymoser_decoder_select="mdct sinewin" @@ -2465,7 +2448,7 @@ txd_decoder_select="texturedsp" utvideo_decoder_select="bswapdsp" utvideo_encoder_select="bswapdsp huffman huffyuvencdsp" vble_decoder_select="huffyuvdsp" -vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 qpeldsp startcode" +vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp" vc1_qsv_decoder_deps="libmfx" vc1_qsv_decoder_select="qsvdec vc1_qsv_hwaccel" vc1image_decoder_select="vc1_decoder" @@ -2506,11 +2489,13 @@ crystalhd_deps="libcrystalhd_libcrystalhd_if_h" d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder ID3D11VideoContext" dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode" vaapi_deps="va_va_h" -vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" -vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore" +vda_framework_deps="VideoDecodeAcceleration_VDADecoder_h" +vda_framework_extralibs="-framework VideoDecodeAcceleration" +vda_deps="vda_framework pthreads" +vda_extralibs="-framework CoreFoundation -framework QuartzCore" vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" -videotoolbox_deps="VideoToolbox_VideoToolbox_h pthreads" -videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework QuartzCore -framework CoreVideo" +videotoolbox_hwaccel_deps="videotoolbox pthreads" +videotoolbox_hwaccel_extralibs="-framework QuartzCore" xvmc_deps="X11_extensions_XvMClib_h" h263_vaapi_hwaccel_deps="vaapi" @@ -2522,6 +2507,8 @@ h264_d3d11va_hwaccel_deps="d3d11va" h264_d3d11va_hwaccel_select="h264_decoder" h264_dxva2_hwaccel_deps="dxva2" h264_dxva2_hwaccel_select="h264_decoder" +h264_mediacodec_decoder_deps="mediacodec" +h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser" h264_mmal_decoder_deps="mmal" h264_mmal_decoder_select="mmal" h264_mmal_hwaccel_deps="mmal" @@ -2626,13 +2613,15 @@ h264_parser_select="h264_decoder" hevc_parser_select="golomb" mpegvideo_parser_select="mpegvideo" mpeg4video_parser_select="h263dsp mpegvideo qpeldsp" -vc1_parser_select="mpegvideo startcode vc1_decoder" +vc1_parser_select="vc1dsp" # bitstream_filters mjpeg2jpeg_bsf_select="jpegtables" # external libraries chromaprint_muxer_deps="chromaprint" +h264_videotoolbox_encoder_deps="videotoolbox_encoder pthreads" +h264_videotoolbox_encoder_select="bzlib zlib iconv" libcelt_decoder_deps="libcelt" libdcadec_decoder_deps="libdcadec" libfaac_encoder_deps="libfaac" @@ -2694,6 +2683,10 @@ libzvbi_teletext_decoder_deps="libzvbi" nvenc_encoder_deps="nvenc" nvenc_h264_encoder_deps="nvenc" nvenc_hevc_encoder_deps="nvenc" +videotoolbox_deps="VideoToolbox_VideoToolbox_h" +videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo" +videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames" +videotoolbox_encoder_suggest="vda_framework" # demuxers / muxers ac3_demuxer_select="ac3_parser" @@ -2701,11 +2694,11 @@ asf_demuxer_select="riffdec" asf_o_demuxer_select="riffdec" asf_muxer_select="riffenc" asf_stream_muxer_select="asf_muxer" -avi_demuxer_select="riffdec exif" +avi_demuxer_select="iso_media riffdec exif" avi_muxer_select="riffenc" avisynth_demuxer_deps="avisynth" avisynth_demuxer_select="riffdec" -caf_demuxer_select="riffdec" +caf_demuxer_select="iso_media riffdec" dash_muxer_select="mp4_muxer" dirac_demuxer_select="dirac_parser" dts_demuxer_select="dca_parser" @@ -2725,15 +2718,16 @@ ismv_muxer_select="mov_muxer" libnut_demuxer_deps="libnut" libnut_muxer_deps="libnut" matroska_audio_muxer_select="matroska_muxer" -matroska_demuxer_select="riffdec" +matroska_demuxer_select="iso_media riffdec" matroska_demuxer_suggest="bzlib lzo zlib" -matroska_muxer_select="riffenc" +matroska_muxer_select="iso_media riffenc" mmf_muxer_select="riffenc" -mov_demuxer_select="riffdec" +mov_demuxer_select="iso_media riffdec" mov_demuxer_suggest="zlib" -mov_muxer_select="riffenc rtpenc_chain" +mov_muxer_select="iso_media riffenc rtpenc_chain" mp3_demuxer_select="mpegaudio_parser" mp4_muxer_select="mov_muxer" +mpegts_demuxer_select="iso_media" mpegts_muxer_select="adts_muxer latm_muxer" mpegtsraw_demuxer_select="mpegts_demuxer" mxf_d10_muxer_select="mxf_muxer" @@ -2763,9 +2757,10 @@ w64_demuxer_select="wav_demuxer" w64_muxer_select="wav_muxer" wav_demuxer_select="riffdec" wav_muxer_select="riffenc" -webm_muxer_select="riffenc" -wtv_demuxer_select="riffdec" -wtv_muxer_select="riffenc" +webm_muxer_select="iso_media riffenc" +webm_dash_manifest_demuxer_select="matroska_demuxer" +wtv_demuxer_select="mpegts_demuxer riffdec" +wtv_muxer_select="mpegts_muxer riffenc" xmv_demuxer_select="riffdec" xwma_demuxer_select="riffdec" @@ -2790,7 +2785,8 @@ gdigrab_indev_deps="CreateDIBSection" gdigrab_indev_extralibs="-lgdi32" gdigrab_indev_select="bmp_decoder" iec61883_indev_deps="libiec61883" -jack_indev_deps="jack_jack_h sem_timedwait" +jack_indev_deps="jack_jack_h" +jack_indev_deps_any="sem_timedwait dispatch_dispatch_h" lavfi_indev_deps="avfilter" libcdio_indev_deps="libcdio" libdc1394_indev_deps="libdc1394" @@ -2860,7 +2856,7 @@ tls_schannel_protocol_deps="schannel" tls_schannel_protocol_select="tcp_protocol" tls_securetransport_protocol_deps="securetransport" tls_securetransport_protocol_select="tcp_protocol" -tls_protocol_select_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol" +tls_protocol_deps_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol" udp_protocol_select="network" udplite_protocol_select="network" unix_protocol_deps="sys_un_h" @@ -2890,6 +2886,8 @@ eq_filter_deps="gpl" fftfilt_filter_deps="avcodec" fftfilt_filter_select="rdft" find_rect_filter_deps="avcodec avformat gpl" +firequalizer_filter_deps="avcodec" +firequalizer_filter_select="rdft" flite_filter_deps="libflite" frei0r_filter_deps="frei0r dlopen" frei0r_src_filter_deps="frei0r dlopen" @@ -2897,6 +2895,7 @@ fspp_filter_deps="gpl" geq_filter_deps="gpl" histeq_filter_deps="gpl" hqdn3d_filter_deps="gpl" +hwupload_cuda_filter_deps="cuda" interlace_filter_deps="gpl" kerndeint_filter_deps="gpl" ladspa_filter_deps="ladspa dlopen" @@ -3047,7 +3046,10 @@ cpu="generic" intrinsics="none" # configurable options +enable $PROGRAM_LIST enable $DOCUMENT_LIST +enable $EXAMPLE_LIST +enable $(filter_out avresample $LIBRARY_LIST) enable stripping enable asm @@ -3065,9 +3067,11 @@ sws_max_filter_size_default=256 set_default sws_max_filter_size # Enable hwaccels by default. -enable d3d11va dxva2 vaapi vda vdpau videotoolbox xvmc +enable d3d11va dxva2 vaapi vda vdpau videotoolbox_hwaccel xvmc enable xlib +enable vda_framework videotoolbox videotoolbox_encoder + # build settings SHFLAGS='-shared -Wl,-soname,$$(@F)' LIBPREF="lib" @@ -3151,9 +3155,17 @@ MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c) DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c) OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) -PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) +find_things_extern(){ + thing=$1 + pattern=$2 + file=$source_path/$3 + sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file" +} + +PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c) + ALL_COMPONENTS=" $BSF_LIST $DECODER_LIST @@ -3168,6 +3180,12 @@ ALL_COMPONENTS=" $PROTOCOL_LIST " +for n in $COMPONENT_LIST; do + v=$(toupper ${n%s})_LIST + eval enable \$$v + eval ${n}_if_any="\$$v" +done + enable $ARCH_EXT_LIST die_unknown(){ @@ -3234,11 +3252,10 @@ for opt do disable $PROGRAM_LIST ;; --disable-everything) - map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST - enable_deep_force $EXAMPLE_LIST $(filter_out avresample $LIBRARY_LIST) $PROGRAM_LIST + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST ;; --disable-all) - map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST disable $LIBRARY_LIST $PROGRAM_LIST doc enable avutil ;; @@ -3255,7 +3272,6 @@ for opt do is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" eval list=\$$(toupper $thing)_LIST name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} - test $action = enable && action="request" list=$(filter "$name" $list) [ "$list" = "" ] && warn "Option $opt did not match anything" $action $list @@ -3263,10 +3279,9 @@ for opt do --enable-?*|--disable-?*) eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') if is_in $option $COMPONENT_LIST; then - test $action = enable && action="enable_deep_force" + test $action = disable && action=unset eval $action \$$(toupper ${option%s})_LIST elif is_in $option $CMDLINE_SELECT; then - test $action = enable && action="request" $action $option else die_unknown $opt @@ -3303,15 +3318,11 @@ done disabled logging && logfile=/dev/null -# Enable the default components if not disabled explicitly - -enable_weak $EXAMPLE_LIST $(filter_out avresample $LIBRARY_LIST) $PROGRAM_LIST - # Disable all the library-specific components if the library itself # is disabled, see AVCODEC_LIST and following _LIST variables. disable_components(){ - disabled ${1} && disable_weak $( + disabled ${1} && disable $( eval components="\$$(toupper ${1})_COMPONENTS" map 'eval echo \${$(toupper ${v%s})_LIST}' $components ) @@ -3319,25 +3330,6 @@ disable_components(){ map 'disable_components $v' $LIBRARY_LIST -echo "# $0 $FFMPEG_CONFIGURATION" > $logfile - -# Mark components that had not been enabled/disabled explicitly -# as enabled - -for n in $COMPONENT_LIST; do - v=$(toupper ${n%s})_LIST - eval enable_weak \$$v - eval ${n}_if_any="\$$v" -done - -# Make so that disabled libraries are enabled if a component -# of them is requested - -for n in $LIBRARY_LIST; do - v=$(toupper ${n})_COMPONENTS - eval ${n}_if_any="\$$v" -done - echo "# $0 $FFMPEG_CONFIGURATION" > $logfile set >> $logfile @@ -4293,8 +4285,8 @@ elif enabled mips; then esac ;; generic) - disable mips64r6 - disable msa + # We do not disable anything. Is up to the user to disable + # the unwanted features. ;; *) # Unknown CPU. Disable everything. @@ -4557,7 +4549,8 @@ case $target_os in ;; darwin) enabled ppc && add_asflags -force_cpusubtype_ALL - SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' + install_name_dir_default='$(SHLIBDIR)' + SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress strip="${strip} -x" add_ldflags -Wl,-dynamic,-search_paths_first @@ -4568,6 +4561,7 @@ case $target_os in enabled x86_64 && objformat="macho64" enabled_any pic shared x86_64 || { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } + check_header dispatch/dispatch.h ;; msys*) die "Native MSYS builds are discouraged, please use the MINGW environment."; @@ -4927,6 +4921,7 @@ die_license_disabled gpl libxavs die_license_disabled gpl libxvid die_license_disabled gpl x11grab +die_license_disabled nonfree cuda die_license_disabled nonfree libfaac die_license_disabled nonfree nvenc enabled gpl && die_license_disabled_gpl nonfree libfdk_aac @@ -5117,27 +5112,92 @@ elif enabled mips; then enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"' # Enable minimum ISA based on selected options - if enabled mips64 && (enabled mipsdsp || enabled mipsdspr2); then - add_cflags "-mips64r2" - add_asflags "-mips64r2" - elif enabled mips64 && enabled mipsfpu && disabled loongson2 && disabled loongson3; then - add_cflags "-mips64" - add_asflags "-mips64" - elif enabled mipsdsp || enabled mipsdspr2; then - add_cflags "-mips32r2 -mfp32" - add_asflags "-mips32r2 -mfp32" + if enabled mips64; then + if enabled mips64r6; then + check_ldflags "-mips64r6" && + add_cflags "-mips64r6" && + add_asflags "-mips64r6" && + check_inline_asm mips64r6 '"dlsa $0, $0, $0, 1"' || + disable mips64r6 + fi + if disabled mips64r6 && enabled mips64r2; then + check_ldflags "-mips64r2" && + add_cflags "-mips64r2" && + add_asflags "-mips64r2" && + check_inline_asm mips64r2 '"dext $0, $0, 0, 1"' || + disable mips64r2 + fi + if disabled mips64r6 && disabled mips64r2; then + check_ldflags "-mips64" && + add_cflags "-mips64" && + add_asflags "-mips64" && + check_inline_asm mips64r1 '"daddi $0, $0, 0"' || + disable mips64r1 + fi + else + if enabled mips32r6; then + check_ldflags "-mips32r6" && + add_cflags "-mips32r6" && + add_asflags "-mips32r6" && + check_inline_asm mips32r6 '"aui $0, $0, 0"' || + disable mips32r6 + fi + if disabled mips32r6 && enabled mips32r2; then + check_ldflags "-mips32r2" && + add_cflags "-mips32r2" && + add_asflags "-mips32r2" && + check_inline_asm mips32r2 '"ext $0, $0, 0, 1"' || + disable mips32r2 + fi + if disabled mips32r6 && disabled mips32r2; then + check_ldflags "-mips32" && + add_cflags "-mips32" && + add_asflags "-mips32" && + check_inline_asm mips32r1 '"addi $0, $0, 0"' || + disable mips32r1 + fi + fi + + # MIPS FPU + if enabled mipsfpu; then + check_ldflags "-mhard-float" && + add_cflags "-mhard-float" && + add_asflags "-mhard-float" && + check_inline_asm mipsfpu '"cvt.d.l $f0, $f2"' || + disable mipsfpu fi - enabled mipsdsp && add_cflags "-mdsp" && add_asflags "-mdsp" && - check_inline_asm mipsdsp '"addu.qb $t0, $t1, $t2"' - enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" && - check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"' - enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" && - check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"' - enabled msa && check_cflags "-mmsa" && check_ldflags "-mmsa" && - check_inline_asm msa '"addvi.b $w0, $w1, 1"' + # MSA and DSP support require ISA revision level 2 or greater + if enabled mips32r2 || enabled mips64r2 || enabled mips32r6 || enabled mips64r6; then + # MSA must be used with -mfp64 and -mhard-float + if enabled mipsfpu; then + if enabled msa; then + check_ldflags "-mfp64 -mmsa" && + add_cflags "-mfp64 -mmsa" && + add_asflags "-mfp64 -mmsa" && + check_inline_asm msa '"addvi.b $w0, $w1, 1"' && + check_header msa.h || + disable msa + fi + else + disable msa + fi - enabled msa && add_asflags "-mmsa" + if enabled mipsdsp; then + check_ldflags "-mdsp" && + add_cflags "-mdsp" && + add_asflags "-mdsp" && + check_inline_asm mipsdsp '"addu.qb $t0, $t1, $t2"' || + disable mipsdsp + fi + if enabled mipsdspr2; then + check_ldflags "-mdspr2" && + add_cflags "-mdspr2" && + add_asflags "-mdspr2" && + check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"' || + disable mipsdspr2 + fi + fi elif enabled parisc; then @@ -5316,6 +5376,7 @@ check_builtin atomic_compare_exchange "" "int *ptr, *oldval; int newval; __atomi check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()" check_builtin MemoryBarrier windows.h "MemoryBarrier()" check_builtin sarestart signal.h "SA_RESTART" +check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" -lpthread check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)" check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)" check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)" @@ -5405,6 +5466,7 @@ check_header vdpau/vdpau.h check_header vdpau/vdpau_x11.h check_header VideoDecodeAcceleration/VDADecoder.h check_header VideoToolbox/VideoToolbox.h +check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox check_header windows.h check_header X11/extensions/XvMClib.h check_header asm/types.h @@ -5494,11 +5556,14 @@ enabled avfoundation_indev && { check_lib2 CoreGraphics/CoreGraphics.h CGGetActi enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } || { check_lib2 "dlfcn.h" dlopen -ldl; } || die "ERROR: LoadLibrary/dlopen not found for avisynth"; } +enabled cuda && check_lib cuda.h cuInit -lcuda enabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint enabled decklink && { check_header DeckLinkAPI.h || die "ERROR: DeckLinkAPI.h header not found"; } enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; } enabled gmp && require2 gmp gmp.h mpz_export -lgmp enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init +enabled jni && { [ $target_os = "android" ] && check_header jni.h && enabled pthreads && + check_lib2 "dlfcn.h" dlopen -ldl; } enabled ladspa && { check_header ladspa.h || die "ERROR: ladspa.h header not found"; } enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883 enabled libass && require_pkg_config libass ass/ass.h ass_library_init @@ -5532,7 +5597,8 @@ enabled libnut && require libnut libnut.h nut_demuxer_init -lnut enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb enabled libopencv && { check_header opencv2/core/core_c.h && - require_pkg_config opencv opencv2/core/core_c.h cvCreateImageHeader || + { use_pkg_config opencv opencv2/core/core_c.h cvCreateImageHeader || + require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } || require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; } enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion enabled libopenjpeg && { check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC || @@ -5610,6 +5676,7 @@ enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi && { check_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" || enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; } +enabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; } enabled mmal && { check_lib interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host || { ! enabled cross_compile && { add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline ; @@ -5623,8 +5690,8 @@ enabled mmal && enabled netcdf && require_pkg_config netcdf netcdf.h nc_inq_libvers enabled nvenc && { check_header nvEncodeAPI.h || die "ERROR: nvEncodeAPI.h not found."; } && - { check_cpp_condition nvEncodeAPI.h "NVENCAPI_MAJOR_VERSION >= 5" || - die "ERROR: NVENC API version 4 or older is not supported"; } && + { check_cpp_condition nvEncodeAPI.h "NVENCAPI_MAJOR_VERSION >= 6" || + die "ERROR: NVENC API version 5 or older is not supported"; } && { [ $target_os != cygwin ] || die "ERROR: NVENC is not supported on Cygwin currently."; } enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } || @@ -5752,7 +5819,7 @@ check_header soundcard.h 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 sem_timedwait && +enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func jack_port_get_latency_range -ljack enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio @@ -6266,6 +6333,7 @@ echo "threading support ${thread_type-no}" echo "safe bitstream reader ${safe_bitstream_reader-no}" echo "SDL support ${sdl-no}" echo "opencl enabled ${opencl-no}" +echo "JNI support ${jni-no}" echo "texi2html enabled ${texi2html-no}" echo "perl enabled ${perl-no}" echo "pod2man enabled ${pod2man-no}" @@ -6329,6 +6397,7 @@ DATADIR=\$(DESTDIR)$datadir DOCDIR=\$(DESTDIR)$docdir MANDIR=\$(DESTDIR)$mandir PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir +INSTALL_NAME_DIR=$install_name_dir SRC_PATH=$source_path SRC_LINK=$source_link ifndef MAIN_MAKEFILE