}
pushvar(){
- for var in $*; do
- eval level=\${${var}_level:=0}
- eval ${var}_${level}="\$$var"
- eval ${var}_level=$(($level+1))
+ for pvar in $*; do
+ eval level=\${${pvar}_level:=0}
+ eval ${pvar}_${level}="\$$pvar"
+ eval ${pvar}_level=$(($level+1))
done
}
popvar(){
- for var in $*; do
- eval level=\${${var}_level:-0}
+ for pvar in $*; do
+ eval level=\${${pvar}_level:-0}
test $level = 0 && continue
eval level=$(($level-1))
- eval $var="\${${var}_${level}}"
- eval ${var}_level=$level
- eval unset ${var}_${level}
+ eval $pvar="\${${pvar}_${level}}"
+ eval ${pvar}_level=$level
+ eval unset ${pvar}_${level}
done
}
}
enable_deep_weak(){
- do_enable_deep $*
- enable_weak $*
+ for var; do
+ disabled $var && continue
+ pushvar var
+ do_enable_deep $var
+ popvar var
+ enable_weak $var
+ done
}
enabled(){
cdio_paranoia_h
cdio_paranoia_paranoia_h
closesocket
- cmov
CommandLineToArgvW
cpunop
CryptGenRandom
gettimeofday
gnu_as
gsm_h
+ i686
ibm_asm
inet_aton
io_h
vis_deps="sparc"
-x86_64_suggest="cmov fast_cmov"
+x86_64_suggest="fast_cmov i686"
amd3dnow_deps="mmx"
amd3dnowext_deps="amd3dnow"
ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
ac3_encoder_select="mdct ac3dsp dsputil"
ac3_fixed_encoder_select="mdct ac3dsp dsputil"
+aic_decoder_select="dsputil golomb"
alac_encoder_select="lpc"
als_decoder_select="dsputil"
amrnb_decoder_select="lsp"
amrwb_decoder_select="lsp"
-amv_decoder_select="dsputil"
+amv_decoder_select="dsputil hpeldsp"
ape_decoder_select="dsputil"
asv1_decoder_select="dsputil"
asv1_encoder_select="dsputil"
imc_decoder_select="dsputil fft mdct sinewin"
indeo3_decoder_select="hpeldsp"
interplay_video_decoder_select="hpeldsp"
-jpegls_decoder_select="dsputil golomb"
+jpegls_decoder_select="dsputil golomb hpeldsp"
jpegls_encoder_select="golomb"
jv_decoder_select="dsputil"
lagarith_decoder_select="dsputil"
loco_decoder_select="golomb"
mdec_decoder_select="dsputil error_resilience mpegvideo"
mimic_decoder_select="dsputil hpeldsp"
-mjpeg_decoder_select="dsputil"
-mjpegb_decoder_select="dsputil"
+mjpeg_decoder_select="dsputil hpeldsp"
+mjpegb_decoder_select="dsputil hpeldsp"
mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
mlp_decoder_select="dsputil mlp_parser"
motionpixels_decoder_select="dsputil"
msmpeg4v3_decoder_select="h263_decoder"
msmpeg4v3_encoder_select="h263_encoder"
mss2_decoder_select="error_resilience vc1_decoder"
-mxpeg_decoder_select="dsputil"
+mxpeg_decoder_select="dsputil hpeldsp"
nellymoser_decoder_select="mdct sinewin"
nellymoser_encoder_select="audio_frame_queue mdct sinewin"
nuv_decoder_select="dsputil lzo"
rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
shorten_decoder_select="golomb"
sipr_decoder_select="lsp"
-sp5x_decoder_select="dsputil"
+sp5x_decoder_select="dsputil hpeldsp"
svq1_decoder_select="hpeldsp"
-svq1_encoder_select="aandcttables dsputil mpegvideoenc"
-svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel mpegvideo videodsp"
+svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc"
+svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp"
svq3_decoder_suggest="error_resilience zlib"
tak_decoder_select="dsputil"
theora_decoder_select="vp3_decoder"
tiff_decoder_suggest="zlib"
tiff_encoder_suggest="zlib"
-thp_decoder_select="dsputil"
+thp_decoder_select="dsputil hpeldsp"
truehd_decoder_select="mlp_decoder"
truemotion2_decoder_select="dsputil"
truespeech_decoder_select="dsputil"
# programs
avconv_deps="avcodec avfilter avformat avresample swscale"
-avconv_select="aformat_filter anull_filter asyncts_filter format_filter
+avconv_select="aformat_filter anull_filter asyncts_filter atrim_filter format_filter
fps_filter null_filter resample_filter scale_filter
- setpts_filter"
+ setpts_filter trim_filter"
avplay_deps="avcodec avformat avresample swscale sdl"
avplay_select="rdft"
avprobe_deps="avcodec avformat"
add_cflags -fsanitize=thread -pie
add_ldflags -fsanitize=thread -pie
;;
+ valgrind-memcheck)
+ target_exec_default="valgrind"
+ target_exec_args="--track-origins=yes --leak-check=full"
+ ;;
msvc)
cc_default="c99wrap cl"
ld_default="c99wrap link"
;;
esac
-set_default arch cc pkg_config sysinclude target_os
+set_default arch cc pkg_config sysinclude target_exec target_os
enabled cross_compile || host_cc_default=$cc
set_default host_cc
cpuflags="-march=$cpu"
disable mmx
;;
- # targets that do NOT support conditional mov (cmov)
+ # targets that do NOT support nopl and conditional mov (cmov)
pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
cpuflags="-march=$cpu"
- disable cmov
+ disable i686
;;
- # targets that do support conditional mov (cmov)
+ # targets that do support nopl and conditional mov (cmov)
i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*)
cpuflags="-march=$cpu"
- enable cmov
+ enable i686
enable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
pentium4|pentium4m|prescott|nocona)
cpuflags="-march=$cpu"
- enable cmov
+ enable i686
disable fast_cmov
;;
esac
esac
enable $subarch
-enabled spic && enable pic
+enabled spic && enable_weak pic
# OS specific
case $target_os in
elif enabled arm; then
LIBTARGET=arm-wince
fi
+ check_ldflags -Wl,--nxcompat
+ check_ldflags -Wl,--dynamicbase
shlibdir_default="$bindir_default"
SLIBPREF=""
SLIBSUF=".dll"
dlltool="${cross_prefix}dlltool"
ranlib=:
enable dos_paths
+ disable pic
;;
win32|win64)
if enabled shared; then
objformat="win32"
ranlib=:
enable dos_paths
+ disable pic
;;
cygwin*)
target_os=cygwin
SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
objformat="win32"
enable dos_paths
+ disable pic
;;
*-dos|freedos|opendos)
network_extralibs="-lsocket"
echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIGURATION)" >config.fate
-check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
+check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
set_default $PATHS_LIST
set_default nm
disabled optimizations || check_cflags -fomit-frame-pointer
-enable_pic() {
+enable_weak_pic() {
+ disabled pic && return
enable pic
add_cppflags -DPIC
add_cflags -fPIC
add_asflags -fPIC
}
-enabled pic && enable_pic
+enabled pic && enable_weak_pic
check_cc <<EOF || die "Symbol mangling check failed."
int ff_extern;
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
- enabled_all armv6t2 shared !pic && enable_pic
+ enabled_all armv6t2 shared !pic && enable_weak_pic
elif enabled mips; then
check_yasm "vextractf128 xmm0, ymm0, 0" && enable yasm ||
die "yasm not found, use --disable-yasm for a crippled build"
check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
- check_yasm "CPU amdnop" && enable cpunop
+ check_yasm "CPU amdnop" && enabled i686 && enable cpunop
fi
case "$cpu" in
check_func fcntl
check_func fork
+check_func_headers stdlib.h getenv
check_func gethrtime
check_func getopt
check_func getrusage
echo "SSSE3 enabled ${ssse3-no}"
echo "AVX enabled ${avx-no}"
echo "FMA4 enabled ${fma4-no}"
- echo "CMOV enabled ${cmov-no}"
+ echo "i686 features enabled ${i686-no}"
echo "CMOV is fast ${fast_cmov-no}"
echo "EBX available ${ebx_available-no}"
echo "EBP available ${ebp_available-no}"
HOSTCC_C=$HOSTCC_C
HOSTCC_O=$HOSTCC_O
HOSTLD_O=$HOSTLD_O
-TARGET_EXEC=$target_exec
+TARGET_EXEC=$target_exec $target_exec_args
TARGET_PATH=$target_path
LIBS-avplay=$sdl_libs
CFLAGS-avplay=$sdl_cflags
printf '' >$TMPASM
fi
+enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
+
print_config ARCH_ "$config_files" $ARCH_LIST
print_config HAVE_ "$config_files" $HAVE_LIST
print_config CONFIG_ "$config_files" $CONFIG_LIST \
EOF
}
+lavfi_libs="libavutil = $LIBAVUTIL_VERSION"
+enabled movie_filter && prepend lavfi_libs "libavformat >= $LIBAVFORMAT_VERSION, libavcodec >= $LIBAVCODEC_VERSION,"
+enabled resample_filter && prepend lavfi_libs "libavresample >= $LIBAVRESAMPLE_VERSION,"
+enabled scale_filter && prepend lavfi_libs "libswscale >= $LIBSWSCALE_VERSION,"
+
pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM"
pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
-pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs"
pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"