-,#!/bin/sh
+#!/bin/sh
#
# FFmpeg configure script
#
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-mingw32 enable MinGW native/cross Windows compile"
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 " --disable-shared do not build shared libraries [default=yes]"
+ echo " --enable-gpl allow use of GPL code, the resulting libav*"
+ echo " and ffmpeg will be under GPL [default=no]"
echo " --enable-pp enable GPLed postprocessing support [default=no]"
echo " --enable-swscaler software scaler support [default=no]"
- echo " --enable-sunmlib use Sun medialib [default=no]"
echo " --enable-beosthreads use BeOS threads [default=no]"
echo " --enable-os2threads use OS/2 threads [default=no]"
echo " --enable-pthreads use pthreads [default=no]"
echo " --enable-w32threads use Win32 threads [default=no]"
echo " --enable-x11grab enable X11 grabbing [default=no]"
+ echo
+ echo "External library support:"
+ echo " --enable-sunmlib use Sun medialib [default=no]"
echo " --enable-dc1394 enable IIDC-1394 grabbing using libdc1394"
echo " and libraw1394 [default=no]"
echo " --enable-liba52 enable GPLed liba52 support [default=no]"
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-gpl allow use of GPL code, the resulting libav*"
- echo " and ffmpeg will be under GPL [default=no]"
echo ""
echo "Advanced options (experts only):"
echo " --source-path=PATH path to source code [$source_path]"
echo " --disable-ipv6 disable ipv6 support [default=no]"
echo " --disable-zlib disable zlib [default=no]"
echo " --disable-vhook disable video hooking support"
- echo " --enable-gprof enable profiling with gprof [$gprof]"
echo " --disable-debug disable debugging symbols"
- echo " --disable-opts disable compiler optimizations"
- echo " --enable-extra-warnings enable more compiler warnings"
echo " --disable-mpegaudio-hp faster (but less accurate)"
echo " MPEG audio decoding [default=no]"
echo " --disable-protocols disable I/O protocols support [default=no]"
echo " --disable-ffplay disable ffplay build"
echo " --enable-small optimize for size instead of speed"
echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
- echo " --disable-strip disable stripping of executables and shared libraries"
echo " --disable-encoder=NAME disables encoder NAME"
echo " --enable-encoder=NAME enables encoder NAME"
echo " --disable-decoder=NAME disables decoder NAME"
echo " --enable-parser=NAME enables parser NAME"
echo " --disable-parser=NAME disables parser NAME"
echo " --disable-parsers disables all parsers"
+ echo
+ echo "Developer options (useful when working on FFmpeg itself):"
+ echo " --enable-gprof enable profiling with gprof [$gprof]"
+ echo " --disable-opts disable compiler optimizations"
+ echo " --enable-extra-warnings enable more compiler warnings"
+ echo " --disable-strip disable stripping of executables and shared libraries"
echo ""
echo "NOTE: Object files are built at the place where configure is launched."
exit 1
echo "$@" | tr '[a-z]' '[A-Z]'
}
+tolower(){
+ echo "$@" | tr '[A-Z]' '[a-z]'
+}
+
set_all(){
value=$1
shift
EOF
}
+check_func2(){
+ log check_func2 "$@"
+ headers=$1
+ func=$2
+ shift 2
+ disable $func
+ incs=""
+ for hdr in $headers; do
+ incs="$incs
+#include <$hdr>"
+ done
+ check_ld "$@" <<EOF && enable $func
+$incs
+int main(){
+ (void) $func;
+ return 0;
+}
+EOF
+}
+
check_lib(){
log check_lib "$@"
header="$1"
return $err
}
+check_lib2(){
+ log check_lib2 "$@"
+ headers="$1"
+ func="$2"
+ shift 2
+ temp_extralibs "$@"
+ check_func2 "$headers" $func && add_extralibs "$@"
+ err=$?
+ restore_flags
+ return $err
+}
+
check_exec(){
check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
}
check_lib $header $func "$@" || die "ERROR: $name not found"
}
+require2(){
+ name="$1"
+ headers="$2"
+ func="$3"
+ shift 3
+ check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
+}
+
+check_foo_config(){
+ cfg=$1
+ pkg=$2
+ header=$3
+ func=$4
+ shift 4
+ disable $cfg
+ check_cmd ${pkg}-config --version
+ err=$?
+ if test "$err" = 0; then
+ temp_cflags `${pkg}-config --cflags`
+ temp_extralibs `${pkg}-config --libs`
+ check_lib "$@" $header $func && enable $cfg
+ fi
+ return $err
+}
+
apply(){
file=$1
shift
zlib
'
-HAVE_LIST='
+THREADS_LIST='
+ beosthreads
+ os2threads
+ pthreads
+ w32threads
+'
+
+HAVE_LIST="
+ $THREADS_LIST
altivec
altivec_h
armv5te
armv6
- beosthreads
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
+ $THREADS_LIST
amr_if2
debug
extra_warnings
- mingw32
shared
static
- beosthreads
- os2threads
- pthreads
- w32threads
"
flashsv_decoder_deps="zlib"
liba52_decoder_deps="liba52"
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
+libgsm_ms_decoder_deps="libgsm"
+libgsm_ms_encoder_deps="libgsm"
libtheora_encoder_deps="libtheora"
mp3lame_encoder_deps="libmp3lame"
oggvorbis_decoder_deps="libvorbis"
# OS
targetos=`uname -s`
beos_netserver="no"
-mingw32="no"
os2="no"
wince="no"
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|ppc64|powerpc)
+ "Power Macintosh"|ppc|powerpc)
arch="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 $targetos in
- BeOS|Haiku|Zeta)
+case `tolower $targetos` in
+ beos|haiku|zeta)
PREFIX="$HOME/config"
# helps building libavcodec
add_cflags "-DPIC -fomit-frame-pointer"
beos_netserver="yes"
osextralibs="-lnet"
fi ;;
- SunOS)
+ sunos)
dv1394="no"
FFLDFLAGS=""
FFSERVERLDFLAGS=""
SHFLAGS="-shared -Wl,-h,\$@"
add_extralibs "-lsocket -lnsl"
;;
- NetBSD)
+ netbsd)
dv1394="no"
add_extralibs "-lossaudio"
;;
- OpenBSD)
+ openbsd)
dv1394="no"
need_memalign="no"
LIBOBJFLAGS="\$(PIC)"
SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
add_extralibs "-lossaudio"
;;
- FreeBSD)
+ freebsd)
dv1394="no"
need_memalign="no"
add_cflags "-pthread"
;;
- GNU/kFreeBSD)
+ gnu/kfreebsd)
dv1394="no"
add_cflags "-pthread"
;;
- BSD/OS)
+ bsd/os)
dv1394="no"
osextralibs="-lpoll -lgnugetopt -lm"
strip="strip -d"
;;
- Darwin)
+ darwin)
cc="cc"
dv1394="no"
need_memalign="no"
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
FFSERVERLDFLAGS=-Wl,-bind_at_load
;;
- MINGW32*)
- mingw32="yes"
+ mingw32*)
if enabled_all shared static; then
cat <<EOF
You can only build one library type at once on MinGW.
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)\""
SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc"
+ add_extralibs -lws2_32
;;
- CYGWIN*)
+ 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)'
+ VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libswscale -L$(BUILD_ROOT)/libavutil'
+ VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lswscale$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
osextralibs=""
EXESUF=".exe"
SLIBPREF="cyg"
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
;;
- Linux)
+ linux)
LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
;;
- IRIX*)
+ irix*)
targetos=IRIX
ranlib="echo ignoring ranlib"
;;
- OS/2)
+ os/2)
TMPE=$TMPE".exe"
ar="emxomfar -p128"
ranlib="echo ignoring ranlib"
sparc64)
add_cflags "-mcpu=v9"
;;
+ bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
+ add_cflags "-mfdpic"
+ add_ldflags "-mfdpic -Wl,--defsym,__stacksize=0x40000"
+ ;;
*)
echo "WARNING: Unknown CPU \"$cpu\", ignored."
;;
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."
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
-if enabled libfaac; then
- save_flags
- temp_extralibs -lfaac
- check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
-#include <stdint.h>
-#include <faac.h>
-int main(){
- char *id, *cpr;
- faacEncGetVersion(&id, &cpr);
- return 0;
-}
-EOF
- restore_flags
-fi
-
-# Ugh, recent faad2 versions have renamed all functions and #define the
-# old names in faad.h. Generic tests won't work.
-if enabled libfaad; then
- save_flags
- temp_extralibs -lfaad
- check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
-#include <faad.h>
-int main(){
- faacDecOpen();
- return 0;
-}
-EOF
- restore_flags
-fi
-
-# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
-if enabled avisynth; then
- save_flags
- temp_extralibs -lvfw32
- check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
-#include <windows.h>
-#include <vfw.h>
-int main(){
- AVIFileInit();
- return 0;
-}
-EOF
- restore_flags
-fi
-
+enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
+enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
+enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
# test for lrintf in math.h
check_exec <<EOF && lrintf=yes || lrintf=no
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
vhook="no"
enabled audio_beos && add_extralibs "-lmedia -lbe"
-enabled mingw32 && add_extralibs -lws2_32
-
-##########################################
-# imlib check
-
-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 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
+check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
+check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
##########################################
# SDL check
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 "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
-echo "TARGET_OS=$targetos" >> config.mak
ucarch=`toupper $arch`
echo "TARGET_ARCH_${ucarch}=yes" >> config.mak