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 " --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"
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"
gpl
gprof
gray
+ hardcoded_tables
ipv6
liba52
liba52bin
- libamr
libamr_nb
libamr_wb
libdc1394
memalign_hack
mpegaudio_hp
network
+ nonfree
powerpc_perf
pp
small
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
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"
VHOOKSHFLAGS='$(SHFLAGS)'
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
FFSERVERLDFLAGS=-Wl,-E
-LDCONFIG="ldconfig"
LIBPREF="lib"
LIBSUF=".a"
FULLNAME='$(NAME)$(BUILDSUF)'
add_cflags "-fno-expensive-optimizations"
;;
esac
- LDCONFIG="echo ignoring ldconfig"
SHFLAGS=-nostart
# enable BeOS things
enable audio_beos
openbsd)
disable need_memalign
LIBOBJFLAGS='$(PIC)'
- LDCONFIG='ldconfig -m $(SHLIBDIR)'
SHFLAGS='-shared'
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)'
SLIBNAME_WITH_VERSION='$(SLIBNAME)'
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
sparc64)
add_cflags "-mcpu=v9"
;;
- bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
- add_cflags "-mfdpic"
- add_ldflags "-mfdpic"
- ;;
arm*)
add_cflags "-mcpu=$cpu"
;;
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
:
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
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 indev outdev; do
echo "Enabled ${type}s:"
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 "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
echo "RANLIB=$ranlib" >> config.mak
-echo "LDCONFIG=$LDCONFIG" >> config.mak
echo "LN_S=$ln_s" >> config.mak
enabled dostrip &&
echo "STRIP=$strip" >> config.mak ||