X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=0832edd424d2c7e3ed779f9334457987f4b3dc97;hb=22667e40beec2a726c996bb0ba949434c7b260d5;hp=0ef9f73a69630e2cd12e03399c7aaa76059fbcab;hpb=95a61cfc248c3745fe3b48c6f49ce04311a77e16;p=ffmpeg diff --git a/configure b/configure index 0ef9f73a696..0832edd424d 100755 --- a/configure +++ b/configure @@ -190,6 +190,7 @@ show_help(){ echo " --nm=NM use nm tool" echo " --as=AS use assembler AS [$as_default]" echo " --cc=CC use C compiler CC [$cc_default]" + echo " --ld=LD use linker LD" echo " --host-cc=HOSTCC use host C compiler HOSTCC" echo " --host-cflags=HCFLAGS use HCFLAGS when compiling for host" echo " --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host" @@ -289,6 +290,14 @@ sh_quote(){ echo "$v" } +filter(){ + pat=$1 + shift + for v; do + case "$v" in $pat) echo "$v" ;; esac + done +} + set_all(){ value=$1 shift @@ -511,8 +520,16 @@ append(){ eval "$var=\"\$$var $*\"" } +add_cppflags(){ + append CPPFLAGS $($filter_cppflags "$@") +} + add_cflags(){ - append CFLAGS "$@" + append CFLAGS $($filter_cflags "$@") +} + +add_asflags(){ + append ASFLAGS $($filter_asflags "$@") } add_ldflags(){ @@ -532,21 +549,21 @@ check_cc(){ log check_cc "$@" cat > $TMPC log_file $TMPC - check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC + check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC } check_cpp(){ log check_cpp "$@" cat > $TMPC log_file $TMPC - check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC + check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC } check_as(){ log check_as "$@" cat > $TMPC log_file $TMPC - check_cmd $as $CFLAGS "$@" -c -o $TMPO $TMPC + check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC } check_asm(){ @@ -575,12 +592,21 @@ check_ld(){ for f; do test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f" done - check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs + check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs +} + +check_cppflags(){ + log check_cppflags "$@" + set -- $($filter_cppflags "$@") + check_cc "$@" </dev/null | grep -qi gcc; then +filter_cflags=echo +filter_cppflags=echo +filter_asflags=echo + +if $cc -v 2>&1 | grep -qi ^gcc; then cc_type=gcc + 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_DEPFLAGS='-MMD' + AS_DEPFLAGS='-MMD' elif $cc -v 2>&1 | grep -q xlc; then cc_type=xlc elif $cc -V 2>/dev/null | grep -q Compaq; then cc_type=ccc - DEPEND_CMD='$(CC) $(CFLAGS) -M $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o,"' + 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 @@ -1470,21 +1536,167 @@ elif $cc --vsn 2>/dev/null | grep -q RVCT; then die "Error creating armcc configuration file." cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc" as_default="${cross_prefix}gcc" + CC_DEPFLAGS='-MMD' + AS_DEPFLAGS='-MMD' +elif $cc -version 2>/dev/null | grep -q TMS470; then + cc_type=tms470 + cc="$cc --gcc --abi=eabi -eo=.o -mc -me" + CC_O='-fr=$(@D)' + as_default="${cross_prefix}gcc" + ld_default="${cross_prefix}gcc" + TMPO=$(basename $TMPC .c).o + append TMPFILES $TMPO + add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__= + CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)' + AS_DEPFLAGS='-MMD' + filter_cflags=tms470_flags + tms470_flags(){ + for flag; do + case $flag in + -march=*|-mcpu=*) + case "${flag#*=}" in + armv7-a|cortex-a*) echo -mv=7a8 ;; + armv7-r|cortex-r*) echo -mv=7r4 ;; + armv7-m|cortex-m*) echo -mv=7m3 ;; + armv6*|arm11*) echo -mv=6 ;; + armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) + echo -mv=5e ;; + armv4*|arm7*|arm9[24]*) echo -mv=4 ;; + esac + ;; + -mfpu=neon) echo --float_support=vfpv3 --neon ;; + -mfpu=vfp) echo --float_support=vfpv2 ;; + -mfpu=softvfp) echo --float_support=vfplib ;; + -Os) echo -O3 -mf=2 ;; + -O[0-3]) echo $flag -mf=5 ;; + -g) echo -g -mn ;; + esac + done + } fi test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc" -set_default as +: ${as_default:=$cc} +: ${dep_cc_default:=$cc} +: ${ld_default:=$cc} +set_default as dep_cc ld + +test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD +test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD + +add_cflags $extra_cflags +add_asflags $extra_cflags if test -n "$sysroot"; then case "$cc_type" in gcc) - add_cflags --sysroot="$sysroot" + add_cppflags --sysroot="$sysroot" add_ldflags --sysroot="$sysroot" ;; + tms470) + add_cppflags -I"$sysinclude" + add_ldflags --sysroot="$sysroot" + ;; + esac +fi + +if test "$cpu" = host; then + enabled cross_compile && die "--cpu=host makes no sense when cross-compiling." + + case "$cc_type" in + gcc) + check_native(){ + $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return + awk "/$1=/{ match(\$0, /$1=(\\w+)/, a);print a[1];exit }" $TMPE + } + cpu=$(check_native -march || check_native -mcpu) + ;; esac + + test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc" fi +# Add processor-specific flags +case $cpu in + 601|ppc601|PowerPC601) + cpuflags="-mcpu=601" + ;; + 603*|ppc603*|PowerPC603*) + cpuflags="-mcpu=603" + ;; + 604*|ppc604*|PowerPC604*) + cpuflags="-mcpu=604" + ;; + G3|g3|75*|ppc75*|PowerPC75*) + cpuflags="-mcpu=750 -mpowerpc-gfxopt" + ;; + G4|g4|745*|ppc745*|PowerPC745*) + cpuflags="-mcpu=7450 -mpowerpc-gfxopt" + ;; + 74*|ppc74*|PowerPC74*) + cpuflags="-mcpu=7400 -mpowerpc-gfxopt" + ;; + G5|g5|970|ppc970|PowerPC970|power4*|Power4*) + cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" + ;; + Cell|CELL|cell) + cpuflags="-mcpu=cell" + enable ldbrx + ;; + # targets that do NOT support conditional mov (cmov) + i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) + cpuflags="-march=$cpu" + 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) + cpuflags="-march=$cpu" + enable cmov + enable fast_cmov + ;; + # targets that do support conditional mov but on which it's slow + pentium4|pentium4m|prescott|nocona) + cpuflags="-march=$cpu" + enable cmov + disable fast_cmov + ;; + sparc64) + cpuflags="-mcpu=v9" + ;; + arm11*|cortex*) + cpuflags="-mcpu=$cpu" + enable fast_unaligned + ;; + armv[67]*) + cpuflags="-march=$cpu" + enable fast_unaligned + ;; + armv*) + cpuflags="-march=$cpu" + ;; + arm*) + cpuflags="-mcpu=$cpu" + ;; + ev4|ev45|ev5|ev56|pca56|ev6|ev67) + enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu" + ;; + bf*) + cpuflags="-mcpu=$cpu" + ;; + mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef]) + cpuflags="-march=$cpu" + ;; + generic) + ;; + *) + echo "WARNING: Unknown CPU \"$cpu\", ignored." + ;; +esac + +add_cflags $cpuflags +add_asflags $cpuflags + # compiler sanity check check_exec < EOF -check_cc -D_LARGEFILE_SOURCE < EOF @@ -1511,6 +1724,7 @@ case "$arch" in arch="alpha" enable fast_64bit check_cflags -mieee + pic=$shared ;; arm|armv[4567]*l) arch="arm" @@ -1523,24 +1737,29 @@ case "$arch" in ia64) arch="ia64" enable fast_64bit + pic=$shared ;; m68k) arch="m68k" ;; mips|mipsel|IP*) arch="mips" + pic=$shared ;; mips64) arch="mips" subarch="mips64" enable fast_64bit + pic=$shared ;; parisc|hppa) arch="parisc" + pic=$shared ;; parisc64|hppa64) arch="parisc" enable fast_64bit + pic=$shared ;; "Power Macintosh"|ppc|powerpc) arch="ppc" @@ -1560,11 +1779,13 @@ case "$arch" in ;; sparc) arch="sparc" + pic=$shared ;; sun4u|sparc64) arch="sparc" subarch="sparc64" enable fast_64bit + pic=$shared ;; i386|i486|i586|i686|i86pc|BePC) arch="x86" @@ -1577,7 +1798,7 @@ case "$arch" in enable cmov enable fast_cmov enable fast_unaligned - check_cc < 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || die "ERROR: MinGW runtime version must be >= 3.15." - enabled_any avisynth vfwcap_demuxer && + 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_demuxer require w32api version 3.13 or later."; } + die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; } fi ;; cygwin*) @@ -1795,110 +2027,8 @@ enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } check_deps $ARCH_EXT_LIST -test -z "$need_memalign" && need_memalign="$mmx" - -#Darwin CC versions -if test $target_os = darwin; then - if enabled xlc; then - add_cflags -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto - else - add_cflags -pipe - check_cflags -force_cpusubtype_ALL - check_cflags -Wno-sign-compare - enabled shared || check_cflags -mdynamic-no-pic - fi -fi - disabled optimizations || check_cflags -fomit-frame-pointer -# Add processor-specific flags -if test $cpu != "generic"; then - warn_altivec(){ - $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1."; - } - case $cpu in - 601|ppc601|PowerPC601) - add_cflags -mcpu=601 - warn_altivec enabled PPC601 - ;; - 603*|ppc603*|PowerPC603*) - add_cflags -mcpu=603 - warn_altivec enabled PPC603 - ;; - 604*|ppc604*|PowerPC604*) - add_cflags -mcpu=604 - warn_altivec enabled PPC604 - ;; - G3|g3|75*|ppc75*|PowerPC75*) - add_cflags -mcpu=750 -mpowerpc-gfxopt - warn_altivec enabled PPC75x - ;; - G4|g4|745*|ppc745*|PowerPC745*) - add_cflags -mcpu=7450 -mpowerpc-gfxopt - warn_altivec disabled PPC745x - ;; - 74*|ppc74*|PowerPC74*) - add_cflags -mcpu=7400 -mpowerpc-gfxopt - warn_altivec disabled PPC74xx - ;; - G5|g5|970|ppc970|PowerPC970|power4*|Power4*) - add_cflags -mcpu=970 -mpowerpc-gfxopt -mpowerpc64 - warn_altivec disabled PPC970 - ;; - Cell|CELL|cell) - add_cflags -mcpu=cell - warn_altivec disabled Cell - enable ldbrx - ;; - # targets that do NOT support conditional mov (cmov) - i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) - add_cflags -march=$cpu - 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) - add_cflags -march=$cpu - enable cmov - enable fast_cmov - ;; - # targets that do support conditional mov but on which it's slow - pentium4|pentium4m|prescott|nocona) - add_cflags -march=$cpu - enable cmov - disable fast_cmov - ;; - sparc64) - add_cflags -mcpu=v9 - ;; - arm11*|cortex*) - add_cflags -mcpu=$cpu - enable fast_unaligned - ;; - armv[67]*) - add_cflags -march=$cpu - enable fast_unaligned - ;; - armv*) - add_cflags -march=$cpu - ;; - arm*) - add_cflags -mcpu=$cpu - ;; - ev4|ev45|ev5|ev56|pca56|ev6|ev67) - enabled ccc && add_cflags -arch $cpu || add_cflags -mcpu=$cpu - ;; - bf*) - add_cflags -mcpu=$cpu - ;; - mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef]) - add_cflags -march=$cpu - ;; - *) - echo "WARNING: Unknown CPU \"$cpu\", ignored." - ;; - esac -fi - check_cc < -int main(void) { return ($func(3.999f) > 0)?0:1; } -EOF -done +check_func llrint +check_func log2 +check_func lrint +check_func lrintf +check_func round +check_func roundf +check_func truncf # these are off by default, so fail if requested and not available enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32 @@ -2120,17 +2270,6 @@ if enabled libdc1394; then die "ERROR: No version of libdc1394 found " fi - -_restrict= -for restrict_keyword in restrict __restrict__ __restrict; do - check_cc < /dev/null 2>&1 && enable texi2html || disable texi2html -########################################## -# Network check - if enabled network; then check_type "sys/types.h sys/socket.h" socklen_t # Prefer arpa/inet.h over winsock2 if check_header arpa/inet.h ; then check_func closesocket elif check_header winsock2.h ; then - network_extralibs="-lws2_32" + check_func_headers winsock2.h closesocket -lws2 && \ + network_extralibs="-lws2" || \ + { check_func_headers winsock2.h closesocket -lws2_32 && \ + network_extralibs="-lws2_32"; } check_type ws2tcpip.h socklen_t - check_func_headers winsock2.h closesocket else disable network fi fi -########################################## -# IPv6 check - -enabled network && enabled ipv6 && check_ld < #include #include @@ -2211,11 +2346,10 @@ check_header dev/ic/bt8xx.h check_header sys/soundcard.h check_header soundcard.h -enabled alsa_demuxer || enabled alsa_muxer && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound +enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound -enabled jack_demuxer && check_lib2 jack/jack.h jack_client_open -ljack +enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack -# deal with the X11 frame grabber enabled x11grab && check_header X11/Xlib.h && check_header X11/extensions/XShm.h && @@ -2260,7 +2394,6 @@ fi check_cflags -fno-math-errno check_cflags -fno-signed-zeros -# add some flags for Intel C Compiler if enabled icc; then # Just warnings, no remarks check_cflags -w1 @@ -2284,17 +2417,11 @@ elif enabled ccc; then add_cflags -msg_disable nomainieee add_cflags -msg_disable ptrmismatch1 add_cflags -msg_disable unreachcode +elif enabled gcc; then + check_cflags -fno-tree-vectorize fi -# PIC flags for shared library objects where they are needed -if enabled shared; then - # LIBOBJFLAGS may have already been set in the OS configuration - if test -z "$LIBOBJFLAGS" ; then - case "${subarch-$arch}" in - x86_64|ia64|alpha|sparc*|power*|parisc*|mips*) LIBOBJFLAGS='$(PIC)' ;; - esac - fi -fi +enabled pic && LIBOBJFLAGS='$(PIC)' if enabled gprof; then add_cflags -p @@ -2311,8 +2438,8 @@ 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 demuxers -enabled_any $OUTDEV_LIST && enable muxers +enabled_any $INDEV_LIST && enable indevs +enabled_any $OUTDEV_LIST && enable outdevs enabled_any $PROTOCOL_LIST && enable protocols enabled_any $THREADS_LIST && enable threads @@ -2451,6 +2578,9 @@ echo "#define FFMPEG_CONFIG_H" >> $TMPH echo "#define FFMPEG_CONFIGURATION \"$(c_escape $FFMPEG_CONFIGURATION)\"" >> $TMPH echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH +echo "ifndef FFMPEG_CONFIG_MAK" >> config.mak +echo "FFMPEG_CONFIG_MAK=1" >> config.mak + echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak echo "prefix=$prefix" >> config.mak echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak @@ -2464,6 +2594,8 @@ echo "SRC_PATH_BARE=$source_path" >> config.mak echo "BUILD_ROOT=\"$PWD\"" >> config.mak echo "CC=$cc" >> config.mak echo "AS=$as" >> config.mak +echo "LD=$ld" >> config.mak +echo "DEPCC=$dep_cc" >> config.mak echo "YASM=$yasmexe" >> config.mak echo "AR=$ar" >> config.mak echo "RANLIB=$ranlib" >> config.mak @@ -2472,13 +2604,16 @@ enabled stripping && echo "STRIP=$strip" >> config.mak || echo "STRIP=echo ignoring strip" >> config.mak -echo "OPTFLAGS=$CFLAGS" >> config.mak +echo "CPPFLAGS=$CPPFLAGS" >> config.mak +echo "CFLAGS=$CFLAGS" >> config.mak +echo "ASFLAGS=$ASFLAGS" >> config.mak +echo "CC_O=$CC_O" >> config.mak echo "LDFLAGS=$LDFLAGS" >> config.mak echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak echo "SHFLAGS=$SHFLAGS" >> config.mak echo "YASMFLAGS=$YASMFLAGS" >> config.mak echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak -echo "BUILD_STATIC=$static" >> config.mak +echo "PIC=-fPIC -DPIC" >> config.mak echo "BUILDSUF=$build_suffix" >> config.mak echo "FULLNAME=$FULLNAME" >> config.mak echo "LIBPREF=$LIBPREF" >> config.mak @@ -2488,7 +2623,11 @@ echo "SLIBPREF=$SLIBPREF" >> config.mak echo "SLIBSUF=$SLIBSUF" >> config.mak echo "EXESUF=$EXESUF" >> config.mak echo "EXTRA_VERSION=$extra_version" >> config.mak -echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak +echo "DEPFLAGS=$DEPFLAGS" >> config.mak +echo "CCDEP=$CCDEP" >> config.mak +echo "ASDEP=$ASDEP" >> config.mak +echo "CC_DEPFLAGS=$CC_DEPFLAGS" >> config.mak +echo "AS_DEPFLAGS=$AS_DEPFLAGS" >> config.mak echo "HOSTCC=$host_cc" >> config.mak echo "HOSTCFLAGS=$host_cflags" >> config.mak echo "HOSTEXESUF=$HOSTEXESUF" >> config.mak @@ -2497,11 +2636,6 @@ echo "HOSTLIBS=$host_libs" >> config.mak echo "TARGET_EXEC=$target_exec" >> config.mak echo "TARGET_PATH=$target_path" >> config.mak -if enabled bigendian; then - echo "WORDS_BIGENDIAN=yes" >> config.mak - echo "#define WORDS_BIGENDIAN 1" >> $TMPH -fi - if enabled sdl; then echo "SDL_LIBS=$("${SDL_CONFIG}" --libs)" >> config.mak echo "SDL_CFLAGS=$("${SDL_CONFIG}" --cflags)" >> config.mak @@ -2529,8 +2663,6 @@ get_version LIBAVUTIL libavutil/avutil.h get_version LIBAVFILTER libavfilter/avfilter.h if enabled shared; then - echo "BUILD_SHARED=yes" >> config.mak - echo "PIC=-fPIC -DPIC" >> config.mak echo "LIBTARGET=${LIBTARGET}" >> config.mak echo "SLIBNAME=${SLIBNAME}" >> config.mak echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak @@ -2563,7 +2695,7 @@ print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ echo "#define restrict $_restrict" >> $TMPH -if enabled small; then +if enabled small || disabled optimizations; then echo "#define av_always_inline" >> $TMPH fi @@ -2576,6 +2708,7 @@ enabled asmalign_pot && echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH +echo "endif # FFMPEG_CONFIG_MAK" >> config.mak # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. cmp -s $TMPH config.h &&