Standard options:
--help print this message
- --logfile=FILE log tests and output to FILE [config.err]
+ --logfile=FILE log tests and output to FILE [config.log]
--disable-logging do not log configure debug information
--prefix=PREFIX install in PREFIX [$prefix]
--bindir=DIR install binaries in DIR [PREFIX/bin]
--disable-avformat disable libavformat build
--disable-swscale disable libswscale build
--enable-postproc enable GPLed postprocessing support [no]
- --enable-avfilter video filter support [no]
+ --disable-avfilter disable video filter support [no]
--enable-avfilter-lavf video filters dependent on avformat [no]
- --enable-beosthreads use BeOS threads [no]
- --enable-os2threads use OS/2 threads [no]
- --enable-pthreads use pthreads [no]
+ --disable-pthreads disable pthreads [auto]
--enable-w32threads use Win32 threads [no]
--enable-x11grab enable X11 grabbing [no]
--disable-network disable network support [no]
--enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
--enable-hardcoded-tables use hardcoded tables instead of runtime generation
--enable-memalign-hack emulate memalign, interferes with memory debuggers
- --enable-beos-netserver enable BeOS netserver
+ --disable-everything disable all components listed below
--disable-encoder=NAME disable encoder NAME
--enable-encoder=NAME enable encoder NAME
--disable-encoders disable all encoders
and libraw1394 [no]
--enable-libdirac enable Dirac support via libdirac [no]
--enable-libfaac enable FAAC support via libfaac [no]
- --enable-libfaad enable FAAD support via libfaad [no]
- --enable-libfaadbin open libfaad.so.0 at runtime [no]
--enable-libgsm enable GSM support via libgsm [no]
--enable-libmp3lame enable MP3 encoding via libmp3lame [no]
--enable-libnut enable NUT (de)muxing via libnut,
native (de)muxer exists [no]
--enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]
+ --enable-librtmp enable RTMP[E] support via librtmp [no]
--enable-libschroedinger enable Dirac support via libschroedinger [no]
--enable-libspeex enable Speex decoding via libspeex [no]
--enable-libtheora enable Theora encoding via libtheora [no]
--enable-libvorbis enable Vorbis encoding via libvorbis,
native implementation exists [no]
+ --enable-libvpx enable VP8 support via libvpx [no]
--enable-libx264 enable H.264 encoding via x264 [no]
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
--target-exec=CMD command to run executables on target
--target-path=DIR path to view of build directory on target
--nm=NM use nm tool
+ --ar=AR use archive tool AR [$ar_default]
--as=AS use assembler AS [$as_default]
--cc=CC use C compiler CC [$cc_default]
--ld=LD use linker LD
--arch=ARCH select architecture [$arch]
--cpu=CPU select the minimum required CPU (affects
instruction selection, may crash on older CPUs)
- --enable-powerpc-perf enable performance report on PPC
- (requires enabling PMC)
--disable-asm disable all assembler optimizations
--disable-altivec disable AltiVec optimizations
--disable-amd3dnow disable 3DNow! optimizations
Developer options (useful when working on FFmpeg itself):
--disable-debug disable debugging symbols
--enable-debug=LEVEL set the debug level [$debuglevel]
- --enable-gprof enable profiling with gprof [$gprof]
--disable-optimizations disable compiler optimizations
--enable-extra-warnings enable more compiler warnings
--disable-stripping disable stripping of executables and shared libraries
+ --samples=PATH location of test samples for FATE
NOTE: Object files are built at the place where configure is launched.
EOF
exit 0
}
+quotes='""'
+
log(){
echo "$@" >> $logfile
}
echo "$@"
}
+warn(){
+ log "WARNING: $*"
+ WARNINGS="${WARNINGS}WARNING: $*\n"
+}
+
die(){
echolog "$@"
cat <<EOF
map(){
m=$1
shift
- for _; do; eval $m; done
+ for v; do eval $m; done
}
set_all(){
done
}
-flags_saved(){
- (: ${SAVE_CFLAGS?}) 2> /dev/null
-}
-
-save_flags(){
- flags_saved && return
- SAVE_CFLAGS="$CFLAGS"
- SAVE_LDFLAGS="$LDFLAGS"
- SAVE_extralibs="$extralibs"
-}
-
-restore_flags(){
- flags_saved || return
- CFLAGS="$SAVE_CFLAGS"
- LDFLAGS="$SAVE_LDFLAGS"
- extralibs="$SAVE_extralibs"
- unset SAVE_CFLAGS
- unset SAVE_LDFLAGS
- unset SAVE_extralibs
-}
-
-temp_cflags(){
- save_flags
- CFLAGS="$CFLAGS $*"
-}
-
-temp_ldflags(){
- save_flags
- LDFLAGS="$LDFLAGS $*"
-}
-
-temp_extralibs(){
- save_flags
- extralibs="$extralibs $*"
+print_enabled(){
+ test "$1" = -n && end=" " && shift || end="\n"
+ suf=$1
+ shift
+ for v; do
+ enabled $v && printf "%s$end" ${v%$suf};
+ done
}
append(){
var=$1
shift
- flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
eval "$var=\"\$$var $*\""
}
+prepend(){
+ var=$1
+ shift
+ eval "$var=\"$* \$$var\""
+}
+
add_cppflags(){
append CPPFLAGS $($filter_cppflags "$@")
}
}
add_extralibs(){
- append extralibs "$@"
+ prepend extralibs "$@"
}
check_cmd(){
header="$1"
func="$2"
shift 2
- temp_extralibs "$@"
- check_header $header && check_func $func && add_extralibs "$@"
- err=$?
- restore_flags
- return $err
+ check_header $header && check_func $func "$@" && add_extralibs "$@"
}
check_lib2(){
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
-}
-
check_host_cc(){
log check_host_cc "$@"
cat > $TMPC
avfilter_lavf
avformat
avisynth
- beos_netserver
bzlib
dct
doc
+ dwt
dxva2
fastdiv
ffmpeg
fft
golomb
gpl
- gprof
gray
+ h264dsp
hardcoded_tables
libdc1394
libdirac
libfaac
- libfaad
- libfaadbin
libgsm
libmp3lame
libnut
libopencore_amrnb
libopencore_amrwb
libopenjpeg
+ librtmp
libschroedinger
libspeex
libtheora
libvorbis
+ libvpx
libx264
libxvid
lpc
nonfree
pic
postproc
- powerpc_perf
rdft
runtime_cpudetect
shared
"
THREADS_LIST='
- beosthreads
- os2threads
pthreads
w32threads
'
HAVE_LIST_PUB='
bigendian
+ fast_unaligned
'
HAVE_LIST="
fast_64bit
fast_clz
fast_cmov
- fast_unaligned
+ fcntl
fork
getaddrinfo
gethrtime
GetProcessMemoryInfo
GetProcessTimes
getrusage
+ gnu_as
struct_rusage_ru_maxrss
+ ibm_asm
inet_aton
inline_asm
isatty
libdc1394_1
libdc1394_2
llrint
+ llrintf
local_aligned_16
local_aligned_8
log2
soundcard_h
poll_h
setrlimit
+ strerror_r
struct_addrinfo
struct_ipv6_mreq
struct_sockaddr_in6
struct_sockaddr_sa_len
struct_sockaddr_storage
+ symver
+ symver_gnu_asm
+ symver_asm_label
sys_mman_h
sys_resource_h
sys_select_h
CMDLINE_SET="
$PATHS_LIST
+ ar
arch
as
build_suffix
logfile
malloc_prefix
nm
+ samples
source_path
strip
sysinclude
need_memalign="altivec neon sse"
inline_asm_deps="!tms470"
+symver_if_any="symver_asm_label symver_gnu_asm"
+
# subsystems
+dct_select="rdft"
mdct_select="fft"
rdft_select="fft"
# decoders / encoders / hardware accelerators
-aac_decoder_select="mdct rdft aac_parser"
+aac_decoder_select="mdct rdft"
aac_encoder_select="mdct"
ac3_decoder_select="mdct ac3_parser"
alac_encoder_select="lpc"
h261_encoder_select="aandct"
h263_decoder_select="h263_parser"
h263_encoder_select="aandct"
-h263_vaapi_hwaccel_deps="va_va_h"
h263_vaapi_hwaccel_select="vaapi h263_decoder"
h263i_decoder_select="h263_decoder"
h263p_encoder_select="h263_encoder"
-h264_decoder_select="golomb"
+h264_decoder_select="golomb h264dsp"
h264_dxva2_hwaccel_deps="dxva2api_h"
h264_dxva2_hwaccel_select="dxva2 h264_decoder"
-h264_vaapi_hwaccel_deps="va_va_h"
h264_vaapi_hwaccel_select="vaapi"
-h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
h264_vdpau_decoder_select="vdpau h264_decoder"
imc_decoder_select="fft mdct"
jpegls_decoder_select="golomb"
loco_decoder_select="golomb"
mjpeg_encoder_select="aandct"
mlp_decoder_select="mlp_parser"
+mp1float_decoder_select="dct"
+mp2float_decoder_select="dct"
+mp3adufloat_decoder_select="dct"
+mp3float_decoder_select="dct"
+mp3on4float_decoder_select="dct"
mpeg1video_encoder_select="aandct"
mpeg2video_encoder_select="aandct"
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
mpeg4_encoder_select="h263_encoder"
-mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
-mpeg1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
-mpeg2_vaapi_hwaccel_deps="va_va_h"
+mpeg2_dxva2_hwaccel_deps="dxva2api_h"
+mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
-mpeg4_vaapi_hwaccel_deps="va_va_h"
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
-mpeg4_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
mpeg_xvmc_decoder_select="mpegvideo_decoder"
png_encoder_select="zlib"
qcelp_decoder_select="lsp"
qdm2_decoder_select="mdct rdft"
+ra_144_encoder_select="lpc"
rv10_decoder_select="h263_decoder"
rv10_encoder_select="h263_encoder"
rv20_decoder_select="h263_decoder"
rv20_encoder_select="h263_encoder"
-rv30_decoder_select="golomb"
-rv40_decoder_select="golomb"
+rv30_decoder_select="golomb h264dsp"
+rv40_decoder_select="golomb h264dsp"
shorten_decoder_select="golomb"
sipr_decoder_select="lsp"
-snow_encoder_select="aandct"
+snow_decoder_select="dwt"
+snow_encoder_select="aandct dwt"
sonic_decoder_select="golomb"
sonic_encoder_select="golomb"
sonic_ls_encoder_select="golomb"
svq1_encoder_select="aandct"
-svq3_decoder_select="golomb"
+svq3_decoder_select="golomb h264dsp"
svq3_decoder_suggest="zlib"
theora_decoder_select="vp3_decoder"
tiff_decoder_suggest="zlib"
vc1_decoder_select="h263_decoder"
vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
-vc1_vaapi_hwaccel_deps="va_va_h"
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
-vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
vc1_vdpau_decoder_select="vdpau vc1_decoder"
vorbis_decoder_select="mdct"
vorbis_encoder_select="mdct"
vp6a_decoder_select="vp6_decoder"
vp6f_decoder_select="vp6_decoder"
+vp8_decoder_select="h264dsp"
wmapro_decoder_select="mdct"
wmav1_decoder_select="mdct"
wmav1_encoder_select="mdct"
wmav2_decoder_select="mdct"
wmav2_encoder_select="mdct"
-wmavoice_decoder_select="lsp"
+wmavoice_decoder_select="lsp rdft dct mdct"
wmv1_decoder_select="h263_decoder"
wmv1_encoder_select="h263_encoder"
wmv2_decoder_select="h263_decoder"
zmbv_decoder_select="zlib"
zmbv_encoder_select="zlib"
-# parsers
-h264_parser_select="golomb"
+vaapi_deps="va_va_h"
+vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
-# bitstream_filters
-aac_adtstoasc_bsf_select="aac_parser"
+# parsers
+h264_parser_select="golomb h264dsp"
# external libraries
libdirac_decoder_deps="libdirac !libschroedinger"
libdirac_encoder_deps="libdirac"
libfaac_encoder_deps="libfaac"
-libfaad_decoder_deps="libfaad"
-libfaadbin_decoder_extralibs='$ldl'
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
libgsm_ms_decoder_deps="libgsm"
libspeex_decoder_deps="libspeex"
libtheora_encoder_deps="libtheora"
libvorbis_encoder_deps="libvorbis"
+libvpx_decoder_deps="libvpx"
+libvpx_encoder_deps="libvpx"
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
rtsp_muxer_deps="sdp_demuxer"
rtsp_muxer_select="rtp_muxer"
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
+sdp_demuxer_select="asf_demuxer rm_demuxer"
spdif_muxer_select="aac_parser"
tg2_muxer_select="mov_muxer"
tgp_muxer_select="mov_muxer"
alsa_indev_extralibs="-lasound"
alsa_outdev_deps="alsa_asoundlib_h"
alsa_outdev_extralibs="-lasound"
-audio_beos_indev_deps="audio_beos"
-audio_beos_indev_extralibs="-lmedia -lbe"
-audio_beos_outdev_deps="audio_beos"
-audio_beos_outdev_extralibs="-lmedia -lbe"
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
dv1394_indev_deps="dv1394 dv_demuxer"
jack_indev_deps="jack_jack_h"
oss_outdev_deps_any="soundcard_h sys_soundcard_h"
v4l_indev_deps="linux_videodev_h"
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
-vfwcap_indev_deps="capCreateCaptureWindow"
+vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
vfwcap_indev_extralibs="-lavicap32"
x11_grab_device_indev_deps="x11grab XShmCreateImage"
x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
gopher_protocol_deps="network"
http_protocol_deps="network"
http_protocol_select="tcp_protocol"
-rtmp_protocol_deps="tcp_protocol"
-rtp_protocol_deps="udp_protocol"
+mmst_protocol_deps="network"
+rtmp_protocol_select="tcp_protocol"
+rtp_protocol_select="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"
# programs
ffmpeg_deps="avcodec avformat swscale"
+ffmpeg_select="buffer_filter"
ffplay_deps="avcodec avformat swscale sdl"
ffplay_select="rdft"
ffprobe_deps="avcodec avformat"
doc_deps="texi2html"
+# tests
+
+test_deps(){
+ suf1=$1
+ suf2=$2
+ shift 2
+ for v; do
+ dep=${v%=*}
+ tests=${v#*=}
+ for name in ${tests}; do
+ eval ${name}_test_deps="'${dep}$suf1 ${dep}$suf2'"
+ done
+ done
+}
+
+test_deps _encoder _decoder \
+ ac3 \
+ adpcm_g726=g726 \
+ adpcm_ima_qt \
+ adpcm_ima_wav \
+ adpcm_ms \
+ adpcm_swf \
+ adpcm_yamaha=adpcm_yam \
+ alac \
+ asv1 \
+ asv2 \
+ bmp \
+ dnxhd="hdxhd_1080i dnxhd_720p dnxhd_720p_rd" \
+ dvvideo="dv dv50" \
+ ffv1 \
+ flac \
+ flashsv \
+ flv \
+ gif \
+ h261 \
+ h263="h263 h263p" \
+ huffyuv \
+ jpegls \
+ mjpeg="jpg mjpeg ljpeg" \
+ mp2 \
+ mpeg1video="mpeg mpeg1b" \
+ mpeg2video="mpeg2 mpeg2thread" \
+ mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc" \
+ msmpeg4v3=msmpeg4 \
+ msmpeg4v2 \
+ pbm=pbmpipe \
+ pcx \
+ pgm="pgm pgmpipe" \
+ ppm="ppm ppmpipe" \
+ rawvideo="rgb yuv" \
+ roq \
+ rv10 \
+ rv20 \
+ sgi \
+ snow="snow snowll" \
+ svq1 \
+ targa=tga \
+ tiff \
+ wmav1 \
+ wmav2 \
+ wmv1 \
+ wmv2 \
+
+test_deps _muxer _demuxer \
+ aiff \
+ pcm_alaw=alaw \
+ asf \
+ au \
+ avi \
+ dv=dv_fmt \
+ ffm \
+ flv=flv_fmt \
+ gxf \
+ matroska=mkv \
+ mmf \
+ mov \
+ pcm_mulaw=mulaw \
+ mxf \
+ nut \
+ ogg \
+ rawvideo=pixfmt \
+ rm \
+ swf \
+ mpegts=ts \
+ voc \
+ wav \
+ yuv4mpegpipe=yuv4mpeg \
+
+mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
+
# default parameters
-logfile="config.err"
+logfile="config.log"
# installation paths
prefix_default="/usr/local"
shlibdir_default="$libdir_default"
# toolchain
-ar="ar"
+ar_default="ar"
cc_default="gcc"
cc_version=\"unknown\"
host_cc_default="gcc"
ranlib="ranlib"
strip_default="strip"
yasmexe="yasm"
+nogas=":"
nm_opts='-g'
# configurable options
enable avcodec
enable avdevice
+enable avfilter
enable avformat
enable avutil
enable asm
target_path='$(CURDIR)'
-# gcc stupidly only outputs the basename of targets with -MM, but we need the
-# full relative path for objects in subdirectories for non-recursive Make.
+# since the object filename is not given with the -MM flag, the compiler
+# is only able to print the basename, and we must add the path ourselves
DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
-enable $ARCH_EXT_LIST \
- $DECODER_LIST \
- $ENCODER_LIST \
- $HWACCEL_LIST \
- $PARSER_LIST \
- $BSF_LIST \
- $DEMUXER_LIST \
- $MUXER_LIST \
- $FILTER_LIST \
- $PROTOCOL_LIST \
- $INDEV_LIST \
- $OUTDEV_LIST \
+find_tests(){
+ map 'echo ${v}_test' $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]')
+}
+
+ACODEC_TESTS=$(find_tests acodec)
+VCODEC_TESTS=$(find_tests vsynth1)
+LAVF_TESTS=$(find_tests lavf)
+
+pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST))
+
+for n in $COMPONENT_LIST; do
+ v=$(toupper ${n%s})_LIST
+ eval enable \$$v
+ eval ${n}_if_any="\$$v"
+done
+
+enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS
die_unknown(){
echo "Unknown option \"$1\"."
--enable-debug=*) debuglevel="$optval"
;;
--disable-everything)
- map 'eval disable \${$(toupper ${_%s})_LIST}' $COMPONENT_LIST
+ map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
;;
--enable-*=*|--disable-*=*)
eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
set_default arch target_os
-ar="${cross_prefix}${ar}"
+ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
nm_default="${cross_prefix}${nm_default}"
ranlib="${cross_prefix}${ranlib}"
AS_DEPFLAGS='-MMD'
speed_cflags='-O3'
size_cflags='-Os'
+ noopt_cflags='-O1'
elif $cc -v 2>&1 | grep -q xlc; then
cc_type=xlc
cc_version="AV_STRINGIFY(__IBMC__)"
}
elif $cc -v 2>&1 | grep -q clang; then
cc_type=clang
- cc_version=__VERSION__
+ $cc -dM -E $TMPC | grep -q __clang_version__ &&
+ cc_version=__clang_version__ || cc_version=__VERSION__
CC_DEPFLAGS='-MMD'
AS_DEPFLAGS='-MMD'
speed_cflags='-O3'
-march=*|-mcpu=*)
case "${flag#*=}" in
native) echo -xtarget=native ;;
- v9) echo -xarch=sparc ;;
+ v9|niagara) echo -xarch=sparc ;;
ultrasparc) echo -xarch=sparcvis ;;
- ultrasparc3|niagara*) echo -xarch=sparcvis2 ;;
+ ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
i586|pentium) echo -xchip=pentium ;;
i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
pentium3*|c3-2) echo -xtarget=pentium3 ;;
}
fi
-test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
+test -n "$cc_type" && enable $cc_type ||
+ warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
: ${as_default:=$cc}
: ${dep_cc_default:=$cc}
: ${ld_default:=$cc}
-set_default as dep_cc ld
+set_default ar as dep_cc ld
test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
;;
esac
-is_in $arch $ARCH_LIST || echo "WARNING: unknown arch $arch"
+is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
enable $arch
# Add processor-specific flags
disable cmov
;;
# targets that do support conditional mov (cmov)
- i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
+ i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona)
cpuflags="-march=$cpu"
enable cmov
enable fast_cmov
elif enabled sparc; then
case $cpu in
+ niagara)
+ cpuflags="-mcpu=$cpu"
+ disable vis
+ ;;
sparc64)
cpuflags="-mcpu=v9"
;;
enable $subarch
enabled spic && enable pic
-check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
# OS specific
case $target_os in
- beos|haiku|zeta)
- prefix_default="$HOME/config"
- # 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"
- disable mmx
- ;;
- *20010315*) echo "BeBits gcc"
- add_cflags -fno-expensive-optimizations
- ;;
- esac
- SHFLAGS=-nostart
- # enable BeOS things
- enable audio_beos
- # no need for libm, but the inet stuff
- # Check for BONE
- # XXX: actually should check for NOT net_server
- if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
- network_extralibs="-lbind -lsocket"
- else
- enable beos_netserver
- network_extralibs="-lnet"
- fi ;;
+ haiku)
+ prefix_default="/boot/common"
+ network_extralibs="-lnetwork"
+ ;;
sunos)
FFSERVERLDFLAGS=""
SHFLAGS='-shared -Wl,-h,$$(@F)'
netbsd)
oss_indev_extralibs="-lossaudio"
oss_outdev_extralibs="-lossaudio"
+ add_cppflags -D_XOPEN_SOURCE=600
;;
openbsd)
enable malloc_aligned
enable malloc_aligned
;;
bsd/os)
- osextralibs="-lpoll -lgnugetopt"
+ add_extralibs -lpoll -lgnugetopt
strip="strip -d"
;;
darwin)
enable malloc_aligned
+ gas="gas-preprocessor.pl $cc"
+ enabled ppc && add_asflags -force_cpusubtype_ALL
SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
- strip="strip -x"
- FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
+ strip="${strip} -x"
+ add_ldflags -Wl,-dynamic,-search_paths_first
SLIBSUF=".dylib"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
objformat="win32"
enable dos_paths
check_cflags -fno-common
- if ! enabled x86_64; then
- check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
+ check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \
+ || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
die "ERROR: MinGW runtime version must be >= 3.15."
- enabled_any avisynth vfwcap_indev &&
- { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
- die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
- fi
;;
cygwin*)
target_os=cygwin
os/2*)
strip="lxlite"
ln_s="cp -f"
- FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
+ add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
FFSERVERLDFLAGS=""
LIBSUF="_s.a"
;;
esac
-set_default $PATHS_LIST
-
-add_extralibs $osextralibs
+check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
-# Combine FFLDFLAGS and the LDFLAGS environment variable.
-LDFLAGS="$FFLDFLAGS $LDFLAGS"
+set_default $PATHS_LIST
# we need to build at least one lib type
if ! enabled_any static shared; then
disabled static && LIBNAME=""
-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
- test $? = 0 && enable libfaad2
- else
- die "FAAD test failed."
- fi
-fi
-
-
die_license_disabled() {
enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
}
-die_license_disabled gpl libfaad2
die_license_disabled gpl libx264
die_license_disabled gpl libxvid
die_license_disabled gpl postproc
elif enabled arm; then
check_cflags -marm
+ nogas=die
check_ld <<EOF && enable vfp_args
__asm__ (".eabi_attribute 28, 1");
enabled_all armv6t2 shared !pic && enable_pic
-elif enabled ia64; then
-
- # HACK: currently fails to build if .bss is > 4MB and shared libs are built
- enabled shared && enable_weak hardcoded_tables
-
elif enabled mips; then
check_asm loongson '"dmult.g $1, $2, $3"'
enable local_aligned_8 local_aligned_16
- check_asm dcbzl '"dcbzl 0, 1"'
+ check_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
+ check_asm ibm_asm '"add 0, 0, 0"'
check_asm ppc4xx '"maclhw r10, r11, r12"'
check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
# AltiVec flags: The FSF version of GCC differs from the Apple version
if enabled altivec; then
+ nogas=warn
check_cflags -maltivec -mabi=altivec &&
{ check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
check_cflags -faltivec
case "$objformat" in
elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
esac
- disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
+ if ! disabled yasm; then
+ check_yasm "pabsw xmm0, xmm0" && enable yasm ||
+ warn "yasm not found, performance will suffer"
+ fi
case "$cpu" in
athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
fi
+if enabled asm; then
+ as=${gas:=$as}
+ check_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' ||
+ $nogas "GNU assembler not found, install gas-preprocessor"
+fi
+
if check_func dlopen; then
ldl=
elif check_func dlopen -ldl; then
# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
+check_func fcntl
check_func fork
check_func getaddrinfo $network_extralibs
check_func gethrtime
check_func mkstemp
check_func ${malloc_prefix}posix_memalign && enable posix_memalign
check_func setrlimit
+check_func strerror_r
check_func_headers io.h setmode
check_func_headers lzo/lzo1x.h lzo1x_999_compress
check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
# check for some common methods of building with pthread support
# do this before the optional library checks as some of them require pthreads
-if enabled pthreads; then
+if ! disabled pthreads && ! enabled w32threads; then
+ enable pthreads
if check_func pthread_create; then
:
elif check_func pthread_create -pthread; then
elif check_func pthread_create -lpthreadGC2; then
add_extralibs -lpthreadGC2
elif ! check_lib pthread.h pthread_create -lpthread; then
- die "ERROR: can't find pthreads library"
+ disable pthreads
fi
fi
done
check_lib math.h sin -lm
-check_lib va/va.h vaInitialize -lva
+disabled vaapi || check_lib va/va.h vaInitialize -lva
check_mathfunc exp2
check_mathfunc exp2f
check_mathfunc llrint
+check_mathfunc llrintf
check_mathfunc log2
check_mathfunc log2f
check_mathfunc lrint
require libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) &&
require libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
-enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
enabled libgsm && require libgsm gsm/gsm.h gsm_create -lgsm
-enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm
+enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame
enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
-enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb -lm
-enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb -lm
+enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
+enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
+enabled librtmp && { check_lib librtmp/rtmp.h RTMP_Socket $(pkg-config --libs librtmp) ||
+ die "ERROR: librtmp not found or RTMP_Socket() missing, librtmp version must be >= 2.2.f"; }
enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
-enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm &&
- { check_cpp_condition x264.h "X264_BUILD >= 83" ||
- die "ERROR: libx264 version must be >= 0.83."; }
+enabled libvpx && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx &&
+ check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx ||
+ die "ERROR: libvpx version must be >=0.9.1"; }
+enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
+ { check_cpp_condition x264.h "X264_BUILD >= 98" ||
+ die "ERROR: libx264 version must be >= 0.98."; }
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
check_header sys/videoio.h
check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
+# check that WM_CAP_DRIVER_CONNECT is defined to the proper value
+# w32api 3.12 had it defined wrong
+check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
{ check_header dev/bktr/ioctl_meteor.h &&
check_ldflags -Wl,-Bsymbolic
echo "X{};" > $TMPV
-test_ldflags -Wl,--version-script,$TMPV &&
+if test_ldflags -Wl,--version-script,$TMPV; then
append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
+ check_cc <<EOF && enable symver_asm_label
+void ff_foo(void) __asm__ ("av_foo@VERSION");
+void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
+EOF
+ check_cc <<EOF && enable symver_gnu_asm
+__asm__(".symver ff_foo,av_foo@VERSION");
+void ff_foo(void) {}
+EOF
+fi
if enabled small; then
add_cflags $size_cflags
optimizations="small"
elif enabled optimizations; then
add_cflags $speed_cflags
+else
+ add_cflags $noopt_cflags
fi
check_cflags -fno-math-errno
check_cflags -fno-signed-zeros
add_cflags -msg_disable unreachcode
elif enabled gcc; then
check_cflags -fno-tree-vectorize
- check_cflags -Werror=implicit
+ check_cflags -Werror=implicit-function-declaration
check_cflags -Werror=missing-prototypes
elif enabled clang; then
check_cflags -Qunused-arguments
add_cflags -pds=824 -pds=837
fi
-if enabled gprof; then
- add_cflags -p
- add_ldflags -p
-fi
-
-# Find out if the .align argument is a power of two or not.
-check_asm asmalign_pot '".align 3"'
-
-enabled_any $DECODER_LIST && enable decoders
-enabled_any $ENCODER_LIST && enable encoders
-enabled_any $HWACCEL_LIST && enable hwaccels
-enabled_any $BSF_LIST && enable bsfs
-enabled_any $DEMUXER_LIST && enable demuxers
-enabled_any $MUXER_LIST && enable muxers
-enabled_any $FILTER_LIST && enable filters
-enabled_any $INDEV_LIST && enable indevs
-enabled_any $OUTDEV_LIST && enable outdevs
-enabled_any $PROTOCOL_LIST && enable protocols
-
enabled_any $THREADS_LIST && enable threads
check_deps $CONFIG_LIST \
$INDEV_LIST \
$OUTDEV_LIST \
$PROTOCOL_LIST \
+ $ACODEC_TESTS \
+ $VCODEC_TESTS \
+ $LAVF_TESTS \
-enabled asm || disable $ARCH_LIST $ARCH_EXT_LIST
+enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
echo "install prefix $prefix"
echo "source path $source_path"
echo "C compiler $cc"
-echo ".align is power-of-two $asmalign_pot"
echo "ARCH $arch ($cpu)"
if test "$build_suffix" != ""; then
echo "build suffix $build_suffix"
echo "AltiVec enabled ${altivec-no}"
echo "PPC 4xx optimizations ${ppc4xx-no}"
echo "dcbzl available ${dcbzl-no}"
- echo "performance report ${powerpc_perf-no}"
fi
if enabled sparc; then
echo "VIS enabled ${vis-no}"
fi
-echo "gprof enabled ${gprof-no}"
echo "debug symbols ${debug-no}"
echo "strip symbols ${stripping-no}"
echo "optimizations ${optimizations-no}"
echo "libdc1394 support ${libdc1394-no}"
echo "libdirac enabled ${libdirac-no}"
echo "libfaac enabled ${libfaac-no}"
-echo "libfaad enabled ${libfaad-no}"
-echo "libfaad dlopened ${libfaadbin-no}"
echo "libgsm enabled ${libgsm-no}"
echo "libmp3lame enabled ${libmp3lame-no}"
echo "libnut enabled ${libnut-no}"
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
echo "libopenjpeg enabled ${libopenjpeg-no}"
+echo "librtmp enabled ${librtmp-no}"
echo "libschroedinger enabled ${libschroedinger-no}"
echo "libspeex enabled ${libspeex-no}"
echo "libtheora enabled ${libtheora-no}"
echo "libvorbis enabled ${libvorbis-no}"
+echo "libvpx enabled ${libvpx-no}"
echo "libx264 enabled ${libx264-no}"
echo "libxvid enabled ${libxvid-no}"
echo "zlib enabled ${zlib-no}"
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
echo "Enabled ${type}s:"
eval list=\$$(toupper $type)_LIST
- for part in $list; do
- enabled $part && echo ${part%_*}
- done | sort | pr -3 -t
+ print_enabled '_*' $list | sort | pr -3 -t
echo
done
subdir.mak
doc/texi2pod.pl
libavcodec/Makefile
+ libavcodec/${arch}/Makefile
libavdevice/Makefile
libavfilter/Makefile
libavformat/Makefile
libpostproc/Makefile
libswscale/Makefile
"
- map 'mkdir -p $_' $DIRS;
- map '$ln_s "$source_path/$_" $_' $FILES
+ map 'mkdir -p $v' $DIRS;
+ map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
fi
enabled stripping || strip="echo skipping strip"
SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
+SAMPLES=$samples
EOF
get_version(){
get_version LIBAVUTIL libavutil/avutil.h
get_version LIBAVFILTER libavfilter/avfilter.h
-enabled asmalign_pot || align_shift="1 <<"
-
cat > $TMPH <<EOF
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define CC_TYPE "$cc_type"
#define CC_VERSION $cc_version
#define restrict $_restrict
-#define ASMALIGN(ZEROBITS) ".align $align_shift " #ZEROBITS "\\n\\t"
+#define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "\\n\\t"
#define EXTERN_PREFIX "${extern_prefix}"
#define EXTERN_ASM ${extern_prefix}
EOF
$INDEV_LIST \
$OUTDEV_LIST \
+cat >>config.mak <<EOF
+ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
+VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
+LAVF_TESTS=$(print_enabled -n _test $LAVF_TESTS)
+EOF
+
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
cp_if_changed $TMPH libavutil/avconfig.h
+test -n "$WARNINGS" && printf "\n$WARNINGS"
+
# build pkg-config files
pkgconfig_generate(){