X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=847fd03828cc2c6cde5a05d42654da56416b8c92;hb=36a12218dbaa51acb246377433f4bfbb6a0c1cce;hp=8f71422920dfedefa424163cef5da7eac1f72d23;hpb=a6493a8fbd979eb96898d910b8a64df7c5eee6a5;p=ffmpeg diff --git a/configure b/configure index 8f71422920d..847fd03828c 100755 --- a/configure +++ b/configure @@ -64,36 +64,87 @@ show_help(){ echo " --disable-logging do not log configure debug information" echo " --prefix=PREFIX install in PREFIX [$prefix]" echo " --bindir=DIR install binaries in DIR [PREFIX/bin]" + echo " --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]" echo " --libdir=DIR install libs in DIR [PREFIX/lib]" echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]" echo " --incdir=DIR install includes in DIR [PREFIX/include]" echo " --mandir=DIR install man page in DIR [PREFIX/share/man]" - echo " --enable-static build static libraries [yes]" + echo + echo "Configuration options:" echo " --disable-static do not build static libraries [no]" echo " --enable-shared build shared libraries [no]" - echo " --disable-shared do not build shared libraries [yes]" echo " --enable-gpl allow use of GPL code, the resulting libs" echo " and binaries will be under GPL [no]" echo " --enable-nonfree allow use of nonfree code, the resulting libs" echo " and binaries will be unredistributable [no]" + echo " --disable-ffmpeg disable ffmpeg build" + echo " --disable-ffplay disable ffplay build" + echo " --disable-ffserver disable ffserver build" echo " --enable-postproc enable GPLed postprocessing support [no]" - echo " --enable-swscale enable GPLed software scaler support [no]" - echo " --enable-avfilter video filter support (replaces vhook) [no]" + echo " --enable-avfilter video filter support [no]" echo " --enable-avfilter-lavf video filters dependent on avformat [no]" - echo " --disable-vhook disable video hooking support" echo " --enable-beosthreads use BeOS threads [no]" echo " --enable-os2threads use OS/2 threads [no]" echo " --enable-pthreads use pthreads [no]" echo " --enable-w32threads use Win32 threads [no]" echo " --enable-x11grab enable X11 grabbing [no]" - echo " --enable-xvmc enable XvMC support [no]" + echo " --disable-network disable network support [no]" + echo " --disable-ipv6 disable IPv6 support [no]" + echo " --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no]" + echo " --enable-gray enable full grayscale support (slower color)" + echo " --disable-fastdiv disable table-based division" + echo " --enable-small optimize for size instead of speed" + echo " --disable-aandct disable AAN DCT code" + echo " --disable-fft disable FFT code" + echo " --disable-golomb disable Golomb code" + echo " --disable-mdct disable MDCT code" + echo " --disable-rdft disable RDFT code" + echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation" + echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers" + echo " --enable-beos-netserver enable BeOS netserver" + echo " --disable-encoder=NAME disable encoder NAME" + echo " --enable-encoder=NAME enable encoder NAME" + echo " --disable-encoders disable all encoders" + echo " --disable-decoder=NAME disable decoder NAME" + echo " --enable-decoder=NAME enable decoder NAME" + echo " --disable-decoders disable all decoders" + echo " --disable-muxer=NAME disable muxer NAME" + echo " --enable-muxer=NAME enable muxer NAME" + echo " --disable-muxers disable all muxers" + echo " --disable-demuxer=NAME disable demuxer NAME" + echo " --enable-demuxer=NAME enable demuxer NAME" + echo " --disable-demuxers disable all demuxers" + echo " --enable-parser=NAME enable parser NAME" + echo " --disable-parser=NAME disable parser NAME" + echo " --disable-parsers disable all parsers" + echo " --enable-bsf=NAME enable bitstream filter NAME" + echo " --disable-bsf=NAME disable bitstream filter NAME" + echo " --disable-bsfs disable all bitstream filters" + echo " --enable-protocol=NAME enable protocol NAME" + echo " --disable-protocol=NAME disable protocol NAME" + echo " --disable-protocols disable all protocols" + echo " --disable-indevs disable input devices" + echo " --disable-outdevs disable output devices" + echo " --disable-devices disable all devices" + echo " --enable-filter=NAME enable filter NAME" + echo " --disable-filter=NAME disable filter NAME" + echo " --disable-filters disable all filters" + echo " --list-decoders show all available decoders" + echo " --list-encoders show all available encoders" + echo " --list-muxers show all available muxers" + echo " --list-demuxers show all available demuxers" + echo " --list-parsers show all available parsers" + echo " --list-protocols show all available protocols" + echo " --list-bsfs show all available bitstream filters" + echo " --list-indevs show all available input devices" + echo " --list-outdevs show all available output devices" + echo " --list-filters show all available filters" echo echo "External library support:" - echo " --enable-mlib enable Sun medialib [no]" echo " --enable-avisynth enable reading of AVISynth script files [no]" - echo " --enable-bzlib enable bzlib [no]" - echo " --enable-libamr-nb enable libamr-nb floating point audio codec" - echo " --enable-libamr-wb enable libamr-wb floating point audio codec" + echo " --enable-bzlib enable bzlib [autodetect]" + echo " --enable-libamr-nb enable libamr-nb floating point audio codec [no]" + echo " --enable-libamr-wb enable libamr-wb floating point audio codec [no]" echo " --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394" echo " and libraw1394 [no]" echo " --enable-libdirac enable Dirac support via libdirac [no]" @@ -104,6 +155,7 @@ show_help(){ echo " --enable-libmp3lame enable MP3 encoding via libmp3lame [no]" echo " --enable-libnut enable NUT (de)muxing via libnut," echo " native (de)muxer exists [no]" + echo " --enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]" echo " --enable-libschroedinger enable Dirac support via libschroedinger [no]" echo " --enable-libspeex enable Speex decoding via libspeex [no]" echo " --enable-libtheora enable Theora encoding via libtheora [no]" @@ -112,17 +164,21 @@ show_help(){ echo " --enable-libx264 enable H.264 encoding via x264 [no]" echo " --enable-libxvid enable Xvid encoding via xvidcore," echo " native MPEG-4/Xvid encoder exists [no]" - echo " --enable-zlib enable zlib [no]" + echo " --enable-mlib enable Sun medialib [no]" + echo " --enable-zlib enable zlib [autodetect]" echo "" echo "Advanced options (experts only):" echo " --source-path=PATH path to source code [$source_path]" echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]" echo " --enable-cross-compile assume a cross-compiler is used" + echo " --sysroot=PATH root of cross-build tree" + echo " --sysinclude=PATH location of cross-build system headers" echo " --target-os=OS compiler targets OS [$target_os]" echo " --target-exec=CMD command to run executables on target" echo " --target-path=DIR path to view of build directory on target" echo " --nm=NM use nm tool" - echo " --cc=CC use C compiler CC [$cc]" + echo " --as=AS use assembler AS [$as_default]" + echo " --cc=CC use C compiler CC [$cc_default]" 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" @@ -138,69 +194,21 @@ show_help(){ echo " --enable-powerpc-perf enable performance report on PPC" echo " (requires enabling PMC)" echo " --disable-altivec disable AltiVec optimizations" + echo " --disable-amd3dnow disable 3DNow! optimizations" + echo " --disable-amd3dnowext disable 3DNow! extended optimizations" echo " --disable-mmx disable MMX optimizations" echo " --disable-mmx2 disable MMX2 optimizations" + echo " --disable-sse disable SSE optimizations" echo " --disable-ssse3 disable SSSE3 optimizations" echo " --disable-armv5te disable armv5te optimizations" echo " --disable-armv6 disable armv6 optimizations" + echo " --disable-armv6t2 disable armv6t2 optimizations" echo " --disable-armvfp disable ARM VFP optimizations" echo " --disable-iwmmxt disable iwmmxt optimizations" echo " --disable-mmi disable MMI optimizations" echo " --disable-neon disable neon optimizations" echo " --disable-vis disable VIS optimizations" - echo " --disable-network disable network support [no]" - echo " --disable-ipv6 disable IPv6 support [no]" - echo " --disable-mpegaudio-hp faster (but less accurate)" - echo " MPEG audio decoding [no]" - echo " --disable-aandct disable AAN DCT code" - echo " --disable-fft disable FFT code" - echo " --disable-golomb disable Golomb code" - echo " --disable-mdct disable MDCT code" - echo " --enable-gray enable full grayscale support (slower color)" - echo " --disable-ffmpeg disable ffmpeg build" - echo " --disable-ffplay disable ffplay build" - echo " --disable-ffserver disable ffserver build" - echo " --enable-small optimize for size instead of speed" - echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation" - echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers" - echo " --enable-beos-netserver enable BeOS netserver" - echo " --disable-encoder=NAME disable encoder NAME" - echo " --enable-encoder=NAME enable encoder NAME" - echo " --disable-encoders disable all encoders" - echo " --disable-decoder=NAME disable decoder NAME" - echo " --enable-decoder=NAME enable decoder NAME" - echo " --disable-decoders disable all decoders" - echo " --disable-muxer=NAME disable muxer NAME" - echo " --enable-muxer=NAME enable muxer NAME" - echo " --disable-muxers disable all muxers" - echo " --disable-demuxer=NAME disable demuxer NAME" - echo " --enable-demuxer=NAME enable demuxer NAME" - echo " --disable-demuxers disable all demuxers" - echo " --enable-parser=NAME enable parser NAME" - echo " --disable-parser=NAME disable parser NAME" - echo " --disable-parsers disable all parsers" - echo " --enable-bsf=NAME enable bitstream filter NAME" - echo " --disable-bsf=NAME disable bitstream filter NAME" - echo " --disable-bsfs disable all bitstream filters" - echo " --enable-protocol=NAME enable protocol NAME" - echo " --disable-protocol=NAME disable protocol NAME" - echo " --disable-protocols disable all protocols" - echo " --disable-indevs disable input devices" - echo " --disable-outdevs disable output devices" - echo " --disable-devices disable all devices" - echo " --enable-filter=NAME enable filter NAME" - echo " --disable-filter=NAME disable filter NAME" - echo " --disable-filters disable all filters" - echo " --list-decoders show all available decoders" - echo " --list-encoders show all available encoders" - echo " --list-muxers show all available muxers" - echo " --list-demuxers show all available demuxers" - echo " --list-parsers show all available parsers" - echo " --list-protocols show all available protocols" - echo " --list-bsfs show all available bitstream filters" - echo " --list-indevs show all available input devices" - echo " --list-outdevs show all available output devices" - echo " --list-filters show all available filters" + echo " --disable-yasm disable use of yasm assembler" echo echo "Developer options (useful when working on FFmpeg itself):" echo " --disable-debug disable debugging symbols" @@ -247,7 +255,6 @@ Include the log file "$logfile" produced by configure as this will help solving the problem. EOF fi - rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH exit 1 } @@ -260,6 +267,10 @@ tolower(){ echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz } +c_escape(){ + echo "$*" | sed 's/["\\]/\\\0/g' +} + set_all(){ value=$1 shift @@ -311,6 +322,14 @@ disable_weak(){ set_weak no $* } +enable_safe(){ + enable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g') +} + +disable_safe(){ + disable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g') +} + do_enable_deep(){ for var; do enabled $var && continue @@ -421,13 +440,12 @@ print_config(){ makefile=$3 shift 3 for cfg; do - ucname="`toupper $cfg`" + ucname="$(toupper $cfg)" if enabled $cfg; then echo "#define ${pfx}${ucname} 1" >> $header - echo "#define ENABLE_${ucname} 1" >> $header echo "${pfx}${ucname}=yes" >> $makefile else - echo "#define ENABLE_${ucname} 0" >> $header + echo "#define ${pfx}${ucname} 0" >> $header fi done } @@ -506,12 +524,19 @@ check_cpp(){ check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC } +check_as(){ + log check_as "$@" + cat > $TMPC + log_file $TMPC + check_cmd $as $CFLAGS "$@" -c -o $TMPO $TMPC +} + check_asm(){ log check_asm "$@" name="$1" asm="$2" shift 2 - check_cc "$@" < int x; EOF @@ -583,7 +607,7 @@ check_func_headers(){ incs="$incs #include <$hdr>" done - check_ld "$@" <> $logfile test -n "$cross_prefix" && enable cross_compile -cc_default="${cross_prefix}${cc_default}" -yasmexe="${cross_prefix}${yasmexe}" ar="${cross_prefix}${ar}" +cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" ranlib="${cross_prefix}${ranlib}" strip="${cross_prefix}${strip}" -set_default cc nm +sysinclude_default="${sysroot}/usr/include" + +set_default cc nm sysinclude +as_default=$cc enabled cross_compile || host_cc_default=$cc set_default host_cc +exesuf() { + case $1 in + mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;; + esac +} + +EXESUF=$(exesuf $target_os) +HOSTEXESUF=$(exesuf $host_os) + # set temporary file name -if test ! -z "$TMPDIR" ; then - TMPDIR1="${TMPDIR}" -elif test ! -z "$TEMPDIR" ; then - TMPDIR1="${TEMPDIR}" -else - TMPDIR1="/tmp" +: ${TMPDIR:=$TEMPDIR} +: ${TMPDIR:=$TMP} +: ${TMPDIR:=/tmp} + +if ! check_cmd type mktemp; then + # simple replacement for missing mktemp + # NOT SAFE FOR GENERAL USE + mktemp(){ + echo "${2%XXX*}.${HOSTNAME}.${UID}.$$" + } fi -TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c" -TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}" -TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h" -TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o" -TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S" -TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh" +tmpfile(){ + tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 && + (set -C; exec > $tmp) 2>/dev/null || + die "Unable to create temoporary file in $TMPDIR." + append TMPFILES $tmp + eval $1=$tmp +} + +trap 'rm -f -- $TMPFILES' EXIT +trap exit HUP INT TERM + +tmpfile TMPC .c +tmpfile TMPE $EXESUF +tmpfile TMPH .h +tmpfile TMPO .o +tmpfile TMPS .S +tmpfile TMPSH .sh + +unset -f mktemp + +# make sure we can execute files in $TMPDIR +cat > $TMPSH 2>> $logfile <> $logfile 2>&1 +if ! $TMPSH >> $logfile 2>&1; then + cat </dev/null | grep -qi gcc; then + cc_type=gcc +elif $cc --version 2>/dev/null | grep -q Intel; then + cc_type=icc +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,"' + debuglevel=3 + add_ldflags -Wl,-z,now # calls to libots crash without this +elif $cc --vsn 2>/dev/null | grep -q RVCT; then + test -d "$sysroot" || die "No valid sysroot specified." + cc_type=armcc + armcc_conf="$PWD/armcc.conf" + $cc --arm_linux_configure \ + --arm_linux_config_file="$armcc_conf" \ + --configure_sysroot="$sysroot" \ + --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 || + die "Error creating armcc configuration file." + cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc" + as_default="${cross_prefix}gcc" +fi + +test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc" + +set_default as + +if test -n "$sysroot"; then + case "$cc_type" in + gcc) + add_cflags --sysroot="$sysroot" + add_ldflags --sysroot="$sysroot" + ;; + esac +fi + +# compiler sanity check +check_exec < +EOF +check_cc -D_LARGEFILE_SOURCE < +EOF case "$arch" in - i386|i486|i586|i686|i86pc|BePC) - arch="x86_32" - enable fast_unaligned - ;; - x86_64|amd64) - arch="x86_32" - 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 && - { 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."; } + if ! enabled x86_64; then + check_cpp_condition _mingw.h "(__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_demuxer && + { 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."; } + fi ;; cygwin*) target_os=cygwin shlibdir_default="$bindir_default" - VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil' - VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)' - if enabled swscale; then - VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale" - VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)" - fi - EXESUF=".exe" SLIBPREF="cyg" SLIBSUF=".dll" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' @@ -1487,11 +1624,10 @@ case $target_os in enable dos_paths ;; *-dos|freedos|opendos) - disable ffplay ffserver vhook + disable ffplay ffserver disable $INDEV_LIST $OUTDEV_LIST network_extralibs="-lsocket" - EXESUF=".exe" - objformat="win32" + objformat="coff" enable dos_paths ;; linux) @@ -1504,7 +1640,6 @@ case $target_os in os/2*) strip="lxlite" ln_s="cp -f" - EXESUF=".exe" FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap" SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' FFSERVERLDFLAGS="" @@ -1523,15 +1658,11 @@ case $target_os in emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"' SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib' - disable vhook enable dos_paths ;; - interix) - disable vhook - ;; *) - target_os="${target_os}-UNKNOWN" + die "Unknown OS '$target_os'." ;; esac @@ -1582,7 +1713,6 @@ if ! enabled gpl; then die_gpl_disabled "libxvidcore" libxvid die_gpl_disabled "FAAD2" libfaad2 die_gpl_disabled "The X11 grabber" x11grab - die_gpl_disabled "The software scaler" swscale fi if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then @@ -1595,12 +1725,12 @@ test -z "$need_memalign" && need_memalign="$mmx" #Darwin CC versions if test $target_os = darwin; then - if $cc -v 2>&1 | grep -q xlc; then - add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto" + 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" + add_cflags -pipe + check_cflags -force_cpusubtype_ALL + check_cflags -Wno-sign-compare enabled shared || check_cflags -mdynamic-no-pic fi fi @@ -1614,68 +1744,71 @@ if test $cpu != "generic"; then } case $cpu in 601|ppc601|PowerPC601) - add_cflags "-mcpu=601" + add_cflags -mcpu=601 warn_altivec enabled PPC601 ;; 603*|ppc603*|PowerPC603*) - add_cflags "-mcpu=603" + add_cflags -mcpu=603 warn_altivec enabled PPC603 ;; 604*|ppc604*|PowerPC604*) - add_cflags "-mcpu=604" + add_cflags -mcpu=604 warn_altivec enabled PPC604 ;; G3|g3|75*|ppc75*|PowerPC75*) - add_cflags "-mcpu=750 -mpowerpc-gfxopt" + add_cflags -mcpu=750 -mpowerpc-gfxopt warn_altivec enabled PPC75x ;; G4|g4|745*|ppc745*|PowerPC745*) - add_cflags "-mcpu=7450 -mpowerpc-gfxopt" + add_cflags -mcpu=7450 -mpowerpc-gfxopt warn_altivec disabled PPC745x ;; 74*|ppc74*|PowerPC74*) - add_cflags "-mcpu=7400 -mpowerpc-gfxopt" + add_cflags -mcpu=7400 -mpowerpc-gfxopt warn_altivec disabled PPC74xx ;; G5|g5|970|ppc970|PowerPC970|power4*|Power4*) - add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" + add_cflags -mcpu=970 -mpowerpc-gfxopt -mpowerpc64 warn_altivec disabled PPC970 enable ppc64 ;; Cell|CELL|cell) - add_cflags "-mcpu=cell" + add_cflags -mcpu=cell warn_altivec disabled Cell enable ppc64 ;; # 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" + 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" + 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" + add_cflags -march=$cpu enable cmov disable fast_cmov ;; sparc64) - add_cflags "-mcpu=v9" + add_cflags -mcpu=v9 ;; arm11*|cortex*) - add_cflags "-mcpu=$cpu" + add_cflags -mcpu=$cpu enable fast_unaligned ;; armv*) - add_cflags "-march=$cpu" + add_cflags -march=$cpu ;; arm*) - add_cflags "-mcpu=$cpu" + add_cflags -mcpu=$cpu + ;; + ev4|ev45|ev5|ev56|pca56|ev6|ev67) + enabled ccc && add_cflags -arch $cpu || add_cflags -mcpu=$cpu ;; *) echo "WARNING: Unknown CPU \"$cpu\", ignored." @@ -1683,41 +1816,15 @@ if test $cpu != "generic"; then esac fi -# make sure we can execute files in $TMPDIR -cat > $TMPSH 2>> $logfile <> $logfile 2>&1 -if ! $TMPSH >> $logfile 2>&1; then - cat < int main(void) { return ($func(3.999f) > 0)?0:1; } @@ -1884,6 +2010,7 @@ enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad enabled libgsm && require libgsm gsm.h gsm_create -lgsm enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm enabled libnut && require libnut libnut.h nut_demuxer_init -lnut +enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg 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 @@ -1912,24 +2039,6 @@ void foo(char * $restrict_keyword p); EOF done -test "$vhook" = "default" && vhook="$dlopen" - -if test "$target_os" = cygwin -o "$target_os" = mingw32 && enabled_all static vhook ; then - disable vhook - echo - echo "At the moment vhooks don't work on Cygwin or MinGW static builds." - echo "Patches welcome." - echo -fi - -if enabled vhook; then - check_ldflags -rdynamic - check_ldflags -export-dynamic -fi - -check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font -check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType - ########################################## # SDL check @@ -1937,11 +2046,11 @@ disable sdl_too_old disable sdl SDL_CONFIG="${cross_prefix}sdl-config" if "${SDL_CONFIG}" --version > /dev/null 2>&1; then - sdl_cflags=`"${SDL_CONFIG}" --cflags` + sdl_cflags=$("${SDL_CONFIG}" --cflags) temp_cflags $sdl_cflags - temp_extralibs `"${SDL_CONFIG}" --libs` + temp_extralibs $("${SDL_CONFIG}" --libs) if check_lib2 SDL.h SDL_Init; then - _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'` + _sdlversion=$("${SDL_CONFIG}" --version | sed 's/[^0-9]//g') if test "$_sdlversion" -lt 121 ; then enable sdl_too_old else @@ -2011,6 +2120,8 @@ check_header dev/ic/bt8xx.h check_header sys/soundcard.h check_header soundcard.h +check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound + # deal with the X11 frame grabber enabled x11grab && check_header X11/Xlib.h && @@ -2031,6 +2142,7 @@ check_cflags -Wno-pointer-sign check_cflags -Wcast-qual check_cflags -Wwrite-strings check_cflags -Wtype-limits +check_cflags -Wundef enabled extra_warnings && check_cflags -Winline # add some linker flags @@ -2043,49 +2155,57 @@ if enabled small; then check_cflags -Os # not all compilers support -Os optimizations="small" elif enabled optimizations; then - if $cc -v 2>&1 | grep -q xlc; then - add_cflags "-O5" - add_ldflags "-O5" + if enabled xlc; then + add_cflags -O5 + add_ldflags -O5 + elif enabled ccc; then + add_cflags -fast else - add_cflags "-O3" + add_cflags -O3 fi fi check_cflags -fno-math-errno check_cflags -fno-signed-zeros # add some flags for Intel C Compiler -if $cc --version 2> /dev/null | grep -q Intel; then - # Just warnings, no remarks - check_cflags -w1 - # -wd: Disable following warnings - # 144, 167, 556: -Wno-pointer-sign - # 10006: ignoring unknown option -fno-signed-zeros - # 10156: ignoring option '-W'; no argument required - check_cflags -wd144,167,556,10006,10156 - # 11030: Warning unknown option --as-needed - # 10156: ignoring option '-export'; no argument required - check_ldflags -wd10156,11030 - # Allow to compile with optimizations - check_ldflags -march=$cpu +if enabled icc; then + # Just warnings, no remarks + check_cflags -w1 + # -wd: Disable following warnings + # 144, 167, 556: -Wno-pointer-sign + # 10006: ignoring unknown option -fno-signed-zeros + # 10156: ignoring option '-W'; no argument required + check_cflags -wd144,167,556,10006,10156 + # 11030: Warning unknown option --as-needed + # 10156: ignoring option '-export'; no argument required + check_ldflags -wd10156,11030 + # Allow to compile with optimizations + check_ldflags -march=$cpu +elif enabled ccc; then + # disable some annoying warnings + add_cflags -msg_disable cvtu32to64 + add_cflags -msg_disable embedcomment + add_cflags -msg_disable needconstext + add_cflags -msg_disable nomainieee + add_cflags -msg_disable ptrmismatch1 + add_cflags -msg_disable unreachcode 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 "$arch" in + case "${subarch-$arch}" in x86_64|ia64|alpha|sparc*|power*|parisc*|mips*) LIBOBJFLAGS='$(PIC)' ;; esac fi fi if enabled gprof; then - add_cflags "-p" - add_ldflags "-p" + add_cflags -p + add_ldflags -p fi -VHOOKCFLAGS="-fPIC" - # Find out if the .align argument is a power of two or not. check_asm asmalign_pot '".align 3"' @@ -2127,27 +2247,39 @@ if test "$extra_version" != ""; then echo "version string suffix $extra_version" fi echo "big-endian ${bigendian-no}" -if test $arch = "x86_32" -o $arch = "x86_64"; then +if enabled x86; then echo "yasm ${yasm-no}" echo "MMX enabled ${mmx-no}" + echo "MMX2 enabled ${mmx2-no}" + echo "3DNow! enabled ${amd3dnow-no}" + echo "3DNow! extended enabled ${amd3dnowext-no}" + echo "SSE enabled ${sse-no}" + echo "SSSE3 enabled ${ssse3-no}" echo "CMOV enabled ${cmov-no}" echo "CMOV is fast ${fast_cmov-no}" echo "EBX available ${ebx_available-no}" echo "EBP available ${ebp_available-no}" + echo "10 operands supported ${ten_operands-no}" fi -if test $arch = "arm"; then +if enabled arm; then echo "ARMv5TE enabled ${armv5te-no}" echo "ARMv6 enabled ${armv6-no}" + echo "ARMv6T2 enabled ${armv6t2-no}" echo "ARM VFP enabled ${armvfp-no}" echo "IWMMXT enabled ${iwmmxt-no}" echo "NEON enabled ${neon-no}" fi -if test $arch = "mips"; then +if enabled mips; then echo "MMI enabled ${mmi-no}" fi -if test $arch = "powerpc"; then +if enabled ppc; then 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}" @@ -2156,14 +2288,8 @@ echo "optimizations ${optimizations-no}" echo "static ${static-no}" echo "shared ${shared-no}" echo "postprocessing support ${postproc-no}" -echo "software scaler enabled ${swscale-no}" echo "new filter support ${avfilter-no}" echo "filters using lavformat ${avfilter_lavf-no}" -echo "video hooking ${vhook-no}" -if enabled vhook; then - echo "Imlib2 support ${imlib2-no}" - echo "FreeType support ${freetype2-no}" -fi echo "network support ${network-no}" if enabled network; then echo "IPv6 support ${ipv6-no}" @@ -2185,6 +2311,7 @@ echo "libfaad dlopened ${libfaadbin-no}" echo "libgsm enabled ${libgsm-no}" echo "libmp3lame enabled ${libmp3lame-no}" echo "libnut enabled ${libnut-no}" +echo "libopenjpeg enabled ${libopenjpeg-no}" echo "libschroedinger enabled ${libschroedinger-no}" echo "libspeex enabled ${libspeex-no}" echo "libtheora enabled ${libtheora-no}" @@ -2220,6 +2347,7 @@ echo "/* Automatically generated by configure - do not modify! */" > $TMPH echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH echo "#define FFMPEG_CONFIG_H" >> $TMPH echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH +echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak echo "prefix=$prefix" >> config.mak @@ -2227,8 +2355,10 @@ echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak +echo "DATADIR=\$(DESTDIR)$datadir" >> config.mak echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak echo "CC=$cc" >> config.mak +echo "AS=$as" >> config.mak echo "YASM=$yasmexe" >> config.mak echo "AR=$ar" >> config.mak echo "RANLIB=$ranlib" >> config.mak @@ -2238,13 +2368,10 @@ enabled stripping && echo "STRIP=echo ignoring strip" >> config.mak echo "OPTFLAGS=$CFLAGS" >> config.mak -echo "VHOOKCFLAGS=$VHOOKCFLAGS" >> config.mak echo "LDFLAGS=$LDFLAGS" >> config.mak echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak echo "SHFLAGS=$SHFLAGS" >> config.mak echo "YASMFLAGS=$YASMFLAGS" >> config.mak -echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak -echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak echo "BUILD_STATIC=$static" >> config.mak echo "BUILDSUF=$build_suffix" >> config.mak @@ -2259,6 +2386,7 @@ echo "EXTRA_VERSION=$extra_version" >> config.mak echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak echo "HOSTCC=$host_cc" >> config.mak echo "HOSTCFLAGS=$host_cflags" >> config.mak +echo "HOSTEXESUF=$HOSTEXESUF" >> config.mak echo "HOSTLDFLAGS=$host_ldflags" >> config.mak echo "HOSTLIBS=$host_libs" >> config.mak echo "TARGET_EXEC=$target_exec" >> config.mak @@ -2270,8 +2398,8 @@ if enabled bigendian; then fi if enabled sdl; then - echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak - echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak + echo "SDL_LIBS=$("${SDL_CONFIG}" --libs)" >> config.mak + echo "SDL_CFLAGS=$("${SDL_CONFIG}" --cflags)" >> config.mak fi if enabled texi2html; then echo "BUILD_DOC=yes" >> config.mak @@ -2310,6 +2438,8 @@ fi echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak echo "EXTRALIBS=$extralibs" >> config.mak +echo "ARCH=$arch" >> config.mak + print_config ARCH_ $TMPH config.mak $ARCH_LIST print_config HAVE_ $TMPH config.mak $HAVE_LIST print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ @@ -2349,8 +2479,6 @@ cmp -s $TMPH config.h && echo "config.h is unchanged" || mv -f $TMPH config.h -rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH - # build tree in object directory if source path is different from current one if enabled source_path_used; then DIRS="\ @@ -2372,7 +2500,6 @@ if enabled source_path_used; then libswscale \ tests \ tools \ - vhook \ " FILES="\ Makefile \ @@ -2445,9 +2572,4 @@ enabled avfilter && pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" enabled postproc && pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" -if enabled swscale; then - pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" -else - pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavcodec = $LIBAVCODEC_VERSION" - apply libswscale/libswscale.pc sed s/^Libs:.*$/Libs:/ -fi +pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"