--enable-postproc enable GPLed postprocessing support [no]
--disable-avfilter disable video filter support [no]
--enable-avfilter-lavf video filters dependent on avformat [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]
--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
echo "$@"
}
+warn(){
+ log "WARNING: $*"
+ WARNINGS="${WARNINGS}WARNING: $*\n"
+}
+
die(){
echolog "$@"
cat <<EOF
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 $*"
-}
-
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
fft
golomb
gpl
- gprof
gray
h264dsp
hardcoded_tables
nonfree
pic
postproc
- powerpc_perf
rdft
runtime_cpudetect
shared
"
THREADS_LIST='
- os2threads
pthreads
w32threads
'
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
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"
png_encoder_select="zlib"
qcelp_decoder_select="lsp"
qdm2_decoder_select="mdct rdft"
-real_144_encoder_select="lpc"
+ra_144_encoder_select="lpc"
rv10_decoder_select="h263_decoder"
rv10_encoder_select="h263_encoder"
rv20_decoder_select="h263_decoder"
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 rdft dct"
+wmavoice_decoder_select="lsp rdft dct mdct"
wmv1_decoder_select="h263_decoder"
wmv1_encoder_select="h263_encoder"
wmv2_decoder_select="h263_decoder"
ranlib="ranlib"
strip_default="strip"
yasmexe="yasm"
+nogas=":"
nm_opts='-g'
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'
--enable-debug=*) debuglevel="$optval"
;;
--disable-everything)
- map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
+ map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
;;
--enable-*=*|--disable-*=*)
eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
}
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'
}
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}
;;
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
;;
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"
elif enabled arm; then
check_cflags -marm
+ nogas=die
check_ld <<EOF && enable vfp_args
__asm__ (".eabi_attribute 28, 1");
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 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
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 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 && require librtmp librtmp/rtmp.h RTMP_Init $(pkg-config --libs librtmp)
+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 libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
enabled libvpx && require2 libvpx "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_dec_init_ver" -lvpx &&
require2 libvpx "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver" -lvpx
-enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm &&
+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
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
-
enabled_any $THREADS_LIST && enable threads
check_deps $CONFIG_LIST \
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}"
cp_if_changed $TMPH libavutil/avconfig.h
+test -n "$WARNINGS" && printf "\n$WARNINGS"
+
# build pkg-config files
pkgconfig_generate(){