echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]"
echo " --incdir=DIR install includes in DIR [PREFIX/include/ffmpeg]"
echo " --mandir=DIR install man page in DIR [PREFIX/man]"
- echo " --enable-mingwce enable MinGW native/cross WinCE compile"
echo " --enable-static build static libraries [default=yes]"
echo " --disable-static do not build static libraries [default=no]"
echo " --enable-shared build shared libraries [default=no]"
echo " --enable-x264 enable H.264 encoding via x264 [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"
- echo " --enable-amr_if2 enable amr_wb IF2 audio codec"
+ echo " --enable-amr-nb enable amr-nb floating point audio codec"
+ echo " --enable-amr-nb-fixed enable amr-nb fixed-point codec"
+ echo " --enable-amr-wb enable amr-wb floating point audio codec"
echo ""
echo "Advanced options (experts only):"
echo " --source-path=PATH path to source code [$source_path]"
check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
}
+check_exec_crash(){
+ code=`cat`
+
+ # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
+ # are safe but may not be available everywhere. Thus we use
+ # raise(SIGTERM) instead. The check is run in a subshell so we
+ # can redirect the "Terminated" message from the shell. SIGBUS
+ # is not defined by standard C so it is used conditionally.
+
+ (check_exec "$@") >>$logfile 2>&1 <<EOF
+#include <signal.h>
+static void sighandler(int sig){
+ raise(SIGTERM);
+}
+int main(){
+ signal(SIGILL, sighandler);
+ signal(SIGFPE, sighandler);
+ signal(SIGSEGV, sighandler);
+#ifdef SIGBUS
+ signal(SIGBUS, sighandler);
+#endif
+ { $code }
+}
+EOF
+}
+
require(){
name="$1"
header="$2"
bktr
dc1394
dv1394
+ ebp_available
+ ebx_available
ffmpeg
ffplay
ffserver
vhook
v4l
v4l2
- wince
x11grab
x264
xvid
zlib
'
-HAVE_LIST='
+THREADS_LIST='
+ beosthreads
+ os2threads
+ pthreads
+ w32threads
+'
+
+HAVE_LIST="
+ $THREADS_LIST
altivec
altivec_h
armv5te
armv6
- beosthreads
+ arpa_inet_h
byteswap_h
cmov
dcbzl
dev_video_bktr_ioctl_bt848_h
dlfcn_h
dlopen
+ fast_64bit
fast_cmov
freetype2
imlib2
mmi
mmx
os2
- os2threads
- pthreads
sdl
sdl_video_size
soundcard_h
sys_poll_h
sys_soundcard_h
threads
- w32threads
-'
+"
TARGET_LIST='
altivec
CMDLINE_SELECT="
$CONFIG_LIST
$TARGET_LIST
- amr_if2
+ $THREADS_LIST
debug
extra_warnings
shared
static
- beosthreads
- os2threads
- pthreads
- w32threads
"
+dxa_decoder_deps="zlib"
flashsv_decoder_deps="zlib"
flashsv_encoder_deps="zlib"
mpeg_xvmc_decoder_deps="xvmc"
oggvorbis_decoder_deps="libvorbis"
oggvorbis_encoder_deps="libvorbis"
+ac3_demuxer_deps="ac3_parser"
audio_demuxer_deps_any="audio_oss audio_beos"
audio_muxer_deps_any="audio_oss audio_beos"
dc1394_demuxer_deps="dc1394"
rtsp_demuxer_deps="network"
sdp_demuxer_deps="network"
v4l2_demuxer_deps="v4l2"
-video_grab_device_demuxer_deps_any="v4l bktr"
+video_grab_bktr_demuxer_deps="bktr"
+video_grab_v4l_demuxer_deps="v4l"
x11_grab_device_demuxer_deps="x11grab"
ffplay_deps="sdl"
bigendian="no"
# OS
-targetos=`uname -s`
+targetos=$(tolower $(uname -s))
beos_netserver="no"
-mingw32="no"
os2="no"
-wince="no"
# non-library system interfaces
audio_beos="default"
v4l="yes"
# libraries
-amr_if2="no"
amr_nb="no"
amr_nb_fixed="no"
amr_wb="no"
;;
--cpu=*) cpu="$optval"
;;
- --enable-mingwce) wince="yes"
- ;;
--disable-opts) optimize="no"
;;
--enable-small) optimize="small"
if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
arch="x86_64"
+ enable fast_64bit
fi
fi
;;
;;
alpha)
arch="alpha"
+ enable fast_64bit
+ ;;
+ "Power Macintosh"|ppc|powerpc)
+ arch="powerpc"
;;
- "Power Macintosh"|ppc|ppc64|powerpc)
+ ppc64)
arch="powerpc"
+ enable fast_64bit
;;
mips|mipsel|IP*)
arch="mips"
;;
sun4u|sparc64)
arch="sparc64"
+ enable fast_64bit
;;
sparc)
arch="sparc"
sh4)
arch="sh4"
;;
- parisc|parisc64)
+ parisc)
arch="parisc"
;;
+ parisc64)
+ arch="parisc"
+ enable fast_64bit
+ ;;
s390|s390x)
arch="s390"
;;
;;
ia64)
arch="ia64"
+ enable fast_64bit
;;
bfin)
arch="bfin"
# OS specific
osextralibs="-lm"
-case `tolower $targetos` in
+case $targetos in
beos|haiku|zeta)
PREFIX="$HOME/config"
# helps building libavcodec
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"
FFSERVERLDFLAGS=-Wl,-bind_at_load
;;
mingw32*)
- mingw32="yes"
+ targetos=mingw32
if enabled_all shared static; then
cat <<EOF
You can only build one library type at once on MinGW.
dv1394="no"
ffserver="no"
network="no"
- if enabled wince; then
- protocols="no"
- fi
SLIBPREF=""
SLIBSUF=".dll"
EXESUF=".exe"
add_extralibs -lws2_32
;;
cygwin*)
- targetos=CYGWIN
+ targetos=cygwin
shlibdir="$bindir"
dv1394="no"
VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libswscale -L$(BUILD_ROOT)/libavutil'
LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
;;
irix*)
- targetos=IRIX
+ targetos=irix
ranlib="echo ignoring ranlib"
;;
os/2)
#Darwin CC versions
needmdynamicnopic="no"
-if test $targetos = Darwin; then
+if test $targetos = darwin; then
if test -n "`$cc -v 2>&1 | grep xlc`"; then
add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
else
- gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
- case "$gcc_version" in
- *2.95*)
- add_cflags "-no-cpp-precomp -pipe"
- ;;
- *[34].*)
- add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
- if disabled shared; then
- needmdynamicnopic="yes"
- fi
- ;;
- *)
- add_cflags "-no-cpp-precomp -pipe"
- if disabled shared; then
- needmdynamicnopic="yes"
- fi
- ;;
- esac
+ add_cflags "-no-cpp-precomp -pipe"
+ check_cflags "-force_cpusubtype_ALL"
+ check_cflags "-Wno-sign-compare"
+ disabled shared && needmdynamicnopic="yes"
fi
fi
sparc64)
add_cflags "-mcpu=v9"
;;
+ bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
+ add_cflags "-mfdpic"
+ add_ldflags "-mfdpic"
+ ;;
*)
echo "WARNING: Unknown CPU \"$cpu\", ignored."
;;
die "C compiler test failed."
fi
+if test $arch = "x86_32" -o $arch = "x86_64"; then
+ # check whether EBP is available on x86
+ # As 'i' is stored on the stack, this program will crash
+ # if the base pointer is used to access it because the
+ # base pointer is cleared in the inline assembly code.
+ check_exec_crash <<EOF && enable ebp_available
+ volatile int i=0;
+ asm volatile (
+ "xorl %%ebp, %%ebp"
+ ::: "%ebp");
+ return i;
+EOF
+
+ # check wether EBX is available on x86
+ check_cc <<EOF && enable ebx_available
+int main(){
+ asm volatile ("":::"%ebx");
+}
+EOF
+fi
+
# check for assembler specific support
if test $arch = "powerpc"; then
check_header byteswap.h
+check_header arpa/inet.h
+
check_func inet_aton
check_func localtime_r
enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
fi
fi
-for thread in pthreads beosthreads os2threads w32threads; do
+for thread in $THREADS_LIST; do
if enabled $thread; then
if ! disabled thread_type ; then
die "ERROR: Only one thread type must be selected."
fi
done
-enabled_any amr_nb amr_nb_fixed amr_wb amr_if2 && enable amr
+enabled_any amr_nb amr_nb_fixed amr_wb && enable amr
enabled_all amr_nb amr_nb_fixed &&
die "Only one of amr_nb and amr_nb_fixed may be enabled."
# these are off by default, so fail if requested and not available
+enabled amr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
+enabled amr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
enabled liba52 && require liba52 a52dec/a52.h a52_init -la52
enabled libdts && require libdts dts.h dts_init -ldts -lm
enabled libgsm && require libgsm gsm.h gsm_create -lgsm
test "$vhook" = "default" && vhook="$dlopen"
-enabled_any vhook liba52bin libfaadbin && add_extralibs $ldl
+enabled_any vhook liba52bin libfaadbin ffserver && add_extralibs $ldl
-if test "$targetos" = "CYGWIN" && enabled static ; then
+if test "$targetos" = cygwin && enabled static ; then
vhook="no"
echo
echo "At the moment vhooks don't work on Cygwin static builds."
enabled_any $MUXER_LIST && enable muxers
enabled_any $DEMUXER_LIST && enable demuxers
-enabled_any pthreads beosthreads os2threads w32threads && enable threads
+enabled_any $THREADS_LIST && enable threads
check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
$DEMUXER_LIST $MUXER_LIST
echo "AMR-NB float support $amr_nb"
echo "AMR-NB fixed support $amr_nb_fixed"
echo "AMR-WB float support $amr_wb"
-echo "AMR-WB IF2 support $amr_if2"
if disabled gpl; then
echo "License: LGPL"
else
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
print_config TARGET_ $TMPH config.mak $TARGET_LIST
-if test "$targetos" = "Darwin"; then
+if test "$targetos" = darwin; then
echo "#define CONFIG_DARWIN 1" >> $TMPH
fi
echo "SRC_PATH_BARE=$source_path" >> config.mak
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
-if enabled amr_if2; then
- echo "AMR_CFLAGS=-DIF2=1" >> config.mak
-fi
-
# Apparently it's not possible to portably echo a backslash.
if enabled asmalign_pot; then
printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
fi
-for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
- ucname="`toupper $codec`"
+for part in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
+ ucname="`toupper $part`"
config_name="CONFIG_$ucname"
enabled_name="ENABLE_$ucname"
- if enabled $codec; then
+ if enabled $part; then
echo "#define $config_name 1" >> $TMPH
echo "#define $enabled_name 1" >> $TMPH
echo "$config_name=yes" >> config.mak
libavcodec/mlib \
libavcodec/ppc \
libavcodec/amr \
- libavcodec/amr_float \
- libavcodec/amrwb_float \
libpostproc \
libavutil \
libswscale \
fi
if enabled swscaler; then
- pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "-lswscale" "libavutil = $lavu_version" swscale
+ pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" -lswscale "libavutil = $lavu_version" ffmpeg
pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
else
- pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" swscale
+ pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" ffmpeg
pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
apply libswscale.pc sed s/^Libs:.*$/Libs:/
apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/