--disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build
--disable-avformat disable libavformat build
- --disable-avutil disable libavutil build
--disable-swresample disable libswresample build
--disable-swscale disable libswscale build
--disable-postproc disable libpostproc build
External library support:
--enable-avisynth enable reading of AviSynth script files [no]
--disable-bzlib disable bzlib [autodetect]
+ --enable-chromaprint enable audio fingerprinting with chromaprint [no]
--enable-fontconfig enable fontconfig, useful for drawtext filter [no]
--enable-frei0r enable frei0r video filtering [no]
--enable-gnutls enable gnutls, needed for https support
--enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
--enable-libopus enable Opus de/encoding via libopus [no]
--enable-libpulse enable Pulseaudio input via libpulse [no]
+ --enable-librubberband enable rubberband needed for rubberband filter [no]
--enable-libquvi enable quvi input via libquvi [no]
--enable-librtmp enable RTMP[E] support via librtmp [no]
--enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
Advanced options (experts only):
--malloc-prefix=PREFIX prefix malloc and related names with PREFIX
+ --custom-allocator=NAME use a supported custom allocator
--disable-symver disable symbol versioning
--enable-hardcoded-tables use hardcoded tables instead of runtime generation
--disable-safe-bitstream-reader
}
quotes='""'
-if test -t 1 && which tput >/dev/null; then
+if test -t 1 && which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
if test -n "$ncolors" && test $ncolors -ge 8; then
bold_color=$(tput bold)
error_color=$(tput setaf 1)
reset_color=$(tput sgr0)
fi
+ # 72 used instead of 80 since that's the default of pr
+ ncols=$(tput cols)
fi
+: ${ncols:=72}
log(){
echo "$@" >> $logfile
EXTERNAL_LIBRARY_LIST="
avisynth
bzlib
+ chromaprint
crystalhd
decklink
frei0r
libpulse
libquvi
librtmp
+ librubberband
libschroedinger
libshine
libsmbclient
cc
cpu
cross_prefix
+ custom_allocator
cxx
dep_cc
doxygen
rv20_encoder_select="h263_encoder"
rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
+screenpresso_decoder_select="zlib"
shorten_decoder_select="golomb"
sipr_decoder_select="lsp"
snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
mjpeg2jpeg_bsf_select="jpegtables"
# external libraries
+chromaprint_muxer_deps="chromaprint"
libaacplus_encoder_deps="libaacplus"
libcelt_decoder_deps="libcelt"
libdcadec_decoder_deps="libdcadec"
x11grab_xcb_indev_deps="libxcb"
# protocols
-async_protocol_deps="pthreads"
+async_protocol_deps="threads"
bluray_protocol_deps="libbluray"
ffrtmpcrypt_protocol_deps="!librtmp_protocol"
ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
removelogo_filter_deps="avcodec avformat swscale"
repeatfields_filter_deps="gpl"
resample_filter_deps="avresample"
+rubberband_filter_deps="librubberband"
sab_filter_deps="gpl swscale"
scale_filter_deps="swscale"
scale2ref_filter_deps="swscale"
# since the object filename is not given with the -MM flag, the compiler
# is only able to print the basename, and we must add the path ourselves
-DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
+DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
DEPFLAGS='-MM'
# find source path
exit 1
}
-print_3_columns() {
- cat | tr ' ' '\n' | sort | pr -r -3 -t
+print_in_columns() {
+ cols=$(expr $ncols / 24)
+ cat | tr ' ' '\n' | sort | pr -r "-$cols" -w $ncols -t
}
show_list() {
suffix=_$1
shift
- echo $* | sed s/$suffix//g | print_3_columns
+ echo $* | sed s/$suffix//g | print_in_columns
exit 0
}
if [ "$cpu" != generic ]; then
add_cflags $cpuflags
add_asflags $cpuflags
+ test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
fi
# compiler sanity check
LIBTARGET=arm-wince
fi
enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
- check_ldflags -Wl,--nxcompat
- check_ldflags -Wl,--dynamicbase
enabled x86_32 && check_ldflags -Wl,--large-address-aware
shlibdir_default="$bindir_default"
SLIBPREF=""
SLIB_INSTALL_LINKS=
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
- SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
+ SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--disable-auto-image-base'
objformat="win32"
ranlib=:
enable dos_paths
+ check_ldflags -Wl,--nxcompat,--dynamicbase
+ # Lets work around some stupidity in binutils.
+ # ld will strip relocations from executables even though we need them
+ # for dynamicbase (ASLR). Using -pie does retain the reloc section
+ # however ld then forgets what the entry point should be (oops) so we
+ # have to manually (re)set it.
+ if enabled x86_32; then
+ add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
+ elif enabled x86_64; then
+ add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
+ check_ldflags -Wl,--high-entropy-va # binutils 2.25
+ # Set image base >4GB for extra entropy with HEASLR
+ add_ldexeflags -Wl,--image-base,0x140000000
+ append SHFLAGS -Wl,--image-base,0x180000000
+ fi
;;
win32|win64)
disable symver
die_license_disabled gpl frei0r
die_license_disabled gpl libcdio
+die_license_disabled gpl librubberband
die_license_disabled gpl libsmbclient
die_license_disabled gpl libutvideo
die_license_disabled gpl libvidstab
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)"
+case "$custom_allocator" in
+ jemalloc)
+ # jemalloc by default does not use a prefix
+ require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
+ ;;
+ tcmalloc)
+ require_pkg_config libtcmalloc gperftools/tcmalloc.h tc_malloc
+ malloc_prefix=tc_
+ ;;
+esac
+
check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
check_func ${malloc_prefix}memalign && enable memalign
check_func ${malloc_prefix}posix_memalign && enable posix_memalign
enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
{ check_lib2 "dlfcn.h" dlopen -ldl; } ||
die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
+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 gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
check_lib "${gsm_hdr}" gsm_create -lgsm && break;
done || die "ERROR: libgsm not found"; }
enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
-enabled libkvazaar && require_pkg_config kvazaar kvazaar.h kvz_api_get
+enabled libkvazaar && require_pkg_config "kvazaar >= 0.7.0" kvazaar.h kvz_api_get
enabled libmfx && require_pkg_config libmfx "mfx/mfxvideo.h" MFXInit
enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
enabled libpulse && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new
enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
+enabled librubberband && require_pkg_config "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new
enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_buffer
enabled libsmbclient && { use_pkg_config smbclient libsmbclient.h smbc_init ||
echo
echo "Enabled programs:"
-print_enabled '' $PROGRAM_LIST | print_3_columns
+print_enabled '' $PROGRAM_LIST | print_in_columns
echo
echo "External libraries:"
-print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
+print_enabled '' $EXTERNAL_LIBRARY_LIST | print_in_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 | print_3_columns
+ print_enabled '_*' $list | print_in_columns
echo
done
mkdir -p doc
mkdir -p tests
mkdir -p tests/api
-echo "@c auto-generated by configure" > doc/config.texi
+echo "@c auto-generated by configure - do not modify! " > doc/config.texi
print_config ARCH_ "$config_files" $ARCH_LIST
print_config HAVE_ "$config_files" $HAVE_LIST