Skip to content
Snippets Groups Projects
configure 216 KiB
Newer Older
  • Learn to ignore specific revisions
  • # FFmpeg configure script
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    # Copyright (c) 2000-2002 Fabrice Bellard
    # Copyright (c) 2005-2008 Diego Biurrun
    # Copyright (c) 2005-2008 Mans Rullgard
    
    # Prevent locale nonsense from breaking basic text processing.
    
    # make sure we are running under a compatible shell
    
    # try to make this part work with most shells
    
    try_exec(){
    
        echo "Trying shell $1"
    
        type "$1" > /dev/null 2>&1 && exec "$@"
    
    unset foo
    
    (: ${foo%%bar}) 2> /dev/null
    
    (: ${foo?}) 2> /dev/null
    
    E2="$?"
    
    if test "$E1" != 0 || test "$E2" = 0; then
        echo "Broken shell detected.  Trying alternatives."
    
        export FF_CONF_EXEC
        if test "0$FF_CONF_EXEC" -lt 1; then
            FF_CONF_EXEC=1
            try_exec bash "$0" "$@"
        fi
        if test "0$FF_CONF_EXEC" -lt 2; then
            FF_CONF_EXEC=2
            try_exec ksh "$0" "$@"
        fi
        if test "0$FF_CONF_EXEC" -lt 3; then
            FF_CONF_EXEC=3
            try_exec /usr/xpg4/bin/sh "$0" "$@"
    
        fi
        echo "No compatible shell script interpreter found."
    
    Diego Biurrun's avatar
    Diego Biurrun committed
        echo "This configure script requires a POSIX-compatible shell"
    
        echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
    
        echo "Instead, install a working POSIX-compatible shell."
    
        echo "Disabling this configure test will create a broken FFmpeg."
    
        if test "$BASH_VERSION" = '2.04.0(1)-release'; then
            echo "This bash version ($BASH_VERSION) is broken on your platform."
            echo "Upgrade to a later version if available."
        fi
    
    test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
    
    
        cat <<EOF
    
    Usage: configure [options]
    Options: [defaults in brackets after descriptions]
    
    
    Help options:
    
      --help                   print this message
    
      --list-decoders          show all available decoders
      --list-encoders          show all available encoders
      --list-hwaccels          show all available hardware accelerators
      --list-demuxers          show all available demuxers
      --list-muxers            show all available muxers
      --list-parsers           show all available parsers
      --list-protocols         show all available protocols
      --list-bsfs              show all available bitstream filters
      --list-indevs            show all available input devices
      --list-outdevs           show all available output devices
      --list-filters           show all available filters
    
    Standard options:
    
      --logfile=FILE           log tests and output to FILE [config.log]
    
      --disable-logging        do not log configure debug information
    
      --fatal-warnings         fail if any configure warning is generated
    
      --prefix=PREFIX          install in PREFIX [$prefix]
      --bindir=DIR             install binaries in DIR [PREFIX/bin]
    
      --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
    
      --docdir=DIR             install documentation in DIR [PREFIX/share/doc/ffmpeg]
    
      --libdir=DIR             install libs in DIR [PREFIX/lib]
    
      --shlibdir=DIR           install shared libs in DIR [LIBDIR]
    
      --incdir=DIR             install includes in DIR [PREFIX/include]
      --mandir=DIR             install man page in DIR [PREFIX/share/man]
    
      --pkgconfigdir=DIR       install pkg-config files in DIR [LIBDIR/pkgconfig]
    
      --enable-rpath           use rpath to allow installing libraries in paths
                               not part of the dynamic linker search path
    
                               use rpath when linking programs [USE WITH CARE]
    
      --install-name-dir=DIR   Darwin directory name for installed targets
    
    Licensing options:
    
      --enable-gpl             allow use of GPL code, the resulting libs
                               and binaries will be under GPL [no]
      --enable-version3        upgrade (L)GPL to version 3 [no]
      --enable-nonfree         allow use of nonfree code, the resulting libs
                               and binaries will be unredistributable [no]
    
    
    Configuration options:
      --disable-static         do not build static libraries [no]
      --enable-shared          build shared libraries [no]
      --enable-small           optimize for size instead of speed
    
      --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary)
    
      --enable-gray            enable full grayscale support (slower color)
      --disable-swscale-alpha  disable alpha channel support in swscale
    
      --disable-all            disable building components, libraries and programs
    
      --enable-incompatible-libav-abi enable incompatible Libav fork ABI [no]
    
      --enable-raise-major     increase major version numbers in sonames [no]
    
    Program options:
      --disable-programs       do not build command line programs
    
      --disable-ffmpeg         disable ffmpeg build
      --disable-ffplay         disable ffplay build
      --disable-ffprobe        disable ffprobe build
      --disable-ffserver       disable ffserver build
    
    Documentation options:
    
      --disable-doc            do not build documentation
    
      --disable-htmlpages      do not build HTML documentation pages
      --disable-manpages       do not build man documentation pages
      --disable-podpages       do not build POD documentation pages
      --disable-txtpages       do not build text documentation pages
    
    Component options:
    
      --disable-avdevice       disable libavdevice build
      --disable-avcodec        disable libavcodec build
      --disable-avformat       disable libavformat build
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
      --disable-swresample     disable libswresample build
    
      --disable-swscale        disable libswscale build
    
      --disable-postproc       disable libpostproc build
    
      --disable-avfilter       disable libavfilter build
    
      --enable-avresample      enable libavresample build [no]
    
      --disable-pthreads       disable pthreads [autodetect]
      --disable-w32threads     disable Win32 threads [autodetect]
      --disable-os2threads     disable OS/2 threads [autodetect]
    
      --disable-network        disable network support [no]
    
      --disable-dct            disable DCT code
    
      --disable-dwt            disable DWT code
    
      --disable-error-resilience disable error resilience code
    
      --disable-lsp            disable LSP code
    
      --disable-lzo            disable LZO decoder code
    
      --disable-mdct           disable MDCT code
      --disable-rdft           disable RDFT code
    
      --disable-fft            disable FFT code
    
      --disable-faan           disable floating point AAN (I)DCT code
    
      --disable-pixelutils     disable pixel utils in libavutil
    
      --disable-d3d11va        disable D3D11VA code [autodetect]
    
      --disable-dxva2          disable DXVA2 code [autodetect]
    
      --disable-vaapi          disable VAAPI code [autodetect]
    
      --disable-vda            disable VDA code [autodetect]
    
      --disable-vdpau          disable VDPAU code [autodetect]
    
    Hardware-accelerated decoding/encoding:
      --enable-cuda            enable dynamically linked CUDA [no]
    
      --enable-cuvid           enable CUVID support [autodetect]
    
      --enable-libmfx          enable HW acceleration through libmfx
      --enable-mmal            enable decoding via MMAL [no]
    
      --enable-nvenc           enable NVIDIA NVENC support [no]
    
      --enable-omx             enable encoding via OpenMAX IL [no]
    
      --enable-omx-rpi         enable encoding via OpenMAX IL for Raspberry Pi [no]
    
    Individual component options:
    
      --disable-everything     disable all components listed below
    
      --disable-encoder=NAME   disable encoder NAME
      --enable-encoder=NAME    enable encoder NAME
      --disable-encoders       disable all encoders
      --disable-decoder=NAME   disable decoder NAME
      --enable-decoder=NAME    enable decoder NAME
      --disable-decoders       disable all decoders
      --disable-hwaccel=NAME   disable hwaccel NAME
      --enable-hwaccel=NAME    enable hwaccel NAME
      --disable-hwaccels       disable all hwaccels
      --disable-muxer=NAME     disable muxer NAME
      --enable-muxer=NAME      enable muxer NAME
      --disable-muxers         disable all muxers
      --disable-demuxer=NAME   disable demuxer NAME
      --enable-demuxer=NAME    enable demuxer NAME
      --disable-demuxers       disable all demuxers
      --enable-parser=NAME     enable parser NAME
      --disable-parser=NAME    disable parser NAME
      --disable-parsers        disable all parsers
      --enable-bsf=NAME        enable bitstream filter NAME
      --disable-bsf=NAME       disable bitstream filter NAME
      --disable-bsfs           disable all bitstream filters
      --enable-protocol=NAME   enable protocol NAME
      --disable-protocol=NAME  disable protocol NAME
      --disable-protocols      disable all protocols
    
      --enable-indev=NAME      enable input device NAME
    
      --disable-indev=NAME     disable input device NAME
      --disable-indevs         disable input devices
    
      --enable-outdev=NAME     enable output device NAME
      --disable-outdev=NAME    disable output device NAME
    
      --disable-outdevs        disable output devices
      --disable-devices        disable all devices
      --enable-filter=NAME     enable filter NAME
      --disable-filter=NAME    disable filter NAME
      --disable-filters        disable all filters
    
    External library support:
    
      --disable-audiotoolbox   enable AudioToolbox decoders and encoders [autodetect]
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      --enable-avisynth        enable reading of AviSynth script files [no]
    
      --disable-bzlib          disable bzlib [autodetect]
    
      --enable-chromaprint     enable audio fingerprinting with chromaprint [no]
    
      --enable-frei0r          enable frei0r video filtering [no]
    
      --enable-gcrypt          enable gcrypt, needed for rtmp(t)e support
                               if openssl, librtmp or gmp is not used [no]
      --enable-gmp             enable gmp, needed for rtmp(t)e support
                               if openssl or librtmp is not used [no]
    
      --enable-gnutls          enable gnutls, needed for https support
                               if openssl is not used [no]
    
      --disable-iconv          disable iconv [autodetect]
    
    Matthieu Bouron's avatar
    Matthieu Bouron committed
      --enable-jni             enable JNI support [no]
    
      --enable-ladspa          enable LADSPA audio filtering [no]
      --enable-libass          enable libass subtitles rendering,
                               needed for subtitles and ass filter [no]
    
    Petri Hintukainen's avatar
    Petri Hintukainen committed
      --enable-libbluray       enable BluRay reading using libbluray [no]
    
      --enable-libbs2b         enable bs2b DSP library [no]
    
      --enable-libcaca         enable textual display using libcaca [no]
    
      --enable-libcelt         enable CELT decoding via libcelt [no]
    
      --enable-libcdio         enable audio CD grabbing with libcdio [no]
    
      --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
                               and libraw1394 [no]
    
    Kyle Swanson's avatar
    Kyle Swanson committed
      --enable-libebur128      enable libebur128 for EBU R128 measurement,
                               needed for loudnorm filter [no]
    
      --enable-libfaac         enable AAC encoding via libfaac [no]
    
      --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
    
      --enable-libflite        enable flite (voice synthesis) support via libflite [no]
    
      --enable-libfontconfig   enable libfontconfig, useful for drawtext filter [no]
    
      --enable-libfreetype     enable libfreetype, needed for drawtext filter [no]
      --enable-libfribidi      enable libfribidi, improves drawtext filter [no]
    
    wm4's avatar
    wm4 committed
      --enable-libgme          enable Game Music Emu via libgme [no]
    
      --enable-libgsm          enable GSM de/encoding via libgsm [no]
    
      --enable-libiec61883     enable iec61883 via libiec61883 [no]
    
      --enable-libilbc         enable iLBC de/encoding via libilbc [no]
    
      --enable-libkvazaar      enable HEVC encoding via libkvazaar [no]
    
    Clément Bœsch's avatar
    Clément Bœsch committed
      --enable-libmodplug      enable ModPlug via libmodplug [no]
    
      --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
      --enable-libnut          enable NUT (de)muxing via libnut,
                               native (de)muxer exists [no]
    
      --enable-libnpp          enable NVIDIA Performance Primitives-based code [no]
    
      --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
      --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
      --enable-libopencv       enable video filtering via libopencv [no]
    
      --enable-libopenh264     enable H.264 encoding via OpenH264 [no]
    
      --enable-libopenjpeg     enable JPEG 2000 de/encoding via OpenJPEG [no]
    
      --enable-libopus         enable Opus de/encoding via libopus [no]
    
      --enable-libpulse        enable Pulseaudio input via libpulse [no]
    
      --enable-librubberband   enable rubberband needed for rubberband filter [no]
    
      --enable-librtmp         enable RTMP[E] support via librtmp [no]
    
      --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
    
      --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
    
      --enable-libsmbclient    enable Samba protocol via libsmbclient [no]
    
      --enable-libsnappy       enable Snappy compression, needed for hap encoding [no]
    
      --enable-libsoxr         enable Include libsoxr resampling [no]
    
      --enable-libspeex        enable Speex de/encoding via libspeex [no]
    
      --enable-libssh          enable SFTP protocol via libssh [no]
    
    Paul B Mahol's avatar
    Paul B Mahol committed
      --enable-libtesseract    enable Tesseract, needed for ocr filter [no]
    
      --enable-libtheora       enable Theora encoding via libtheora [no]
    
      --enable-libtwolame      enable MP2 encoding via libtwolame [no]
    
      --enable-libv4l2         enable libv4l2/v4l-utils [no]
    
      --enable-libvidstab      enable video stabilization using vid.stab [no]
    
      --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
    
      --enable-libvorbis       enable Vorbis en/decoding via libvorbis,
    
                               native implementation exists [no]
    
      --enable-libvpx          enable VP8 and VP9 de/encoding via libvpx [no]
    
      --enable-libwavpack      enable wavpack encoding via libwavpack [no]
    
    Justin Ruggles's avatar
    Justin Ruggles committed
      --enable-libwebp         enable WebP encoding via libwebp [no]
    
      --enable-libx264         enable H.264 encoding via x264 [no]
    
    Derek Buitenhuis's avatar
    Derek Buitenhuis committed
      --enable-libx265         enable HEVC encoding via x265 [no]
    
      --enable-libxavs         enable AVS encoding via xavs [no]
    
      --enable-libxcb          enable X11 grabbing using XCB [autodetect]
      --enable-libxcb-shm      enable X11 grabbing shm communication [autodetect]
      --enable-libxcb-xfixes   enable X11 grabbing mouse rendering [autodetect]
      --enable-libxcb-shape    enable X11 grabbing shape rendering [autodetect]
    
      --enable-libxvid         enable Xvid encoding via xvidcore,
                               native MPEG-4/Xvid encoder exists [no]
    
      --enable-libzimg         enable z.lib, needed for zscale filter [no]
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
      --enable-libzmq          enable message passing via libzmq [no]
    
      --enable-libzvbi         enable teletext support via libzvbi [no]
    
      --disable-lzma           disable lzma [autodetect]
    
      --enable-decklink        enable Blackmagic DeckLink I/O support [no]
    
      --enable-mediacodec      enable Android MediaCodec support [no]
    
      --enable-netcdf          enable NetCDF, needed for sofalizer filter [no]
    
      --enable-openal          enable OpenAL 1.1 capture support [no]
    
      --enable-opencl          enable OpenCL code
    
    Lukasz Marek's avatar
    Lukasz Marek committed
      --enable-opengl          enable OpenGL rendering [no]
    
      --enable-openssl         enable openssl, needed for https support
                               if gnutls is not used [no]
    
      --disable-schannel       disable SChannel SSP, needed for TLS support on
                               Windows if openssl and gnutls are not used [autodetect]
    
      --disable-sdl            disable sdl [autodetect]
    
      --disable-securetransport disable Secure Transport, needed for TLS support
                               on OSX if openssl and gnutls are not used [autodetect]
    
      --disable-videotoolbox   disable VideoToolbox code [autodetect]
    
      --enable-x11grab         enable X11 grabbing (legacy) [no]
    
      --disable-xlib           disable xlib [autodetect]
    
      --disable-zlib           disable zlib [autodetect]
    
    Toolchain options:
      --arch=ARCH              select architecture [$arch]
      --cpu=CPU                select the minimum required CPU (affects
                               instruction selection, may crash on older CPUs)
    
      --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
    
      --progs-suffix=SUFFIX    program name suffix []
    
      --enable-cross-compile   assume a cross-compiler is used
      --sysroot=PATH           root of cross-build tree
      --sysinclude=PATH        location of cross-build system headers
      --target-os=OS           compiler targets OS [$target_os]
      --target-exec=CMD        command to run executables on target
      --target-path=DIR        path to view of build directory on target
    
      --target-samples=DIR     path to samples directory on target
    
      --tempprefix=PATH        force fixed dir/prefix instead of mktemp for checks
    
      --toolchain=NAME         set tool defaults according to NAME
    
      --nm=NM                  use nm tool NM [$nm_default]
    
      --ar=AR                  use archive tool AR [$ar_default]
    
      --as=AS                  use assembler AS [$as_default]
    
      --ln_s=LN_S              use symbolic link tool LN_S [$ln_s_default]
    
      --strip=STRIP            use strip tool STRIP [$strip_default]
    
      --windres=WINDRES        use windows resource compiler WINDRES [$windres_default]
    
      --yasmexe=EXE            use yasm-compatible assembler EXE [$yasmexe_default]
    
      --cc=CC                  use C compiler CC [$cc_default]
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
      --cxx=CXX                use C compiler CXX [$cxx_default]
    
    Luca Barbato's avatar
    Luca Barbato committed
      --objcc=OCC              use ObjC compiler OCC [$cc_default]
    
      --dep-cc=DEPCC           use dependency generator DEPCC [$cc_default]
    
      --ld=LD                  use linker LD [$ld_default]
    
      --pkg-config=PKGCONFIG   use pkg-config tool PKGCONFIG [$pkg_config_default]
    
      --pkg-config-flags=FLAGS pass additional flags to pkgconf []
    
      --ranlib=RANLIB          use ranlib RANLIB [$ranlib_default]
    
      --doxygen=DOXYGEN        use DOXYGEN to generate API doc [$doxygen_default]
    
      --host-cc=HOSTCC         use host C compiler HOSTCC
      --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
    
      --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
    
      --host-ld=HOSTLD         use host linker HOSTLD
    
      --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
      --host-libs=HLIBS        use libs HLIBS when linking for host
    
      --host-os=OS             compiler host OS [$target_os]
    
      --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
      --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
    
    Luca Barbato's avatar
    Luca Barbato committed
      --extra-objcflags=FLAGS  add FLAGS to OBJCFLAGS [$CFLAGS]
    
      --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
    
      --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
    
      --extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS]
    
      --extra-libs=ELIBS       add ELIBS [$ELIBS]
      --extra-version=STRING   version string suffix []
    
      --optflags=OPTFLAGS      override optimization-related compiler flags
    
      --build-suffix=SUFFIX    library name suffix []
    
      --enable-pic             build position-independent code
    
      --enable-thumb           compile for Thumb instruction set
    
      --enable-lto             use link-time optimization
    
      --env="ENV=override"     override the environment variables
    
    
    Advanced options (experts only):
      --malloc-prefix=PREFIX   prefix malloc and related names with PREFIX
    
      --custom-allocator=NAME  use a supported custom allocator
    
      --disable-symver         disable symbol versioning
      --enable-hardcoded-tables use hardcoded tables instead of runtime generation
      --disable-safe-bitstream-reader
                               disable buffer boundary checking in bitreaders
                               (faster, but may crash)
      --enable-memalign-hack   emulate memalign, interferes with memory debuggers
    
      --sws-max-filter-size=N  the max filter size swscale uses [$sws_max_filter_size_default]
    
    
    Optimization options (experts only):
    
      --disable-asm            disable all assembly optimizations
    
      --disable-altivec        disable AltiVec optimizations
    
      --disable-vsx            disable VSX optimizations
      --disable-power8         disable POWER8 optimizations
    
      --disable-amd3dnow       disable 3DNow! optimizations
      --disable-amd3dnowext    disable 3DNow! extended optimizations
      --disable-mmx            disable MMX optimizations
    
      --disable-mmxext         disable MMXEXT optimizations
    
      --disable-sse            disable SSE optimizations
    
      --disable-sse2           disable SSE2 optimizations
      --disable-sse3           disable SSE3 optimizations
    
      --disable-ssse3          disable SSSE3 optimizations
    
      --disable-sse4           disable SSE4 optimizations
      --disable-sse42          disable SSE4.2 optimizations
    
      --disable-avx            disable AVX optimizations
    
      --disable-xop            disable XOP optimizations
    
      --disable-fma3           disable FMA3 optimizations
    
      --disable-fma4           disable FMA4 optimizations
    
      --disable-avx2           disable AVX2 optimizations
    
    Rodger Combs's avatar
    Rodger Combs committed
      --disable-aesni          disable AESNI optimizations
    
      --disable-armv5te        disable armv5te optimizations
      --disable-armv6          disable armv6 optimizations
      --disable-armv6t2        disable armv6t2 optimizations
    
      --disable-vfp            disable VFP optimizations
    
      --disable-neon           disable NEON optimizations
    
      --disable-inline-asm     disable use of inline assembly
      --disable-yasm           disable use of nasm/yasm assembly
    
      --disable-mipsdsp        disable MIPS DSP ASE R1 optimizations
    
      --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations
    
      --disable-msa            disable MSA optimizations
    
      --disable-mipsfpu        disable floating point MIPS optimizations
    
      --disable-mmi            disable Loongson SIMD optimizations
    
      --disable-fast-unaligned consider unaligned accesses slow
    
    Developer options (useful when working on FFmpeg itself):
    
      --disable-debug          disable debugging symbols
      --enable-debug=LEVEL     set the debug level [$debuglevel]
      --disable-optimizations  disable compiler optimizations
      --enable-extra-warnings  enable more compiler warnings
    
      --disable-stripping      disable stripping of executables and shared libraries
    
      --assert-level=level     0(default), 1 or 2, amount of assertion testing,
    
                               2 causes a slowdown at runtime.
    
      --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
    
      --valgrind=VALGRIND      run "make fate" tests through valgrind to detect memory
                               leaks and errors, using the specified valgrind binary.
                               Cannot be combined with --target-exec
    
      --enable-ftrapv          Trap arithmetic overflows
    
      --samples=PATH           location of test samples for FATE, if not set use
                               \$FATE_SAMPLES at make invocation time.
    
      --enable-neon-clobber-test check NEON registers for clobbering (should be
                               used only for debugging purposes)
    
      --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
                               should be used only for debugging purposes)
    
      --enable-random          randomly enable/disable components
      --disable-random
      --enable-random=LIST     randomly enable/disable specific components or
      --disable-random=LIST    component groups. LIST is a comma-separated list
                               of NAME[:PROB] entries where NAME is a component
                               (group) and PROB the probability associated with
                               NAME (default 0.5).
      --random-seed=VALUE      seed value for --enable/disable-random
    
      --disable-valgrind-backtrace do not print a backtrace under Valgrind
                               (only applies to --disable-optimizations builds)
    
    
    NOTE: Object files are built at the place where configure is launched.
    EOF
    
    if test -t 1 && which tput >/dev/null 2>&1; then
    
        ncolors=$(tput colors)
        if test -n "$ncolors" && test $ncolors -ge 8; then
            bold_color=$(tput bold)
            warn_color=$(tput setaf 3)
    
            error_color=$(tput setaf 1)
    
        # 72 used instead of 80 since that's the default of pr
        ncols=$(tput cols)
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        log BEGIN $1
    
        pr -n -t $1 >> $logfile
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        log END $1
    }
    
    
    warn(){
        log "WARNING: $*"
        WARNINGS="${WARNINGS}WARNING: $*\n"
    }
    
    
        log "$@"
        echo "$error_color$bold_color$@$reset_color"
    
    If you think configure made a mistake, make sure you are using the latest
    
    version from Git.  If the latest version fails, report the problem to the
    
    ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
    
    Rerun configure with logging enabled (do not use --disable-logging), and
    include the log this produces with your report.
    
            cat <<EOF
    
    Include the log file "$logfile" produced by configure as this will help
    
    Lou Logan's avatar
    Lou Logan committed
    solve the problem.
    
    # Avoid locale weirdness, besides we really just want to translate ASCII.
    
        echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
    tolower(){
    
        echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
    
    c_escape(){
        echo "$*" | sed 's/["\\]/\\\0/g'
    }
    
    
    sh_quote(){
        v=$(echo "$1" | sed "s/'/'\\\\''/g")
    
        test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
    
    cleanws(){
    
        echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
    
            eval "case $v in $pat) echo $v ;; esac"
    
    filter_out(){
        pat=$1
        shift
        for v; do
            eval "case $v in $pat) ;; *) echo $v ;; esac"
        done
    }
    
    
        for v; do eval $m; done
    
    add_suffix(){
        suffix=$1
        shift
        for v; do echo ${v}${suffix}; done
    }
    
    
    set_all(){
        value=$1
        shift
        for var in $*; do
            eval $var=$value
        done
    }
    
    
    set_weak(){
        value=$1
        shift
        for var; do
            eval : \${$var:=$value}
        done
    }
    
    
    sanitize_var_name(){
        echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
    }
    
    
    set_safe(){
        var=$1
        shift
    
        eval $(sanitize_var_name "$var")='$*'
    
        eval echo \$$(sanitize_var_name "$1")
    
        for pvar in $*; do
            eval level=\${${pvar}_level:=0}
            eval ${pvar}_${level}="\$$pvar"
            eval ${pvar}_level=$(($level+1))
    
        for pvar in $*; do
            eval level=\${${pvar}_level:-0}
    
            test $level = 0 && continue
            eval level=$(($level-1))
    
            eval $pvar="\${${pvar}_${level}}"
            eval ${pvar}_level=$level
            eval unset ${pvar}_${level}
    
    enable(){
        set_all yes $*
    }
    
    disable(){
        set_all no $*
    }
    
    
    enable_weak(){
        set_weak yes $*
    }
    
    disable_weak(){
        set_weak no $*
    }
    
    
        for var; do
            enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
        done
    
        for var; do
            disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
        done
    
    do_enable_deep(){
        for var; do
            enabled $var && continue
    
            eval sgs="\$${var}_suggest"
            pushvar var sgs
    
            popvar sgs
            enable_deep_weak $sgs
    
            popvar var
        done
    }
    
    enable_deep(){
        do_enable_deep $*
        enable $*
    }
    
    
    enable_deep_weak(){
    
        for var; do
            disabled $var && continue
            pushvar var
            do_enable_deep $var
            popvar var
            enable_weak $var
        done
    
        test "${1#!}" = "$1" && op='=' || op=!=
    
        test "${1#!}" = "$1" && op='=' || op=!=
    
    enabled_all(){
        for opt; do
            enabled $opt || return 1
        done
    }
    
    
    disabled_all(){
        for opt; do
            disabled $opt || return 1
        done
    }
    
    
    enabled_any(){
        for opt; do
            enabled $opt && return 0
        done
    }
    
    
    disabled_any(){
        for opt; do
            disabled $opt && return 0
        done
    
    set_default(){
        for opt; do
    
            eval : \${$opt:=\$${opt}_default}
    
    is_in(){
        value=$1
        shift
        for var in $*; do
            [ $var = $value ] && return 0
        done
        return 1
    }
    
    
            enabled ${cfg}_checking && die "Circular dependency for $cfg."
            disabled ${cfg}_checking && continue
            enable ${cfg}_checking
    
            eval dep_all="\$${cfg}_deps"
    
            eval dep_any="\$${cfg}_deps_any"
    
            eval dep_sel="\$${cfg}_select"
    
            eval dep_sgs="\$${cfg}_suggest"
    
            eval dep_ifa="\$${cfg}_if"
            eval dep_ifn="\$${cfg}_if_any"
    
            pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
    
            do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
    
            popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
    
            [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
            [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
    
    Måns Rullgård's avatar
    Måns Rullgård committed
            enabled_all  $dep_all || disable $cfg
            enabled_any  $dep_any || disable $cfg
    
            disabled_any $dep_sel && disable $cfg
    
            if enabled $cfg; then
    
                enable_deep $dep_sel
    
                enable_deep_weak $dep_sgs
    
            disable ${cfg}_checking
    
    check_deps(){
        unset allopts
    
        do_check_deps "$@"
    
        for cfg in $allopts; do
            enabled $cfg || continue
            eval dep_extralibs="\$${cfg}_extralibs"
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
        done
    }
    
    
    print_config(){
        pfx=$1
    
        map 'eval echo "$v \${$v:-no}"' "$@" |
        awk "BEGIN { split(\"$files\", files) }
            {
                c = \"$pfx\" toupper(\$1);
                v = \$2;
                sub(/yes/, 1, v);
                sub(/no/,  0, v);
                for (f in files) {
                    file = files[f];
                    if (file ~ /\\.h\$/) {
                        printf(\"#define %s %d\\n\", c, v) >>file;
                    } else if (file ~ /\\.asm\$/) {
                        printf(\"%%define %s %d\\n\", c, v) >>file;
                    } else if (file ~ /\\.mak\$/) {
    
                        n = -v ? \"\" : \"!\";
    
                        printf(\"%s%s=yes\\n\", n, c) >>file;
    
                    } else if (file ~ /\\.texi\$/) {
                        pre = -v ? \"\" : \"@c \";
                        yesno = \$2;
                        c2 = tolower(c);
                        gsub(/_/, \"-\", c2);
                        printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
    
    print_enabled(){
        suf=$1
        shift
        for v; do
    
            enabled $v && printf "%s\n" ${v%$suf}
    
    prepend(){
        var=$1
        shift
        eval "$var=\"$* \$$var\""
    }
    
    
    unique(){
        var=$1
        uniq_list=""
        for tok in $(eval echo \$$var); do
            uniq_list="$(filter_out $tok $uniq_list) $tok"
        done
        eval "$var=\"${uniq_list}\""
    }
    
    
        append CPPFLAGS "$@"
    
        append CFLAGS $($cflags_filter "$@")
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    add_cxxflags(){
    
        append CXXFLAGS $($cflags_filter "$@")
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    }
    
    
        append ASFLAGS $($asflags_filter "$@")
    
    Luca Barbato's avatar
    Luca Barbato committed
    add_objcflags(){
        append OBJCFLAGS $($objcflags_filter "$@")
    }
    
    
        append LDFLAGS $($ldflags_filter "$@")
    
    add_ldexeflags(){
        append LDEXEFLAGS $($ldflags_filter "$@")
    }
    
    
    add_ldlibflags(){
        append LDLIBFLAGS $($ldflags_filter "$@")
    }
    
    
    add_stripflags(){
    
        append ASMSTRIPFLAGS "$@"
    
        prepend extralibs $($ldflags_filter "$@")
    
    add_host_cppflags(){
        append host_cppflags "$@"
    }
    
    
    add_host_cflags(){
        append host_cflags $($host_cflags_filter "$@")
    }
    
    add_host_ldflags(){
        append host_ldflags $($host_ldflags_filter "$@")
    
    add_compat(){
        append compat_objs $1
        shift
        map 'add_cppflags -D$v' "$@"
    }
    
    
        log "$@"
    
    check_stat(){
        log check_stat "$@"
        stat "$1" >> $logfile 2>&1
    }
    
    
    cc_o(){
        eval printf '%s\\n' $CC_O
    }
    
    
    cc_e(){
        eval printf '%s\\n' $CC_E
    }
    
    
        check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    check_cxx(){
        log check_cxx "$@"
        cat > $TMPCPP
        log_file $TMPCPP
    
        check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    }
    
    
    Luca Barbato's avatar
    Luca Barbato committed
    check_objcc(){
        log check_objcc "$@"
    
        cat > $TMPM
        log_file $TMPM
    
        check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
    
        check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
    
    as_o(){
        eval printf '%s\\n' $AS_O
    }
    
    
    check_as(){
        log check_as "$@"
    
        cat > $TMPS
        log_file $TMPS
        check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
    
    check_inline_asm(){
        log check_inline_asm "$@"
    
        check_cc "$@" <<EOF && enable $name
    
    void foo(void){ __asm__ volatile($code); }
    
    check_inline_asm_flags(){
        log check_inline_asm_flags "$@"
        name="$1"
        code="$2"
        flags=''
        shift 2
        while [ "$1" != "" ]; do
          append flags $1
          shift
        done;
        disable $name
        cat > $TMPC <<EOF
    void foo(void){ __asm__ volatile($code); }
    EOF
        log_file $TMPC
        check_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
        enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
    }
    
    
    check_insn(){
        log check_insn "$@"
        check_inline_asm ${1}_inline "\"$2\""
        echo "$2" | check_as && enable ${1}_external || disable ${1}_external
    }
    
    
    Loren Merritt's avatar
    Loren Merritt committed
    check_yasm(){
        log check_yasm "$@"
        echo "$1" > $TMPS
        log_file $TMPS
        shift 1
    
        check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
    
    ld_o(){
        eval printf '%s\\n' $LD_O
    }
    
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
        type=$1
        shift 1
    
    Jonas Bechtel's avatar
    Jonas Bechtel committed
        flags=$(filter_out '-l*|*.so' $@)
        libs=$(filter '-l*|*.so' $@)
    
        check_$type $($cflags_filter $flags) || return
    
        flags=$($ldflags_filter $flags)
        libs=$($ldflags_filter $libs)
    
        check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
    
    print_include(){
        hdr=$1
        test "${hdr%.h}" = "${hdr}" &&
            echo "#include $hdr"    ||
            echo "#include <$hdr>"
    }
    
    
    check_code(){
        log check_code "$@"
        check=$1
        headers=$2
        code=$3
        shift 3
        {
            for hdr in $headers; do
    
            done
            echo "int main(void) { $code; return 0; }"
        } | check_$check "$@"
    }
    
    
    check_cppflags(){
        log check_cppflags "$@"