X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=dabb39826d1f4186f90ebb28c2b1c23ee24e9185;hb=ce09d560b7e42a9ef60bbb85c6ba1e1ffc2aa16f;hp=1911f837ba762adfe3f1c5ab5da55c704d833b97;hpb=460a4fb99d1e864b72f28c534aaa8062ce84e6b6;p=ffmpeg diff --git a/configure b/configure index 1911f837ba7..dabb39826d1 100755 --- a/configure +++ b/configure @@ -8,7 +8,8 @@ # # Prevent locale nonsense from breaking basic text processing. -export LC_ALL=C +LC_ALL=C +export LC_ALL # make sure we are running under a compatible shell # try to make this part work with most shells @@ -87,8 +88,6 @@ show_help(){ echo echo "External library support:" echo " --enable-mlib use Sun medialib [default=no]" - echo " --enable-liba52 enable GPLed liba52 support [default=no]" - echo " --enable-liba52bin open liba52.so.0 at runtime [default=no]" echo " --enable-avisynth allow reading AVISynth script files [default=no]" echo " --enable-libamr-nb enable libamr-nb floating point audio codec" echo " --enable-libamr-wb enable libamr-wb floating point audio codec" @@ -103,6 +102,7 @@ show_help(){ echo " --enable-libnut enable NUT (de)muxing via libnut," echo " native demuxer exists [default=no]" echo " --enable-libschroedinger enable Dirac support via libschroedinger [default=no]" + echo " --enable-libspeex enable Speex decoding via libspeex [default=no]" echo " --enable-libtheora enable Theora encoding via libtheora [default=no]" echo " --enable-libvorbis enable Vorbis encoding via libvorbis," echo " native implementation exists [default=no]" @@ -170,6 +170,9 @@ show_help(){ echo " --disable-protocol=NAME disables protocol NAME" echo " --disable-protocols disables all protocols" echo " --disable-devices disables all devices" + echo " --enable-filter=NAME enables filter NAME" + echo " --disable-filter=NAME disables filter NAME" + echo " --disable-filters disables all filters" echo " --list-decoders show all available decoders" echo " --list-encoders show all available encoders" echo " --list-muxers show all available muxers" @@ -179,6 +182,7 @@ show_help(){ echo " --list-bsfs show all available bitstream filters" echo " --list-indevs show all available input devices" echo " --list-outdevs show all available output devices" + echo " --list-filters show all available filters" echo echo "Developer options (useful when working on FFmpeg itself):" echo " --disable-debug disable debugging symbols" @@ -189,7 +193,7 @@ show_help(){ echo " --disable-stripping disable stripping of executables and shared libraries" echo "" echo "NOTE: Object files are built at the place where configure is launched." - exit 1 + exit 0 } log(){ @@ -246,6 +250,14 @@ set_all(){ done } +set_weak(){ + value=$1 + shift + for var; do + eval : \${$var:=$value} + done +} + pushvar(){ for var in $*; do eval level=\${${var}_level:=0} @@ -273,6 +285,37 @@ disable(){ set_all no $* } +enable_weak(){ + set_weak yes $* +} + +disable_weak(){ + set_weak no $* +} + +do_enable_deep(){ + for var; do + enabled $var && continue + eval sel="\$${var}_select" + eval sgs="\$${var}_suggest" + pushvar var sgs + enable_deep $sel + popvar sgs + enable_deep_weak $sgs + popvar var + done +} + +enable_deep(){ + do_enable_deep $* + enable $* +} + +enable_deep_weak(){ + do_enable_deep $* + enable_weak $* +} + enabled(){ test "${1#!}" = "$1" && op== || op=!= eval test "x\$${1#!}" $op "xyes" @@ -305,6 +348,7 @@ disabled_any(){ for opt; do disabled $opt && return 0 done + return 1 } set_default(){ @@ -331,17 +375,22 @@ check_deps(){ eval dep_all="\$${cfg}_deps" eval dep_any="\$${cfg}_deps_any" + eval dep_sel="\$${cfg}_select" + eval dep_sgs="\$${cfg}_suggest" - pushvar cfg dep_all dep_any - check_deps $dep_all $dep_any - popvar cfg dep_all dep_any + pushvar cfg dep_all dep_any dep_sel dep_sgs + check_deps $dep_all $dep_any $dep_sel $dep_sgs + popvar cfg dep_all dep_any dep_sel dep_sgs - enabled_all $dep_all || disable $cfg - enabled_any $dep_any || disable $cfg + enabled_all $dep_all || disable $cfg + enabled_any $dep_any || disable $cfg + disabled_any $dep_sel && disable $cfg if enabled $cfg; then eval dep_extralibs="\$${cfg}_extralibs" test -n "$dep_extralibs" && add_extralibs $dep_extralibs + enable_deep $dep_sel + enable_deep_weak $dep_sgs fi disable ${cfg}_checking @@ -445,7 +494,7 @@ check_asm(){ asm="$2" shift 2 check_cc "$@" < +#if !($condition) +#error "unsatisfied condition: $condition" +#endif +EOF +} + check_lib(){ log check_lib "$@" header="$1" @@ -661,13 +722,13 @@ CONFIG_LIST=" ffmpeg ffplay ffserver + fft + golomb gpl gprof gray hardcoded_tables ipv6 - liba52 - liba52bin libamr_nb libamr_wb libdc1394 @@ -679,10 +740,12 @@ CONFIG_LIST=" libmp3lame libnut libschroedinger + libspeex libtheora libvorbis libx264 libxvid + mdct memalign_hack mlib mpegaudio_hp @@ -742,7 +805,6 @@ HAVE_LIST=" altivec_h arpa_inet_h bswap - byteswap_h closesocket cmov conio_h @@ -754,6 +816,7 @@ HAVE_LIST=" dev_video_bktr_ioctl_bt848_h dlfcn_h dlopen + dos_paths ebp_available ebx_available fast_64bit @@ -797,6 +860,11 @@ HAVE_LIST=" yasm " +# options emitted with CONFIG_ prefix but not available on command line +CONFIG_EXTRA=" + fft_mmx +" + CMDLINE_SELECT=" $ARCH_EXT_LIST $CONFIG_LIST @@ -848,25 +916,59 @@ neon_deps="armv4l" ssse3_deps="x86" vis_deps="sparc" -# system headers and functions -byteswap_h_deps="!armv4l" +# common features +fft_suggest="fft_mmx" +fft_mmx_deps="mmx yasm" # decoders / encoders -ac3_decoder_deps="gpl !liba52" -dxa_decoder_deps="zlib" +aac_decoder_select="fft mdct" +ac3_decoder_deps="gpl" +ac3_decoder_select="fft mdct" +atrac3_decoder_select="fft mdct" +cavs_decoder_select="golomb" +cook_decoder_select="fft mdct" +cscd_decoder_suggest="zlib" +dca_decoder_select="fft mdct" +dxa_decoder_select="zlib" eac3_decoder_deps="gpl" -flashsv_decoder_deps="zlib" -flashsv_encoder_deps="zlib" -mlp_decoder_deps="mlp_parser" +eac3_decoder_select="fft mdct" +ffv1_decoder_select="golomb" +flac_decoder_select="golomb" +flac_encoder_select="golomb" +flashsv_decoder_select="zlib" +flashsv_encoder_select="zlib" +h264_decoder_select="golomb" +imc_decoder_select="fft mdct" +jpegls_decoder_select="golomb" +jpegls_encoder_select="golomb" +loco_decoder_select="golomb" mpeg_xvmc_decoder_deps="xvmc" -png_decoder_deps="zlib" -png_encoder_deps="zlib" -zmbv_decoder_deps="zlib" -zmbv_encoder_deps="zlib" +nellymoser_decoder_select="fft mdct" +nellymoser_encoder_select="fft mdct" +png_decoder_select="zlib" +png_encoder_select="zlib" +qdm2_decoder_select="fft mdct" +shorten_decoder_select="golomb" +sonic_decoder_select="golomb" +sonic_encoder_select="golomb" +sonic_ls_encoder_select="golomb" +svq3_decoder_select="golomb" +svq3_decoder_suggest="zlib" +tiff_decoder_suggest="zlib" +tiff_encoder_suggest="zlib" +tscc_decoder_select="zlib" +vorbis_decoder_select="fft mdct" +vorbis_encoder_select="fft mdct" +wmav1_decoder_select="fft mdct" +wmav1_encoder_select="fft mdct" +wmav2_decoder_select="fft mdct" +wmav2_encoder_select="fft mdct" +zlib_decoder_select="zlib" +zlib_encoder_select="zlib" +zmbv_decoder_select="zlib" +zmbv_encoder_select="zlib" # external libraries -liba52_decoder_deps="liba52" -liba52bin_decoder_extralibs='$ldl' libamr_nb_decoder_deps="libamr_nb" libamr_nb_encoder_deps="libamr_nb" libamr_wb_decoder_deps="libamr_wb" @@ -883,6 +985,7 @@ libgsm_ms_encoder_deps="libgsm" libmp3lame_encoder_deps="libmp3lame" libschroedinger_decoder_deps="libschroedinger" libschroedinger_encoder_deps="libschroedinger" +libspeex_decoder_deps="libspeex" libtheora_encoder_deps="libtheora" libvorbis_encoder_deps="libvorbis" libx264_encoder_deps="libx264" @@ -902,6 +1005,8 @@ dv1394_demuxer_deps="dv1394 dv_demuxer" libdc1394_demuxer_deps="libdc1394" libnut_demuxer_deps="libnut" libnut_muxer_deps="libnut" +matroska_demuxer_suggest="zlib bzlib" +mov_demuxer_suggest="zlib" mp3_demuxer_deps="mpegaudio_parser" oss_demuxer_deps_any="soundcard_h sys_soundcard_h" oss_muxer_deps_any="soundcard_h sys_soundcard_h" @@ -945,7 +1050,7 @@ mandir_default='${prefix}/share/man' shlibdir_default="$libdir_default" # toolchain -cc="gcc" +cc_default="gcc" yasmexe="yasm" ar="ar" nm="nm" @@ -962,10 +1067,6 @@ cpu="generic" # OS target_os=$(tolower $(uname -s)) -# libraries -enable bzlib -enable zlib - # configurable options enable debug enable ffmpeg @@ -996,8 +1097,9 @@ SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' -# gcc stupidly only outputs the basename of targets with -MM -DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed -e "/^\#.*/d" -e "1s,^,$(@D)/," -e "s,\\([[:space:]]\\)\\(version\\.h\\),\\1\$$(BUILD_ROOT_REL)/\\2,"' +# gcc stupidly only outputs the basename of targets with -MM, but we need the +# full relative path for objects in subdirectories for non-recursive Make. +DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," -e "s,\\([[:space:]]\\)\\(version\\.h\\),\\1\$$(BUILD_ROOT_REL)/\\2,"' # find source path source_path="`dirname \"$0\"`" @@ -1095,7 +1197,7 @@ for opt do --help|-h) show_help ;; *) - optname="${opt%=*}" + optname="${opt%%=*}" optname="${optname#--}" optname=$(echo "$optname" | sed 's/-/_/g') is_in $optname $CMDLINE_SET || die_unknown $opt @@ -1109,13 +1211,15 @@ disabled logging && logfile=/dev/null echo "# $0 $@" > $logfile set >> $logfile -cc="${cross_prefix}${cc}" +cc_default="${cross_prefix}${cc_default}" yasmexe="${cross_prefix}${yasmexe}" ar="${cross_prefix}${ar}" nm="${cross_prefix}${nm}" ranlib="${cross_prefix}${ranlib}" strip="${cross_prefix}${strip}" +set_default cc + # set temporary file name if test ! -z "$TMPDIR" ; then TMPDIR1="${TMPDIR}" @@ -1132,7 +1236,6 @@ TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o" TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S" TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh" -check_cflags -fasm check_cflags -std=c99 case "$arch" in @@ -1142,6 +1245,8 @@ case "$arch" in ;; x86_64|amd64) arch="x86_32" + enable cmov + enable fast_cmov enable fast_unaligned check_cc < 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || + die "ERROR: MinGW runtime version must be >= 3.15." + enabled_any avisynth vfwcap_demuxer && + { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 12)" || + die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.12 or later."; } ;; cygwin*) target_os=cygwin @@ -1314,6 +1427,7 @@ case $target_os in SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' SHFLAGS='-shared -Wl,--enable-auto-image-base' objformat="win32" + enable dos_paths ;; *-dos|freedos|opendos) disable ffplay ffserver vhook @@ -1321,6 +1435,7 @@ case $target_os in network_extralibs="-lsocket" EXESUF=".exe" objformat="win32" + enable dos_paths ;; linux) enable dv1394 @@ -1352,6 +1467,7 @@ case $target_os in SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"' SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib' disable vhook + enable dos_paths ;; interix) disable vhook @@ -1407,7 +1523,6 @@ if ! enabled gpl; then enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified." } die_gpl_disabled "The Postprocessing code" postproc - die_gpl_disabled "liba52" liba52 die_gpl_disabled "libx264" libx264 die_gpl_disabled "libxvidcore" libxvid die_gpl_disabled "FAAD2" libfaad2 @@ -1497,7 +1612,14 @@ if test $cpu != "generic"; then sparc64) add_cflags "-mcpu=v9" ;; - arm*|cortex*) + arm11*|cortex*) + add_cflags "-mcpu=$cpu" + enable fast_unaligned + ;; + armv*) + add_cflags "-march=$cpu" + ;; + arm*) add_cflags "-mcpu=$cpu" ;; *) @@ -1549,7 +1671,7 @@ if enabled x86; then # base pointer is cleared in the inline assembly code. check_exec_crash <= 65" || + die "ERROR: libx264 version must be >= 0.65."; } +enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib # libdc1394 check @@ -1917,7 +2033,7 @@ VHOOKCFLAGS="-fPIC" # Find out if the .align argument is a power of two or not. if test $asmalign_pot = "unknown"; then disable asmalign_pot - echo 'asm (".align 3");' | check_cc && enable asmalign_pot + echo '__asm__ (".align 3");' | check_cc && enable asmalign_pot fi enabled_any $DECODER_LIST && enable decoders @@ -1933,6 +2049,7 @@ enabled_any $PROTOCOL_LIST && enable protocols enabled_any $THREADS_LIST && enable threads check_deps $CONFIG_LIST \ + $CONFIG_EXTRA \ $HAVE_LIST \ $DECODER_LIST \ $ENCODER_LIST \ @@ -2010,8 +2127,6 @@ if enabled sdl_too_old; then fi echo "Sun medialib support ${mlib-no}" echo "AVISynth enabled ${avisynth-no}" -echo "liba52 support ${liba52-no}" -echo "liba52 dlopened ${liba52bin-no}" echo "libamr-nb support ${libamr_nb-no}" echo "libamr-wb support ${libamr_wb-no}" echo "libdc1394 support ${libdc1394-no}" @@ -2023,6 +2138,7 @@ echo "libgsm enabled ${libgsm-no}" echo "libmp3lame enabled ${libmp3lame-no}" echo "libnut enabled ${libnut-no}" echo "libschroedinger enabled ${libschroedinger-no}" +echo "libspeex enabled ${libspeex-no}" echo "libtheora enabled ${libtheora-no}" echo "libvorbis enabled ${libvorbis-no}" echo "libx264 enabled ${libx264-no}" @@ -2143,6 +2259,7 @@ echo "EXTRALIBS=$extralibs" >> config.mak print_config ARCH_ $TMPH config.mak $ARCH_LIST print_config HAVE_ $TMPH config.mak $HAVE_LIST print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ + $CONFIG_EXTRA \ $DECODER_LIST \ $ENCODER_LIST \ $PARSER_LIST \