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-nonfree allow use of nonfree code, the resulting libav*"
+ echo " and ffmpeg will be unredistributable [default=no]"
echo " --enable-pp enable GPLed postprocessing support [default=no]"
echo " --enable-swscaler software scaler support [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 " --disable-ffserver disable ffserver build"
echo " --disable-ffplay disable ffplay build"
echo " --enable-small optimize for size instead of speed"
+ echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
echo " --disable-encoder=NAME disables encoder NAME"
echo " --enable-encoder=NAME enables encoder NAME"
echo " --enable-protocol=NAME enables protocol NAME"
echo " --disable-protocol=NAME disables protocol NAME"
echo " --disable-protocols disables all protocols"
+ echo " --disable-devices disables all devices"
echo " --list-decoders show all available decoders"
echo " --list-encoders show all available encoders"
echo " --list-muxers show all available muxers"
echo " --list-parsers show all available parsers"
echo " --list-protocols show all available protocols"
echo " --list-bsfs show all available bitstream filters"
+ echo " --list-indevs show all available input devices"
+ echo " --list-outdevs show all available output devices"
echo
echo "Developer options (useful when working on FFmpeg itself):"
echo " --enable-gprof enable profiling with gprof [$gprof]"
cat <<EOF
If you think configure made a mistake, make sure you are using the latest
version from SVN. If the latest version fails, report the problem to the
-ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
+ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
EOF
if enabled logging; then
cat <<EOF
exit 1
}
-# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
+# Avoid locale weirdness, besides we really just want to translate ASCII.
toupper(){
- echo "$@" | tr '[a-z]' '[A-Z]'
+ echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
}
tolower(){
- echo "$@" | tr '[A-Z]' '[a-z]'
+ echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
set_all(){
done
check_ld "$@" <<EOF && enable $func
$incs
-int main(void){
+int main(int argc, char **argv){
(void) $func;
return 0;
}
EOF
}
+check_type(){
+ log check_type "$@"
+ headers=$1
+ type=$2
+ shift 2
+ disable $type
+ incs=""
+ for hdr in $headers; do
+ incs="$incs
+#include <$hdr>"
+ done
+ check_cc "$@" <<EOF && enable $type
+$incs
+$type v;
+EOF
+}
+
require(){
name="$1"
header="$2"
decoders
demuxers
encoders
+ indevs
muxers
+ outdevs
parsers
protocols
"
gpl
gprof
gray
+ hardcoded_tables
ipv6
liba52
liba52bin
- libamr
libamr_nb
libamr_wb
libdc1394
memalign_hack
mpegaudio_hp
network
+ nonfree
powerpc_perf
pp
small
THREADS_LIST='
beosthreads
+ os2threads
pthreads
w32threads
'
getrusage
imlib2
inet_aton
+ libdc1394_1
+ libdc1394_2
+ llrint
+ lrint
lrintf
machine_ioctl_bt848_h
machine_ioctl_meteor_h
mkstemp
mlib
ppc64
+ round
+ roundf
sdl
sdl_video_size
+ socklen_t
soundcard_h
- sys_poll_h
+ poll_h
+ sys_select_h
sys_soundcard_h
termios_h
threads
audio_beos_muxer_extralibs="-lmedia -lbe"
avisynth_demuxer_deps="avisynth"
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
-dv1394_demuxer_deps="dv1394"
+dv1394_demuxer_deps="dv1394 dv_demuxer"
libdc1394_demuxer_deps="libdc1394"
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
redir_demuxer_deps="network"
-rtp_muxer_deps="network mpegts_demuxer"
-rtsp_demuxer_deps="rtp_protocol rtp_muxer"
-sdp_demuxer_deps="rtsp_demuxer"
+rtp_muxer_deps="network rtp_protocol"
+rtsp_demuxer_deps="sdp_demuxer"
+sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
v4l2_demuxer_deps="linux_videodev2_h"
v4l_demuxer_deps="linux_videodev_h"
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
;;
--disable-protocols) disable $PROTOCOL_LIST
;;
+ --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
+ ;;
--enable-*=*|--disable-*=*)
eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
case "$thing" in
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
SHFLAGS='-shared -Wl,--enable-auto-image-base'
;;
+ *-dos|freedos|opendos)
+ enable memalign_hack
+ disable ffplay ffserver vhook
+ disable $INDEV_LIST $OUTDEV_LIST
+ network_extralibs="-lsocket"
+ EXESUF=".exe"
+ ;;
linux)
LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
enable dv1394
targetos=irix
ranlib="echo ignoring ranlib"
;;
+ os/2*)
+ ar="emxomfar -p256"
+ ranlib="echo ignoring ranlib"
+ strip="lxlite"
+ ln_s="cp -f"
+ add_cflags "-Zomf"
+ EXESUF=".exe"
+ FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
+ SHFLAGS='$(NAME).def -Zdll -Zomf'
+ FFSERVERLDFLAGS=""
+ LIBSUF="_s.lib"
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
+ SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
+ SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(NAME).def; \
+ echo PROTMODE >> $(NAME).def; \
+ echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(NAME).def; \
+ echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(NAME).def; \
+ echo EXPORTS >> $(NAME).def; \
+ emxexp -o $(OBJS) >> $(NAME).def'
+ SLIB_EXTRA_CMD='emximp -o $(LIBPREF)$(NAME)_dll.a $(NAME).def; \
+ emximp -o $(LIBPREF)$(NAME)_dll.lib $(NAME).def;'
+ SLIB_INSTALL_EXTRA_CMD='install -m 644 $(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
+ SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
+ vhook="no"
+ ;;
+
*)
targetos="${targetos}-UNKNOWN"
;;
die_gpl_disabled "The software scaler" swscaler
fi
+if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then
+ die "libamr is nonfree and --enable-nonfree is not specified."
+fi
+
check_deps $ARCH_EXT_LIST
test -z "$need_memalign" && need_memalign="$mmx"
enable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
- pentium4|prescott|nocona)
+ pentium4|pentium4m|prescott|nocona)
add_cflags "-march=$cpu"
enable cmov
disable fast_cmov
check_func fork
check_func gethrtime
check_func getrusage
-check_func inet_aton
+check_func inet_aton $network_extralibs
check_func memalign
check_func mkstemp
check_func2 windows.h GetProcessTimes
# ffserver uses poll(),
# if it's not found we can emulate it using select().
if enabled ffserver; then
- check_header sys/poll.h
+ check_header poll.h
+ check_header sys/select.h
fi
# check for some common methods of building with pthread support
:
elif check_func pthread_create -pthread; then
add_cflags -pthread
- add_ldflags -pthread
+ add_extralibs -pthread
elif check_func pthread_create -pthreads; then
add_cflags -pthreads
- add_ldflags -pthreads
+ add_extralibs -pthreads
elif ! check_lib pthread.h pthread_create -lpthread; then
die "ERROR: can't find pthreads library"
fi
check_lib math.h sin -lm
-# test for lrintf in math.h
-check_exec <<EOF && enable lrintf || disable lrintf
+# test for C99 functions in math.h
+for func in llrint lrint lrintf round roundf; do
+ check_exec <<EOF && enable $func || disable $func
#define _ISOC9X_SOURCE 1
#include <math.h>
-int main(void) { return (lrintf(3.999f) > 0)?0:1; }
+int main(void) { return ($func(3.999f) > 0)?0:1; }
EOF
-
-enabled_any libamr_nb libamr_wb && enable libamr
+done
# these are off by default, so fail if requested and not available
enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
enabled liba52 && require liba52 a52dec/a52.h a52_init -la52
enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
-enabled libdc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
enabled libgsm && require libgsm gsm.h gsm_create -lgsm
# disable the native AC-3 decoder if liba52 is enabled
enabled liba52 && disable ac3_decoder
+# libdc1394 check
+if enabled libdc1394; then
+ { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
+ enable libdc1394_2; } ||
+ { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
+ enable libdc1394_1; } ||
+ die "ERROR: No version of libdc1394 found "
+fi
+
+
_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
check_cc <<EOF && _restrict=$restrict_keyword && break
sdl_cflags=`"${SDL_CONFIG}" --cflags`
temp_cflags $sdl_cflags
temp_extralibs `"${SDL_CONFIG}" --libs`
- if check_lib SDL.h SDL_Init; then
+ if check_lib2 SDL.h SDL_Init; then
_sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
if test "$_sdlversion" -lt 121 ; then
enable sdl_too_old
enable sdl
check_cc $sdl_cflags <<EOF && enable sdl_video_size
#include <SDL.h>
-int main(void){
+int main(int argc, char **argv){
const SDL_VideoInfo *vi = SDL_GetVideoInfo();
int w = vi->current_w;
return 0;
texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html
+check_type sys/socket.h socklen_t
+
##########################################
# Network check
check_func closesocket
elif check_header winsock2.h ; then
network_extralibs="-lws2_32"
+ check_type ws2tcpip.h socklen_t
check_func2 winsock2.h closesocket
fi
fi
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
check_cflags -Wno-pointer-sign
+check_cflags -Wcast-qual
+check_cflags -Wwrite-strings
+check_cflags -Wtype-limits
enabled extra_warnings && check_cflags -Winline
# add some linker flags
check_ldflags -Wl,--warn-common
check_ldflags $LDLATEFLAGS
+check_ldflags -Wl,-Bsymbolic
if enabled small; then
check_cflags -Os # not all compilers support -Os
echo "x264 enabled ${libx264-no}"
echo "XviD enabled ${libxvid-no}"
echo "zlib enabled ${zlib-no}"
-enabled gpl &&
- echo "License: GPL" ||
- echo "License: LGPL"
-for type in decoder encoder parser demuxer muxer protocol bsf; do
+for type in decoder encoder parser demuxer muxer protocol bsf indev outdev; do
echo "Enabled ${type}s:"
ucname="\$`toupper $type`_LIST"
list="`eval echo $ucname`"
echo $partlist
done
+enabled nonfree &&
+ echo "License: unredistributable" ||
+ (enabled gpl &&
+ echo "License: GPL" ||
+ echo "License: LGPL")
+
echo "Creating config.mak and config.h..."
echo "# Automatically generated by configure - do not modify!" > config.mak
echo "SLIBNAME=${SLIBNAME}" >> config.mak
echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
+ echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
libavcodec/ppc \
libavcodec/sh4 \
libavcodec/sparc \
+ libavdevice \
libavformat \
libavutil \
libpostproc \
common.mak \
doc/texi2pod.pl \
libavcodec/Makefile \
+ libavdevice/Makefile \
libavformat/Makefile \
libavutil/Makefile \
libpostproc/Makefile \
Requires: $requires
Conflicts:
Libs: -L\${libdir} $libs
-Cflags: -I\${includedir} -I\${includedir}/$include
+Cflags: -I\${includedir}/$include
EOF
}