echo " --enable-faadbin build FAAD support with runtime linking [default=no]"
echo " --enable-libgsm enable GSM support via libgsm [default=no]"
echo " --enable-mp3lame enable MP3 encoding via libmp3lame [default=no]"
- echo " --enable-libnut enable NUT support via libnut [default=no]"
- echo " --enable-libogg enable Ogg support via libogg [default=no]"
- echo " --enable-libtheora enable Theora support via libtheora [default=no]"
- echo " --enable-vorbis enable Vorbis support via libvorbis [default=no]"
+ echo " --enable-libnut enable NUT (de)muxing via libnut,"
+ echo " native demuxer exists [default=no]"
+ echo " --enable-libogg enable Ogg muxing via libogg [default=no]"
+ echo " --enable-libtheora enable Theora encoding via libtheora [default=no]"
+ echo " --enable-vorbis enable Vorbis en/decoding via libvorbis,"
+ echo " native implementations exist [default=no]"
echo " --enable-x264 enable H.264 encoding via x264 [default=no]"
- echo " --enable-xvid enable Xvid encoding via xvidcore [default=no]"
+ echo " --enable-xvid enable Xvid encoding via xvidcore,"
+ echo " native MPEG-4/Xvid encoder exists [default=no]"
echo " --enable-amr_nb enable amr_nb float audio codec"
echo " --enable-amr_nb-fixed use fixed point for amr-nb codec"
echo " --enable-amr_wb enable amr_wb float audio codec"
done
}
+pushvar(){
+ for var in $*; do
+ eval level=\${${var}_level:=0}
+ eval ${var}_${level}="\$$var"
+ eval ${var}_level=$(($level+1))
+ done
+}
+
+popvar(){
+ for var in $*; do
+ eval level=\${${var}_level:-0}
+ test $level = 0 && continue
+ eval level=$(($level-1))
+ eval $var="\${${var}_${level}}"
+ eval ${var}_level=$level
+ eval unset ${var}_${level}
+ done
+}
+
enable(){
set_all yes $*
}
eval test "x\$$1" = "xyes"
}
+disabled(){
+ eval test "x\$$1" = "xno"
+}
+
enabled_all(){
for opt; do
enabled $opt || return 1
done
}
+disabled_all(){
+ for opt; do
+ disabled $opt || return 1
+ done
+}
+
enabled_any(){
for opt; do
enabled $opt && return 0
done
}
+disabled_any(){
+ for opt; do
+ disabled $opt && return 0
+ done
+}
+
check_deps(){
for cfg; do
+ enabled ${cfg}_checking && die "Circular dependency for $cfg."
+ disabled ${cfg}_checking && continue
+ enable ${cfg}_checking
+
eval dep_all="\$${cfg}_deps"
eval dep_any="\$${cfg}_deps_any"
+
+ pushvar cfg dep_all dep_any
+ check_deps $dep_all $dep_any
+ popvar cfg dep_all dep_any
+
enabled_all $dep_all || disable $cfg
enabled_any $dep_any || disable $cfg
+
+ disable ${cfg}_checking
done
}
}
restore_flags(){
+ flags_saved || return
CFLAGS="$SAVE_CFLAGS"
LDFLAGS="$SAVE_LDFLAGS"
extralibs="$SAVE_extralibs"
pthreads
sdl
sdl_video_size
+ soundcard_h
+ sys_soundcard_h
threads
w32threads
'
dc1394_demuxer_deps="dc1394"
dv1394_demuxer_deps="dv1394"
gxf_muxer_deps="gpl"
-nut_muxer_deps="libnut"
+libnut_demuxer_deps="libnut"
+libnut_muxer_deps="libnut"
ogg_muxer_deps="libogg"
redir_demuxer_deps="network"
rtp_muxer_deps="network"
video_grab_device_demuxer_deps_any="video4linux bktr"
x11_grab_device_demuxer_deps="x11grab"
+ffplay_deps="sdl"
+ffserver_deps="network protocols muxers"
+
# set temporary file name
if test ! -z "$TMPDIR" ; then
TMPDIR1="${TMPDIR}"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
# default parameters
+
logging="yes"
logfile="config.err"
+
+# installation paths
PREFIX="/usr/local"
libdir='${PREFIX}/lib'
shlibdir="$libdir"
incdir='${PREFIX}/include/ffmpeg'
mandir='${PREFIX}/man'
bindir='${PREFIX}/bin'
+
+# toolchain
cross_prefix=""
cross_compile="no"
cc="gcc"
ranlib="ranlib"
make="make"
strip="strip"
+asmalign_pot="unknown"
+
+# machine
arch=`uname -m`
cpu="generic"
powerpc_perf="no"
altivec="default"
dcbzl="no"
mmi="default"
+bigendian="no"
+
case "$arch" in
i386|i486|i586|i686|i86pc|BePC)
arch="x86_32"
arch="unknown"
;;
esac
-gprof="no"
-video4linux="yes"
-video4linux2="yes"
-bktr="no"
-audio_oss="yes"
+
+# OS
+beos_netserver="no"
+mingw32="no"
+os2="no"
+wince="no"
+
+# non-library system interfaces
audio_beos="no"
-x11grab="no"
+audio_oss="yes"
+bktr="yes"
dv1394="yes"
+video4linux2="yes"
+video4linux="yes"
+
+# libraries
+amr_if2="no"
+amr_nb="no"
+amr_nb_fixed="no"
+amr_wb="no"
+avisynth="no"
dc1394="no"
-network="yes"
-ipv6="yes"
-zlib="yes"
+dlfcn_h="no"
+dlopen="no"
liba52="no"
liba52bin="no"
libdts="no"
libfaac="no"
+libfaad2="no"
libfaad="no"
libfaadbin="no"
libgsm="no"
libogg="no"
libtheora="no"
libvorbis="no"
-xvid="no"
+mlib="no"
+x11grab="no"
x264="no"
-pp="no"
-mingw32="no"
-wince="no"
-os2="no"
-lstatic="yes"
-lshared="no"
-optimize="yes"
+xvid="no"
+zlib="yes"
+
+# configurable options
debug="yes"
-extrawarnings="no"
dostrip="yes"
-extralibs="-lm"
-bigendian="no"
-vhook="default"
-avisynth="no"
-dlfcn_h="no"
-dlopen="no"
+extrawarnings="no"
+ffmpeg="yes"
+ffplay="yes"
+ffserver="yes"
+gpl="no"
+gprof="no"
+ipv6="yes"
+lshared="no"
+lstatic="yes"
+memalign_hack="no"
mpegaudio_hp="yes"
+network="yes"
+optimize="yes"
+pp="no"
+protocols="yes"
+swscaler="no"
+vhook="default"
+
+# threading
+beosthreads="no"
+os2threads="no"
+pthreads="no"
+w32threads="no"
+thread_type="no"
+
+# build settings
+extralibs="-lm"
SHFLAGS='-shared -Wl,-soname,$@'
VHOOKSHFLAGS='$(SHFLAGS)'
-beos_netserver="no"
-protocols="yes"
-ffmpeg="yes"
-ffserver="yes"
-ffplay="yes"
LIBOBJFLAGS=""
FFLDFLAGS=-Wl,--warn-common
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
EXESUF=""
BUILDSUF=""
-amr_nb="no"
-amr_wb="no"
-amr_nb_fixed="no"
-amr_if2="no"
-mlib="no"
-beosthreads="no"
-os2threads="no"
-pthreads="no"
-w32threads="no"
-thread_type="no"
-swscaler="no"
-gpl="no"
-memalign_hack="no"
-asmalign_pot="unknown"
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
# OS specific
targetos=`uname -s`
case $targetos in
-BeOS)
-PREFIX="/boot/home/config"
-# helps building libavcodec
-add_cflags "-DPIC -fomit-frame-pointer"
-# 3 gcc releases known for BeOS, each with ugly bugs
-gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
-case "$gcc_version" in
-2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
-mmx="no"
-;;
-*20010315*) echo "BeBits gcc"
-add_cflags "-fno-expensive-optimizations"
-;;
-esac
-SHFLAGS=-nostart
-# disable Linux things
-audio_oss="no"
-video4linux="no"
-video4linux2="no"
-dv1394="no"
-# enable BeOS things
-audio_beos="yes"
-# no need for libm, but the inet stuff
-# Check for BONE
-if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
-extralibs="-lbind -lsocket"
-else
-beos_netserver="yes"
-extralibs="-lnet"
-fi ;;
-SunOS)
-video4linux="no"
-video4linux2="no"
-audio_oss="no"
-dv1394="no"
-make="gmake"
-FFLDFLAGS=""
-FFSERVERLDFLAGS=""
-SHFLAGS="-shared -Wl,-h,\$@"
-add_extralibs "-lsocket -lnsl"
-;;
-NetBSD)
-video4linux="no"
-video4linux2="no"
-bktr="yes"
-audio_oss="yes"
-dv1394="no"
-make="gmake"
-add_extralibs "-lossaudio"
-;;
-OpenBSD)
-video4linux="no"
-video4linux2="no"
-bktr="yes"
-audio_oss="yes"
-dv1394="no"
-need_memalign="no"
-make="gmake"
-LIBOBJFLAGS="\$(PIC)"
-LDCONFIG="ldconfig -m \$(shlibdir)"
-SHFLAGS='-shared'
-SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
-SLIBNAME_WITH_VERSION='$(SLIBNAME)'
-SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
-add_extralibs "-lossaudio"
-;;
-FreeBSD)
-video4linux="no"
-video4linux2="no"
-bktr="yes"
-audio_oss="yes"
-dv1394="no"
-make="gmake"
-need_memalign="no"
-add_cflags "-pthread"
-;;
-GNU/kFreeBSD)
-video4linux="no"
-video4linux2="no"
-bktr="yes"
-audio_oss="yes"
-dv1394="no"
-add_cflags "-pthread"
-;;
-BSD/OS)
-video4linux="no"
-video4linux2="no"
-bktr="yes"
-audio_oss="yes"
-dv1394="no"
-extralibs="-lpoll -lgnugetopt -lm"
-make="gmake"
-strip="strip -d"
-;;
-Darwin)
-cc="cc"
-video4linux="no"
-video4linux2="no"
-audio_oss="no"
-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/$@'
-extralibs=""
-strip="strip -x"
-FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
-SLIBSUF=".dylib"
-SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
-SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
-FFSERVERLDFLAGS=-Wl,-bind_at_load
-;;
-MINGW32*)
-# Note: the rest of the mingw32 config is done afterwards as mingw32
-# can be forced on the command line for Linux cross compilation.
-mingw32="yes"
-;;
-CYGWIN*)
-targetos=CYGWIN
-shlibdir="$bindir"
-video4linux="no"
-video4linux2="no"
-audio_oss="yes"
-dv1394="no"
-VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
-VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
-extralibs=""
-EXESUF=".exe"
-SLIBPREF="cyg"
-SLIBSUF=".dll"
-SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
-SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
-SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
-;;
-Linux)
-LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
-;;
-IRIX*)
-targetos=IRIX
-ranlib="echo ignoring ranlib"
-video4linux="no"
-video4linux2="no"
-audio_oss="no"
-make="gmake"
-;;
-OS/2)
-TMPE=$TMPE".exe"
-ar="emxomfar -p128"
-ranlib="echo ignoring ranlib"
-strip="echo ignoring strip"
-add_cflags "-Zomf"
-FFLDFLAGS="-Zomf -Zstack 16384 -s"
-SHFLAGS="-Zdll -Zomf"
-FFSERVERLDFLAGS=""
-LIBPREF=""
-LIBSUF=".lib"
-SLIBPREF=""
-SLIBSUF=".dll"
-EXESUF=".exe"
-extralibs=""
-pkg_requires=""
-video4linux="no"
-video4linux2="no"
-audio_oss="no"
-dv1394="no"
-ffserver="no"
-vhook="no"
-os2="yes"
-;;
-*)
-targetos="${targetos}-UNKNOWN"
-;;
+ BeOS|Haiku|Zeta)
+ PREFIX="$HOME/config"
+ # helps building libavcodec
+ add_cflags "-DPIC -fomit-frame-pointer"
+ # 3 gcc releases known for BeOS, each with ugly bugs
+ gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
+ case "$gcc_version" in
+ 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
+ mmx="no"
+ ;;
+ *20010315*) echo "BeBits gcc"
+ add_cflags "-fno-expensive-optimizations"
+ ;;
+ esac
+ LDCONFIG="echo ignoring ldconfig"
+ SHFLAGS=-nostart
+ # disable Linux things
+ dv1394="no"
+ # enable BeOS things
+ audio_beos="yes"
+ # no need for libm, but the inet stuff
+ # Check for BONE
+ # XXX: actually should check for NOT net_server
+ if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
+ extralibs="-lbind -lsocket"
+ else
+ beos_netserver="yes"
+ extralibs="-lnet"
+ fi ;;
+ SunOS)
+ dv1394="no"
+ FFLDFLAGS=""
+ FFSERVERLDFLAGS=""
+ SHFLAGS="-shared -Wl,-h,\$@"
+ add_extralibs "-lsocket -lnsl"
+ ;;
+ NetBSD)
+ dv1394="no"
+ add_extralibs "-lossaudio"
+ ;;
+ OpenBSD)
+ dv1394="no"
+ need_memalign="no"
+ LIBOBJFLAGS="\$(PIC)"
+ LDCONFIG="ldconfig -m \$(shlibdir)"
+ SHFLAGS='-shared'
+ SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
+ SLIBNAME_WITH_VERSION='$(SLIBNAME)'
+ SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
+ add_extralibs "-lossaudio"
+ ;;
+ FreeBSD)
+ dv1394="no"
+ need_memalign="no"
+ add_cflags "-pthread"
+ ;;
+ GNU/kFreeBSD)
+ dv1394="no"
+ add_cflags "-pthread"
+ ;;
+ BSD/OS)
+ dv1394="no"
+ extralibs="-lpoll -lgnugetopt -lm"
+ strip="strip -d"
+ ;;
+ Darwin)
+ cc="cc"
+ 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/$@'
+ extralibs=""
+ strip="strip -x"
+ FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
+ SLIBSUF=".dylib"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
+ SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
+ FFSERVERLDFLAGS=-Wl,-bind_at_load
+ ;;
+ MINGW32*)
+ # Note: the rest of the mingw32 config is done afterwards as mingw32
+ # can be forced on the command line for Linux cross compilation.
+ mingw32="yes"
+ ;;
+ CYGWIN*)
+ targetos=CYGWIN
+ shlibdir="$bindir"
+ dv1394="no"
+ VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
+ VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
+ extralibs=""
+ EXESUF=".exe"
+ SLIBPREF="cyg"
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
+ SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
+ SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
+ ;;
+ Linux)
+ LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
+ ;;
+ IRIX*)
+ targetos=IRIX
+ ranlib="echo ignoring ranlib"
+ ;;
+ OS/2)
+ TMPE=$TMPE".exe"
+ ar="emxomfar -p128"
+ ranlib="echo ignoring ranlib"
+ strip="echo ignoring strip"
+ add_cflags "-Zomf"
+ FFLDFLAGS="-Zomf -Zstack 16384 -s"
+ SHFLAGS="-Zdll -Zomf"
+ FFSERVERLDFLAGS=""
+ LIBPREF=""
+ LIBSUF=".lib"
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ EXESUF=".exe"
+ extralibs=""
+ pkg_requires=""
+ dv1394="no"
+ ffserver="no"
+ vhook="no"
+ os2="yes"
+ ;;
+ *)
+ targetos="${targetos}-UNKNOWN"
+ ;;
esac
# find source path
show_help
fi
-FFMPEG_CONFIGURATION=" "
-for opt do
- FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
-done
+FFMPEG_CONFIGURATION="$@"
ENCODER_LIST=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
DECODER_LIST=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
;;
--cross-prefix=*) cross_prefix="$optval"
;;
- --cross-compile) cross_compile=yes
+ --cross-compile) cross_compile="yes"
;;
--cc=*) cc="$optval"
;;
;;
--disable-dv1394) dv1394="no"
;;
- --disable-network) network="no"; ffserver="no"
+ --disable-network) network="no"
;;
- --disable-ipv6) ipv6="no";
+ --disable-ipv6) ipv6="no"
;;
--disable-zlib) zlib="no"
;;
--enable-a52) liba52="yes"
;;
- --enable-a52bin) liba52bin="yes"
+ --enable-a52bin) liba52bin="yes"; liba52="yes"
;;
--enable-dts) libdts="yes"
;;
;;
--enable-x264) x264="yes"
;;
- --enable-avisynth) avisynth="yes";
+ --enable-avisynth) avisynth="yes"
;;
- --enable-x11grab) x11grab="yes";
+ --enable-x11grab) x11grab="yes"
;;
--enable-dc1394) dc1394="yes"
pkg_requires="$pkg_requires libraw1394"
;;
--disable-mpegaudio-hp) mpegaudio_hp="no"
;;
- --disable-protocols) protocols="no"; network="no"; ffserver="no"
+ --disable-protocols) protocols="no"; network="no"
;;
--disable-ffmpeg) ffmpeg="no"
;;
;;
--disable-muxer=*) disable ${optval}_muxer
;;
- --disable-muxers) disable $MUXER_LIST; ffserver="no"
+ --disable-muxers) disable $MUXER_LIST
;;
--enable-demuxer=*) enable ${optval}_demuxer
;;
esac
done
-if test "$logging" != no; then
+if ! disabled logging ; then
enabled logging || logfile="$logging"
echo "# $0 $@" >$logfile
set >>$logfile
EOF
exit 1
fi
- video4linux="no"
- video4linux2="no"
- audio_oss="no"
dv1394="no"
dc1394="no"
ffserver="no"
strip="${cross_prefix}${strip}"
# we need to build at least one lib type
-if test "$lstatic" = "no" && test "$lshared" = "no" ; then
+if disabled_all lstatic lshared; 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 enabled libtheora && test "$libogg" = "no"; then
- die "libogg must be enabled to enable libtheora."
+if disabled libogg; then
+ enabled libtheora && die "libogg must be enabled to enable libtheora."
+ enabled libvorbis && die "libogg must be enabled to enable libvorbis."
fi
-if enabled libvorbis && test "$libogg" = "no"; then
- die "libogg must be enabled to enable libvorbis."
-fi
-
-if test "$gpl" != "yes"; then
- if enabled pp; then
- die "The Postprocessing code is under GPL and --enable-gpl is not specified."
- fi
-
- if test "$liba52" != "no" -o "$liba52bin" != "no"; then
- die "liba52 is under GPL and --enable-gpl is not specified."
- fi
-
- if enabled xvid; then
- die "libxvidcore is under GPL and --enable-gpl is not specified."
- fi
-
- if enabled x264; then
- die "x264 is under GPL and --enable-gpl is not specified."
- fi
-
- if enabled libdts; then
- die "libdts is under GPL and --enable-gpl is not specified."
- fi
-
- if test "$libfaad" != "no" -o "$libfaadbin" != "no"; then
- if check_header faad.h; then
- check_cc << EOF
- #include <faad.h>
- #ifndef FAAD2_VERSION
- ok faad1
- #endif
- int main( void ) { return 0; }
+if enabled_any libfaad libfaadbin ; then
+ if check_header faad.h; then
+ check_cc << EOF
+#include <faad.h>
+#ifndef FAAD2_VERSION
+ok faad1
+#endif
+int main( void ) { return 0; }
EOF
- if test $? = 0 ; then
- die "FAAD2 is under GPL and --enable-gpl is not specified."
- fi
- else
- libfaad="no"
- libfaadbin="no"
- echo "FAAD test failed."
- fi
+ test $? = 0 && enable libfaad2
+ else
+ die "FAAD test failed."
fi
+fi
- if enabled x11grab; then
- die "The X11 grabber is under GPL and --enable-gpl is not specified."
- fi
- if enabled swscaler; then
- die "The software scaler is under GPL and --enable-gpl is not specified."
- fi
+if disabled gpl ; then
+ die_gpl_disabled(){
+ name=$1
+ shift
+ enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
+ }
+ die_gpl_disabled "The Postprocessing code" pp
+ die_gpl_disabled "liba52" liba52 liba52bin
+ die_gpl_disabled "libxvidcore" xvid
+ die_gpl_disabled "x264" x264
+ die_gpl_disabled "libdts" libdts
+ die_gpl_disabled "FAAD2" libfaad2
+ die_gpl_disabled "The X11 grabber" x11grab
+ die_gpl_disabled "The software scaler" swscaler
fi
# compute MMX state
;;
*[34].*)
add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
- if test "$lshared" = no; then
+ if disabled lshared; then
needmdynamicnopic="yes"
fi
;;
*)
add_cflags "-no-cpp-precomp -pipe"
- if test "$lshared" = no; then
+ if disabled lshared; then
needmdynamicnopic="yes"
fi
;;
fi
fi
-if test $optimize != "no"; then
- add_cflags "-fomit-frame-pointer"
-fi
+disabled optimize || add_cflags -fomit-frame-pointer
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
# Add processor-specific flags
POWERPCMODE="32bits"
if test $cpu != "generic"; then
+ warn_altivec(){
+ $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
+ }
case $cpu in
601|ppc601|PowerPC601)
add_cflags "-mcpu=601"
- if enabled altivec; then
- echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
- fi
+ warn_altivec enabled PPC601
;;
603*|ppc603*|PowerPC603*)
add_cflags "-mcpu=603"
- if enabled altivec; then
- echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
- fi
+ warn_altivec enabled PPC603
;;
604*|ppc604*|PowerPC604*)
add_cflags "-mcpu=604"
- if enabled altivec; then
- echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
- fi
+ warn_altivec enabled PPC604
;;
G3|g3|75*|ppc75*|PowerPC75*)
add_cflags "-mcpu=750 -mpowerpc-gfxopt"
- if enabled altivec; then
- echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
- fi
+ warn_altivec enabled PPC75x
;;
G4|g4|745*|ppc745*|PowerPC745*)
add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
- if test $altivec = "no"; then
- echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
- fi
+ warn_altivec disabled PPC745x
;;
74*|ppc74*|PowerPC74*)
add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
- if test $altivec = "no"; then
- echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
- fi
+ warn_altivec disabled PPC74xx
;;
G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
- if test $altivec = "no"; then
- echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
- fi
+ warn_altivec disabled PPC970
POWERPCMODE="64bits"
;;
# targets that do NOT support conditional mov (cmov)
esac
fi
+gnu_make(){
+ $1 --version 2>&1 | grep -q GNU
+}
+
+if ! gnu_make $make; then
+ gnu_make gmake && make=gmake || die "GNU make not found."
+fi
+
# make sure we can execute files in $TMPDIR
cat >$TMPE 2>>$logfile <<EOF
#! /bin/sh
EOF
if test "$?" != 0; then
echo "$cc is unable to create an executable file."
- if test -z "$cross_prefix" -a "$cross_compile" = no; then
+ if test -z "$cross_prefix" && disabled 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 test "$cross_compile" = "no"; then
+if disabled 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 test "$memalign" = "no" -a "$need_memalign" = "yes" -a \
- "$memalign_hack" != "yes"; then
+if disabled_all memalign memalign_hack && enabled need_memalign ; then
die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
fi
for thread in pthreads beosthreads os2threads w32threads; do
if enabled $thread; then
- if test $thread_type != "no"; then
+ if ! disabled thread_type ; then
die "ERROR: Only one thread type must be selected."
else
thread_type="$thread"
done
# these are off by default, so fail if requested and not available
-enabled libdts && require libdts dts.h dts_init -ldts -lm
-enabled libgsm && require libgsm gsm.h gsm_create -lgsm
+enabled libdts && require libdts dts.h dts_init -ldts -lm
+enabled libgsm && require libgsm gsm.h gsm_create -lgsm
enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
-enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
-enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
-enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
-enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
-enabled xvid && require XviD xvid.h xvid_global -lxvidcore
-enabled x264 && require x264 x264.h x264_encoder_open -lx264
-enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
-enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
+enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
+enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
+enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
+enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
+enabled xvid && require XviD xvid.h xvid_global -lxvidcore
+enabled x264 && require x264 x264.h x264_encoder_open -lx264
+enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
+enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
# Ugh, libfaac uses stdcall calling convention on win32 so we can't use
# the generic test functions
ldl=-ldl
fi
-if test "$vhook" = "default"; then
- vhook="$dlopen"
-fi
+test "$vhook" = "default" && vhook="$dlopen"
-if enabled_any vhook liba52bin libfaadbin; then
- add_extralibs $ldl
-fi
+enabled_any vhook liba52bin libfaadbin && add_extralibs $ldl
-if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
+if test "$targetos" = "CYGWIN" && enabled lstatic ; then
vhook="no"
echo
echo "At the moment vhooks don't work on Cygwin static builds."
check_ldflags -export-dynamic
fi
-if enabled audio_beos; then
- add_extralibs "-lmedia -lbe"
-fi
+enabled audio_beos && add_extralibs "-lmedia -lbe"
##########################################
# imlib check
-temp_extralibs -lImlib2
-check_ld <<EOF && imlib2=yes || imlib2=no
-#include <X11/Xlib.h>
-#include <Imlib2.h>
-int main( void ) { return (int) imlib_load_font("foo"); }
-EOF
-restore_flags
+imlib2=no
+if imlib2-config --version >/dev/null 2>&1; then
+ temp_cflags `imlib2-config --cflags`
+ temp_extralibs `imlib2-config --libs`
+ check_lib Imlib2.h imlib_load_font && enable imlib2
+ restore_flags
+fi
##########################################
# FreeType check
freetype2=no
-if test "x$targetos" != "xBeOS"; then
- if (freetype-config --version) >/dev/null 2>&1 ; then
- temp_cflags `freetype-config --cflags`
- temp_extralibs `freetype-config --libs`
- check_ld <<EOF && freetype2=yes
-#include <ft2build.h>
-int main( void ) { return (int) FT_Init_FreeType(0); }
-EOF
- restore_flags
- fi
+if freetype-config --version >/dev/null 2>&1; then
+ temp_cflags `freetype-config --cflags`
+ temp_extralibs `freetype-config --libs`
+ check_lib ft2build.h FT_Init_FreeType && enable freetype2
+ restore_flags
fi
##########################################
sdl_too_old=no
sdl=no
SDL_CONFIG="${cross_prefix}sdl-config"
-if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
- temp_cflags `"${SDL_CONFIG}" --cflags`
+if "${SDL_CONFIG}" --version >/dev/null 2>&1; then
+ sdl_cflags=`"${SDL_CONFIG}" --cflags`
+ temp_cflags $sdl_cflags
temp_extralibs `"${SDL_CONFIG}" --libs`
- check_ld <<EOF
-#include <SDL.h>
-#undef main /* We don't want SDL to override our main() */
-int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
-EOF
- if test $? = 0; then
+ if check_lib SDL.h SDL_Init; then
_sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
if test "$_sdlversion" -lt 121 ; then
sdl_too_old=yes
else
sdl=yes
- check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
+ check_cc $sdl_cflags <<EOF && enable sdl_video_size
#include <SDL.h>
int main(void){
const SDL_VideoInfo *vi = SDL_GetVideoInfo();
restore_flags
fi
-enabled sdl || ffplay=no
-
-##########################################
-# texi2html check
-
-texi2html=no
-if (texi2html -version) >/dev/null 2>&1; then
-texi2html=yes
-fi
+texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html
##########################################
# IPv6 check
}
EOF
-# check for video4linux2 --- V4L2_PIX_FMT_YUV420
-enabled video4linux2 && check_cc <<EOF || video4linux2="no"
-#include <sys/time.h>
-#include <asm/types.h>
-#include <linux/videodev2.h>
-int dummy = V4L2_PIX_FMT_YUV420;
-struct v4l2_buffer dummy1;
-EOF
+enabled video4linux && check_header linux/videodev.h || disable video4linux
+enabled video4linux2 && check_header linux/videodev2.h || disable video4linux2
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
if enabled bktr; then
- check_header dev/bktr/ioctl_meteor.h
- check_header dev/bktr/ioctl_bt848.h
-
- check_header machine/ioctl_meteor.h
- check_header machine/ioctl_bt848.h
-
- check_header dev/video/meteor/ioctl_meteor.h
- check_header dev/video/bktr/ioctl_bt848.h
-
- check_header dev/ic/bt8xx.h
+ { check_header dev/bktr/ioctl_meteor.h &&
+ check_header dev/bktr/ioctl_bt848.h; } ||
+ { check_header machine/ioctl_meteor.h &&
+ check_header machine/ioctl_bt848.h; } ||
+ { check_header dev/video/meteor/ioctl_meteor.h &&
+ check_header dev/video/bktr/ioctl_bt848.h; } ||
+ check_header dev/ic/bt8xx.h ||
+ disable bktr
fi
+enabled audio_oss &&
+ check_header sys/soundcard.h ||
+ check_header soundcard.h ||
+ disable audio_oss
+
# Deal with the x11 frame grabber
enabled x11grab &&
enabled gpl &&
# LIBOBJFLAGS may have already been set in the OS configuration
if test -z "$LIBOBJFLAGS" ; then
case "$arch" in
- x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
+ x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS="\$(PIC)" ;;
esac
fi
fi
echo "AMR-NB fixed support $amr_nb_fixed"
echo "AMR-WB float support $amr_wb"
echo "AMR-WB IF2 support $amr_if2"
-if test "$gpl" = "no" ; then
+if disabled gpl; then
echo "License: LGPL"
else
echo "License: GPL"
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
-echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
+echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
echo "PREFIX=$PREFIX" >> config.mak
echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak