echo " --disable-logging do not log configure debug information"
echo " --prefix=PREFIX install in PREFIX [$prefix]"
echo " --bindir=DIR install binaries in DIR [PREFIX/bin]"
+ echo " --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]"
echo " --libdir=DIR install libs in DIR [PREFIX/lib]"
echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]"
echo " --incdir=DIR install includes in DIR [PREFIX/include]"
echo " --disable-ipv6 disable IPv6 support [no]"
echo " --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no]"
echo " --enable-gray enable full grayscale support (slower color)"
- echo " --disable-fastdiv disable table-based division"
+ echo " --enable-fastdiv enable table-based division"
echo " --enable-small optimize for size instead of speed"
echo " --disable-aandct disable AAN DCT code"
echo " --disable-fft disable FFT code"
echo " --disable-golomb disable Golomb code"
echo " --disable-mdct disable MDCT code"
+ echo " --disable-rdft disable RDFT code"
echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
echo " --enable-beos-netserver enable BeOS netserver"
echo " --enable-libmp3lame enable MP3 encoding via libmp3lame [no]"
echo " --enable-libnut enable NUT (de)muxing via libnut,"
echo " native (de)muxer exists [no]"
+ echo " --enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]"
echo " --enable-libschroedinger enable Dirac support via libschroedinger [no]"
echo " --enable-libspeex enable Speex decoding via libspeex [no]"
echo " --enable-libtheora enable Theora encoding via libtheora [no]"
echo " --enable-powerpc-perf enable performance report on PPC"
echo " (requires enabling PMC)"
echo " --disable-altivec disable AltiVec optimizations"
+ echo " --disable-amd3dnow disable 3DNow! optimizations"
echo " --disable-mmx disable MMX optimizations"
echo " --disable-mmx2 disable MMX2 optimizations"
echo " --disable-sse disable SSE optimizations"
echo " --disable-mmi disable MMI optimizations"
echo " --disable-neon disable neon optimizations"
echo " --disable-vis disable VIS optimizations"
+ echo " --disable-yasm disable use of yasm assembler"
echo
echo "Developer options (useful when working on FFmpeg itself):"
echo " --disable-debug disable debugging symbols"
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
+c_escape(){
+ echo "$*" | sed 's/["\\]/\\\0/g'
+}
+
set_all(){
value=$1
shift
libgsm
libmp3lame
libnut
+ libopenjpeg
libschroedinger
libspeex
libtheora
nonfree
postproc
powerpc_perf
+ rdft
shared
small
static
ARCH_EXT_LIST='
altivec
+ amd3dnow
armv5te
armv6
armv6t2
HAVE_LIST="
$ARCH_EXT_LIST
$THREADS_LIST
+ alsa_asoundlib_h
altivec_h
arpa_inet_h
bswap
sys_select_h
sys_soundcard_h
sys_videoio_h
+ ten_operands
termios_h
threads
truncf
logging
optimizations
stripping
+ yasm
"
PATHS_LIST='
bindir
+ datadir
incdir
libdir
mandir
# architecture extensions
altivec_deps="ppc"
+amd3dnow_deps="mmx"
armv5te_deps="arm"
armv6_deps="arm"
armv6t2_deps="arm"
nellymoser_encoder_select="fft mdct"
png_decoder_select="zlib"
png_encoder_select="zlib"
-qdm2_decoder_select="fft mdct"
+qdm2_decoder_select="fft mdct rdft"
rv10_encoder_select="aandct"
rv20_encoder_select="aandct"
shorten_decoder_select="golomb"
libgsm_ms_decoder_deps="libgsm"
libgsm_ms_encoder_deps="libgsm"
libmp3lame_encoder_deps="libmp3lame"
+libopenjpeg_decoder_deps="libopenjpeg"
libschroedinger_decoder_deps="libschroedinger"
libschroedinger_encoder_deps="libschroedinger"
libspeex_decoder_deps="libspeex"
# demuxers / muxers
ac3_demuxer_deps="ac3_parser"
+alsa_demuxer_deps="alsa_asoundlib_h snd_pcm_htimestamp"
+alsa_demuxer_extralibs="-lasound"
+alsa_muxer_deps="alsa_asoundlib_h"
+alsa_muxer_extralibs="-lasound"
audio_beos_demuxer_deps="audio_beos"
audio_beos_demuxer_extralibs="-lmedia -lbe"
audio_beos_muxer_deps="audio_beos"
# installation paths
prefix_default="/usr/local"
bindir_default='${prefix}/bin'
+datadir_default='${prefix}/share/ffmpeg'
incdir_default='${prefix}/include'
libdir_default='${prefix}/lib'
mandir_default='${prefix}/share/man'
enabled cross_compile || host_cc_default=$cc
set_default host_cc
+case $target_os in
+ mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) EXESUF=.exe ;;
+esac
+
# set temporary file name
: ${TMPDIR:=$TEMPDIR}
: ${TMPDIR:=$TMP}
TMPS="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPSH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
+# make sure we can execute files in $TMPDIR
+cat > $TMPSH 2>> $logfile <<EOF
+#! /bin/sh
+EOF
+chmod +x $TMPSH >> $logfile 2>&1
+if ! $TMPSH >> $logfile 2>&1; then
+ cat <<EOF
+Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
+variable to another directory and make sure that it is not mounted noexec.
+EOF
+ die "Sanity test failed."
+fi
+rm $TMPSH
+
+# compiler sanity check
+check_exec <<EOF
+int main(void){ return 0; }
+EOF
+if test "$?" != 0; then
+ echo "$cc is unable to create an executable file."
+ if test -z "$cross_prefix" && ! enabled cross_compile ; then
+ echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
+ echo "Only do this if you know what cross compiling means."
+ fi
+ die "C compiler test failed."
+fi
+
check_cflags -std=c99
case "$arch" in
disable ffserver
SLIBPREF=""
SLIBSUF=".dll"
- EXESUF=".exe"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
SLIB_EXTRA_CMD='-lib /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
objformat="win32"
enable dos_paths
- check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 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 >= 13)" ||
- die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.13 or later."; }
+ if ! enabled x86_64; then
+ check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 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 >= 13)" ||
+ die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.13 or later."; }
+ fi
;;
cygwin*)
target_os=cygwin
VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
fi
- EXESUF=".exe"
SLIBPREF="cyg"
SLIBSUF=".dll"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
disable ffplay ffserver vhook
disable $INDEV_LIST $OUTDEV_LIST
network_extralibs="-lsocket"
- EXESUF=".exe"
objformat="coff"
enable dos_paths
;;
os/2*)
strip="lxlite"
ln_s="cp -f"
- EXESUF=".exe"
FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
FFSERVERLDFLAGS=""
;;
*)
- target_os="${target_os}-UNKNOWN"
+ die "Unknown OS '$target_os'."
;;
esac
esac
fi
-# make sure we can execute files in $TMPDIR
-cat > $TMPSH 2>> $logfile <<EOF
-#! /bin/sh
-EOF
-chmod +x $TMPSH >> $logfile 2>&1
-if ! $TMPSH >> $logfile 2>&1; then
- cat <<EOF
-Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
-variable to another directory and make sure that it is not mounted noexec.
-EOF
- die "Sanity test failed."
-fi
-rm $TMPSH
-
-# compiler sanity check
-check_exec <<EOF
-int main(void){ return 0; }
-EOF
-if test "$?" != 0; then
- echo "$cc is unable to create an executable file."
- if test -z "$cross_prefix" && ! enabled cross_compile ; then
- echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
- echo "Only do this if you know what cross compiling means."
- fi
- die "C compiler test failed."
-fi
-
check_cc <<EOF || die "Symbol mangling check failed."
int ff_extern;
EOF
# check wether EBX is available on x86
check_asm ebx_available '"":::"%ebx"'
+ # check whether more than 10 operands are supported
+ check_cc <<EOF && enable ten_operands
+int main(void) {
+ int x=0;
+ __asm__ volatile(
+ ""
+ :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
+ );
+ return 0;
+}
+EOF
+
# check whether binutils is new enough to compile SSSE3/MMX2
enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"'
macho64) append YASMFLAGS "-DPIC -DPREFIX" ;;
*) append YASMFLAGS "-DPREFIX" ;;
esac
- check_yasm "pabsw xmm0, xmm0" && enable yasm
+ disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
fi
# check for assembler specific support
enabled libgsm && require libgsm gsm.h gsm_create -lgsm
enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm
enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
+enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
check_header sys/soundcard.h
check_header soundcard.h
+check_header alsa/asoundlib.h &&
+check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
+
# deal with the X11 frame grabber
enabled x11grab &&
check_header X11/Xlib.h &&
echo "yasm ${yasm-no}"
echo "MMX enabled ${mmx-no}"
echo "MMX2 enabled ${mmx2-no}"
+ echo "3DNow! enabled ${amd3dnow-no}"
echo "SSE enabled ${sse-no}"
echo "SSSE3 enabled ${ssse3-no}"
echo "CMOV enabled ${cmov-no}"
echo "CMOV is fast ${fast_cmov-no}"
echo "EBX available ${ebx_available-no}"
echo "EBP available ${ebp_available-no}"
+ echo "10 operands supported ${ten_operands-no}"
fi
if enabled arm; then
echo "ARMv5TE enabled ${armv5te-no}"
echo "libgsm enabled ${libgsm-no}"
echo "libmp3lame enabled ${libmp3lame-no}"
echo "libnut enabled ${libnut-no}"
+echo "libopenjpeg enabled ${libopenjpeg-no}"
echo "libschroedinger enabled ${libschroedinger-no}"
echo "libspeex enabled ${libspeex-no}"
echo "libtheora enabled ${libtheora-no}"
echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
echo "#define FFMPEG_CONFIG_H" >> $TMPH
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
+echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH
echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak
echo "prefix=$prefix" >> config.mak
echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
+echo "DATADIR=\$(DESTDIR)$datadir" >> config.mak
echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
echo "CC=$cc" >> config.mak
echo "YASM=$yasmexe" >> config.mak