echo " --disable-aandct disable AAN DCT code"
echo " --disable-fft disable FFT code"
echo " --disable-golomb disable Golomb code"
+ echo " --disable-lpc disable LPC code"
echo " --disable-mdct disable MDCT code"
echo " --disable-rdft disable RDFT code"
echo " --disable-vaapi disable VAAPI code"
name="$1"
asm="$2"
shift 2
- check_as "$@" <<EOF && enable $name || disable $name
+ disable $name
+ check_as "$@" <<EOF && enable $name
void foo(void){ __asm__ volatile($asm); }
EOF
}
libvorbis
libx264
libxvid
+ lpc
mdct
memalign_hack
mlib
aac_decoder_select="fft mdct"
aac_encoder_select="fft mdct"
ac3_decoder_select="fft mdct"
+alac_encoder_select="lpc"
atrac3_decoder_select="fft mdct"
cavs_decoder_select="golomb"
cook_decoder_select="fft mdct"
eatqi_decoder_select="aandct"
ffv1_decoder_select="golomb"
flac_decoder_select="golomb"
-flac_encoder_select="golomb"
+flac_encoder_select="golomb lpc"
flashsv_decoder_select="zlib"
flashsv_encoder_select="zlib"
flv_encoder_select="h263_encoder"
mpegtsraw_demuxer_select="mpegts_demuxer"
mxf_d10_muxer_select="mxf_muxer"
psp_muxer_select="mov_muxer"
-redir_demuxer_deps="network"
rtp_muxer_deps="network rtp_protocol"
rtsp_demuxer_deps="sdp_demuxer"
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
tg2_muxer_select="mov_muxer"
tgp_muxer_select="mov_muxer"
+w64_demuxer_deps="wav_demuxer"
# indevs / outdevs
alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
# toolchain
ar="ar"
cc_default="gcc"
+cc_version=\"unknown\"
host_cc_default="gcc"
ln_s="ln -sf"
nm_default="nm"
if $cc -v 2>&1 | grep -qi ^gcc; then
cc_type=gcc
+ cc_version=__VERSION__
if ! $cc -dumpversion | grep -q '^2\.'; then
CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
fi
elif $cc --version 2>/dev/null | grep -q Intel; then
cc_type=icc
+ cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
CC_DEPFLAGS='-MMD'
AS_DEPFLAGS='-MMD'
elif $cc -v 2>&1 | grep -q xlc; then
cc_type=xlc
+ cc_version="AV_STRINGIFY(__IBMC__)"
elif $cc -V 2>/dev/null | grep -q Compaq; then
cc_type=ccc
+ cc_version="AV_STRINGIFY(__DECC_VER)"
DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
debuglevel=3
add_ldflags -Wl,-z,now # calls to libots crash without this
-elif $cc --vsn 2>/dev/null | grep -q RVCT; then
+elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
test -d "$sysroot" || die "No valid sysroot specified."
cc_type=armcc
+ cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
armcc_conf="$PWD/armcc.conf"
$cc --arm_linux_configure \
--arm_linux_config_file="$armcc_conf" \
AS_DEPFLAGS='-MMD'
elif $cc -version 2>/dev/null | grep -q TMS470; then
cc_type=tms470
+ cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
CC_O='-fr=$(@D)'
as_default="${cross_prefix}gcc"
;;
-mfpu=neon) echo --float_support=vfpv3 --neon ;;
-mfpu=vfp) echo --float_support=vfpv2 ;;
- -mfpu=softvfp) echo --float_support=vfplib ;;
+ -msoft-float) echo --float_support=vfplib ;;
-Os) echo -O3 -mf=2 ;;
-O[0-3]) echo $flag -mf=5 ;;
-g) echo -g -mn ;;
esac
done
}
+elif $cc -v 2>&1 | grep -q clang; then
+ cc_type=clang
+ cc_version=__VERSION__
+ CC_DEPFLAGS='-MMD'
+ AS_DEPFLAGS='-MMD'
fi
test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
add_cppflags -I"$sysinclude"
add_ldflags --sysroot="$sysroot"
;;
+ clang)
+ add_cppflags -isysroot="$sysroot"
+ add_ldflags -isysroot="$sysroot"
+ ;;
esac
fi
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)
+ i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
cpuflags="-march=$cpu"
enable cmov
enable fast_cmov
enable fast_64bit
spic=$shared
;;
- i386|i486|i586|i686|i86pc|BePC)
+ i386|i486|i586|i686|i86pc|BePC|x86_64|amd64)
arch="x86"
subarch="x86_32"
enable fast_unaligned
- ;;
- x86_64|amd64)
- arch="x86"
- subarch="x86_32"
- enable cmov
- enable fast_cmov
- enable fast_unaligned
check_cc <<EOF && enable fast_64bit && subarch="x86_64" && spic=$shared
int test[sizeof(char*) - 7];
EOF
+ if test "$subarch" = "x86_64"; then
+ enable cmov
+ enable fast_cmov
+ fi
;;
*)
arch="unknown"
sunos)
FFSERVERLDFLAGS=""
SHFLAGS='-shared -Wl,-h,$$(@F)'
+ enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
network_extralibs="-lsocket -lnsl"
add_cppflags -D__EXTENSIONS__
;;
FFSERVERLDFLAGS=-Wl,-bind_at_load
objformat="macho"
enabled x86_64 && objformat="macho64"
- enabled shared ||
+ enabled_any pic shared ||
{ check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
;;
mingw32*)
disabled optimizations || check_cflags -fomit-frame-pointer
-if enabled pic; then
+enable_pic() {
+ enable pic
add_cppflags -DPIC
add_cflags -fPIC
add_asflags -fPIC
-fi
+}
+
+enabled pic && enable_pic
check_cc <<EOF || die "Symbol mangling check failed."
int ff_extern;
if enabled arm; then
+ check_cflags -marm
+
check_ld <<EOF && enable vfp_args
__asm__ (".eabi_attribute 28, 1");
int main(void) { return 0; }
enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
enabled neon && check_asm neon '"vadd.i16 q0, q0, q0"'
+ enabled_all armv6t2 shared !pic && enable_pic
+
elif enabled mips; then
check_asm loongson '"dmult.g $1, $2, $3"'
return i;
EOF
- # check wether EBX is available on x86
- check_asm ebx_available '"":::"%ebx"'
+ # check whether EBX is available on x86
+ check_asm ebx_available '""::"b"(0)' &&
+ check_asm ebx_available '"":::"%ebx"'
# check whether more than 10 operands are supported
check_cc <<EOF && enable ten_operands
enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -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 >= 65" ||
- die "ERROR: libx264 version must be >= 0.65."; }
+ { check_cpp_condition x264.h "X264_BUILD >= 78" ||
+ die "ERROR: libx264 version must be >= 0.78."; }
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
add_cflags -msg_disable unreachcode
elif enabled gcc; then
check_cflags -fno-tree-vectorize
+elif enabled clang; then
+ check_cflags -Qunused-arguments
fi
if enabled gprof; then
echo "#define FFMPEG_CONFIGURATION \"$(c_escape $FFMPEG_CONFIGURATION)\"" >> $TMPH
echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH
+echo "#define CC_TYPE \"$cc_type\"" >> $TMPH
+echo "#define CC_VERSION $cc_version" >> $TMPH
echo "#define restrict $_restrict" >> $TMPH
if enabled small || disabled optimizations; then
printf '#define ASMALIGN(ZEROBITS) ".align 1 << " #ZEROBITS "\\n\\t"\n' >> $TMPH
echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH
+echo "#define EXTERN_ASM ${extern_prefix}" >> $TMPH
print_config ARCH_ $TMPH config.mak $ARCH_LIST
print_config HAVE_ $TMPH config.mak $HAVE_LIST