echo " --disable-debug disable debugging symbols"
echo " --disable-mpegaudio-hp faster (but less accurate)"
echo " MPEG audio decoding [default=no]"
+ echo " --enable-gray enable full grayscale support (slower color)"
echo " --disable-ffmpeg disable ffmpeg build"
echo " --disable-ffserver disable ffserver build"
echo " --disable-ffplay disable ffplay build"
echo " --enable-protocol=NAME enables protocol NAME"
echo " --disable-protocol=NAME disables protocol NAME"
echo " --disable-protocols disables all protocols"
+ echo " --list-decoders show all available decoders"
+ echo " --list-encoders show all available encoders"
+ echo " --list-muxers show all available muxers"
+ echo " --list-demuxers show all available demuxers"
+ echo " --list-parsers show all available parsers"
+ echo " --list-protocols show all available protocols"
+ echo " --list-bsfs show all available bitstream filters"
echo
echo "Developer options (useful when working on FFmpeg itself):"
echo " --enable-gprof enable profiling with gprof [$gprof]"
}
CONFIG_LIST='
- encoders
- decoders
- parsers
- bsfs
- muxers
- demuxers
audio_beos
audio_oss
avisynth
beos_netserver
bktr
+ bsfs
dc1394
+ decoders
+ demuxers
dv1394
+ encoders
ffmpeg
ffplay
ffserver
gpl
gprof
+ gray
ipv6
liba52
liba52bin
libxvid
memalign_hack
mpegaudio_hp
+ muxers
network
+ parsers
powerpc_perf
pp
protocols
altivec_h
arpa_inet_h
byteswap_h
+ closesocket
cmov
conio_h
dcbzl
sys_soundcard_h
termios_h
threads
+ winsock2_h
"
CMDLINE_SELECT="
ssse3_deps="x86"
# decoders / encoders
+ac3_decoder_deps="gpl"
dxa_decoder_deps="zlib"
flashsv_decoder_deps="zlib"
flashsv_encoder_deps="zlib"
# installation paths
PREFIX="/usr/local"
-libdir='${PREFIX}/lib'
+libdir='$(PREFIX)/lib'
shlibdir="$libdir"
-incdir='${PREFIX}/include/ffmpeg'
-mandir='${PREFIX}/man'
-bindir='${PREFIX}/bin'
+incdir='$(PREFIX)/include/ffmpeg'
+mandir='$(PREFIX)/man'
+bindir='$(PREFIX)/bin'
# toolchain
-cross_prefix=""
-cross_compile="no"
cc="gcc"
ar="ar"
ranlib="ranlib"
ffmpeg="yes"
ffplay="yes"
ffserver="yes"
-gpl="no"
ipv6="yes"
-shared="no"
static="yes"
-memalign_hack="no"
mpegaudio_hp="yes"
network="yes"
optimize="yes"
# build settings
SHFLAGS='-shared -Wl,-soname,$@'
VHOOKSHFLAGS='$(SHFLAGS)'
-LIBOBJFLAGS=""
-FFLDFLAGS=
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
FFSERVERLDFLAGS=-Wl,-E
LDCONFIG="ldconfig"
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
-EXESUF=""
-BUILDSUF=""
-LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
+LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIB)"'
# find source path
source_path="`dirname \"$0\"`"
exit 1
}
+show_list() {
+ for part in $*; do
+ echo $part | sed 's/_[^_]*$//'
+ done | sort
+ exit 0
+}
+
for opt do
optval="${opt#*=}"
case "$opt" in
echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
$action $option
;;
+ --list-*)
+ NAME="${opt#--list-}"
+ NAME=$(toupper ${NAME%s})
+ eval show_list \$${NAME}_LIST
+ ;;
--help) show_help
;;
*)
fi ;;
sunos)
dv1394="no"
- FFLDFLAGS=""
FFSERVERLDFLAGS=""
SHFLAGS="-shared -Wl,-h,\$@"
add_extralibs "-lsocket -lnsl"
dv1394="no"
need_memalign="no"
LIBOBJFLAGS="\$(PIC)"
- LDCONFIG="ldconfig -m \$(shlibdir)"
+ LDCONFIG="ldconfig -m \$(SHLIBDIR)"
SHFLAGS='-shared'
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
SLIBNAME_WITH_VERSION='$(SLIBNAME)'
darwin)
dv1394="no"
need_memalign="no"
- SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
- VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
+ SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(SHLIBDIR)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
+ VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$@'
osextralibs=""
strip="strip -x"
FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
- SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
+ SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(SHLIBDIR)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base"
enabled network && add_extralibs -lws2_32
;;
strip="${cross_prefix}${strip}"
# we need to build at least one lib type
-if disabled_all static shared; then
+if ! enabled_any static shared; then
cat <<EOF
At least one library type must be built.
Specify --enable-static to build the static libraries or --enable-shared to
exit 1;
fi
-if disabled libogg; then
+if disabled static; then
+ LIB=""
+fi
+
+if ! enabled libogg; then
enabled libtheora && die "libogg must be enabled to enable libtheora."
enabled libvorbis && die "libogg must be enabled to enable libvorbis."
fi
fi
-if disabled gpl ; then
+if ! enabled gpl; then
die_gpl_disabled(){
name=$1
shift
EOF
if test "$?" != 0; then
echo "$cc is unable to create an executable file."
- if test -z "$cross_prefix" && disabled cross_compile ; then
+ if test -z "$cross_prefix" && ! enabled cross_compile ; then
echo "If $cc is a cross-compiler, use the --cross-compile option."
echo "Only do this if you know what cross compiling means."
fi
# ---
# big/little-endian test
-if disabled cross_compile; then
+if ! enabled cross_compile; then
check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
#include <inttypes.h>
int main(int argc, char ** argv){
check_header malloc.h
check_func memalign
-if disabled_all memalign memalign_hack && enabled need_memalign ; then
+if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
fi
check_header conio.h
check_header arpa/inet.h
+check_header winsock2.h
check_func inet_aton
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
+# disable the native AC-3 decoder if liba52 is enabled
+enabled liba52 && disable ac3_decoder
+
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
check_cc <<EOF && _restrict=$restrict_keyword && break
check_func2 windows.h GetProcessTimes
check_func fork
+check_func closesocket
test "$vhook" = "default" && vhook="$dlopen"
echo "x264 enabled ${libx264-no}"
echo "XviD enabled ${libxvid-no}"
echo "zlib enabled ${zlib-no}"
-if disabled gpl; then
+if ! enabled gpl; then
echo "License: LGPL"
else
echo "License: GPL"
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
echo "PREFIX=$PREFIX" >> config.mak
-echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
-echo "libdir=\$(DESTDIR)$libdir" >> config.mak
-echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
-echo "incdir=\$(DESTDIR)$incdir" >> config.mak
-echo "bindir=\$(DESTDIR)$bindir" >> config.mak
-echo "mandir=\$(DESTDIR)$mandir" >> config.mak
+echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak
+echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
+echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
+echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
+echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
+echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
echo "MAKE=$make" >> config.mak
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
echo "BUILDSUF=$BUILDSUF" >> config.mak
echo "LIBPREF=$LIBPREF" >> config.mak
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
-if enabled static; then
- echo "LIB=$LIB" >> config.mak
-else # Some Make complain if this variable does not exist.
- echo "LIB=" >> config.mak
-fi
+echo "LIB=$LIB" >> config.mak
echo "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak