Skip to content
Snippets Groups Projects
configure 111 KiB
Newer Older
  • Learn to ignore specific revisions
  • Aurelien Jacobs's avatar
    Aurelien Jacobs committed
        hardcoded_tables
    
    tipok's avatar
    tipok committed
        libaacplus
    
    Ramiro Polla's avatar
    Ramiro Polla committed
        libdc1394
    
    Clément Bœsch's avatar
    Clément Bœsch committed
        libmodplug
    
        libopenjpeg
    
        libspeex
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
        libstagefright_h264
    
        libtheora
    
        libv4l2
    
    James Zern's avatar
    James Zern committed
        libvpx
    
        runtime_cpudetect
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
        swresample
    
        os2threads
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        tomi
    
        armvfp
    
    Mans Rullgard's avatar
    Mans Rullgard committed
        vfpv3
    
    HAVE_LIST_PUB='
        bigendian
    
        fast_unaligned
    
        aligned_stack
    
        alsa_asoundlib_h
    
        attribute_may_alias
    
        attribute_packed
    
    Alex Beregszaszi's avatar
    Alex Beregszaszi committed
        closesocket
    
        dev_bktr_ioctl_bt848_h
        dev_bktr_ioctl_meteor_h
        dev_ic_bt8xx_h
        dev_video_meteor_ioctl_meteor_h
        dev_video_bktr_ioctl_bt848_h
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        fcntl
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        fork
    
    Ramiro Polla's avatar
    Ramiro Polla committed
        getrusage
    
        inline_asm
    
        kbhit
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        ldbrx
    
        machine_ioctl_bt848_h
        machine_ioctl_meteor_h
    
        MapViewOfFile
    
        mkstemp
    
        posix_memalign
    
        sndio_h
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        soundcard_h
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        setrlimit
    
        strerror_r
    
        strptime
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        sys_soundcard_h
    
    Loren Merritt's avatar
    Loren Merritt committed
        yasm
    
    # options emitted with CONFIG_ prefix but not available on command line
    CONFIG_EXTRA="
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
        cxx
    
        host_cc
        host_cflags
        host_ldflags
        host_libs
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        samples
    
    CMDLINE_APPEND="
        extra_cflags
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
        extra_cxxflags
    
    # code dependency declarations
    
    
    # architecture extensions
    
    armv5te_deps="arm"
    armv6_deps="arm"
    
    armv6t2_deps="arm"
    
    armvfp_deps="arm"
    iwmmxt_deps="arm"
    
    Mans Rullgard's avatar
    Mans Rullgard committed
    vfpv3_deps="armvfp"
    
    
    altivec_deps="ppc"
    ppc4xx_deps="ppc"
    
    vis_deps="sparc"
    
    
    x86_64_suggest="cmov fast_cmov"
    
    amd3dnow_deps="mmx"
    amd3dnowext_deps="amd3dnow"
    
    mmx_deps="x86"
    
    mmx2_deps="mmx"
    sse_deps="mmx"
    ssse3_deps="sse"
    
    avx_deps="ssse3"
    
    aligned_stack_if_any="ppc x86"
    
    fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
    
    fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
    
    fast_unaligned_if_any="armv6 ppc x86"
    
    need_memalign="altivec neon sse"
    
    inline_asm_deps="!tms470"
    
    symver_if_any="symver_asm_label symver_gnu_asm"
    
    
    dct_select="rdft"
    
    mdct_select="fft"
    rdft_select="fft"
    
    # decoders / encoders / hardware accelerators
    
    aac_decoder_select="mdct sinewin"
    
    aac_encoder_select="mdct sinewin"
    
    aac_latm_decoder_select="aac_decoder aac_latm_parser"
    
    ac3_decoder_select="mdct ac3dsp ac3_parser"
    
    ac3_encoder_select="mdct ac3dsp"
    
    ac3_fixed_encoder_select="mdct ac3dsp"
    
    atrac1_decoder_select="mdct sinewin"
    
    binkaudio_dct_decoder_select="mdct rdft dct sinewin"
    binkaudio_rdft_decoder_select="mdct rdft sinewin"
    
    cavs_decoder_select="golomb"
    
    cook_decoder_select="mdct sinewin"
    
    cscd_decoder_suggest="zlib"
    
    dnxhd_encoder_select="aandct"
    
    dxa_decoder_select="zlib"
    
    eac3_decoder_select="ac3_decoder"
    
    eac3_encoder_select="mdct ac3dsp"
    
    eamad_decoder_select="aandct"
    
    eatgq_decoder_select="aandct"
    
    eatqi_decoder_select="aandct"
    
    ffv1_decoder_select="golomb"
    flac_decoder_select="golomb"
    
    flashsv_decoder_select="zlib"
    flashsv_encoder_select="zlib"
    
    flashsv2_encoder_select="zlib"
    
    flashsv2_decoder_select="zlib"
    
    flv_decoder_select="h263_decoder"
    
    flv_encoder_select="h263_encoder"
    
    fraps_decoder_select="huffman"
    
    h261_encoder_select="aandct"
    
    h263_encoder_select="aandct"
    
    h263_vaapi_hwaccel_select="vaapi h263_decoder"
    
    h263i_decoder_select="h263_decoder"
    
    h263p_encoder_select="h263_encoder"
    
    h264_decoder_select="golomb h264dsp h264pred"
    
    h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
    
    Laurent Aimar's avatar
    Laurent Aimar committed
    h264_dxva2_hwaccel_deps="dxva2api_h"
    h264_dxva2_hwaccel_select="dxva2 h264_decoder"
    
    h264_vaapi_hwaccel_select="vaapi h264_decoder"
    
    h264_vda_hwaccel_deps="VideoDecodeAcceleration_VDADecoder_h"
    h264_vda_hwaccel_select="vda"
    
    h264_vdpau_decoder_select="vdpau h264_decoder"
    
    imc_decoder_select="fft mdct sinewin"
    
    jpegls_decoder_select="golomb"
    jpegls_encoder_select="golomb"
    
    ljpeg_encoder_select="aandct"
    
    loco_decoder_select="golomb"
    
    mjpeg_encoder_select="aandct"
    
    mlp_decoder_select="mlp_parser"
    
    mp1_decoder_select="mpegaudiodsp"
    mp2_decoder_select="mpegaudiodsp"
    mp3adu_decoder_select="mpegaudiodsp"
    mp3_decoder_select="mpegaudiodsp"
    mp3on4_decoder_select="mpegaudiodsp"
    mp1float_decoder_select="mpegaudiodsp"
    mp2float_decoder_select="mpegaudiodsp"
    mp3adufloat_decoder_select="mpegaudiodsp"
    mp3float_decoder_select="mpegaudiodsp"
    mp3on4float_decoder_select="mpegaudiodsp"
    
    mpeg1video_encoder_select="aandct"
    mpeg2video_encoder_select="aandct"
    
    mpeg4_decoder_select="h263_decoder mpeg4video_parser"
    
    mpeg4_encoder_select="h263_encoder"
    
    mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
    mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
    
    mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
    
    mpeg2_crystalhd_decoder_select="crystalhd"
    
    mpeg2_dxva2_hwaccel_deps="dxva2api_h"
    mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
    
    mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder"
    
    mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
    
    mpeg4_crystalhd_decoder_select="crystalhd"
    
    mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
    
    mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
    
    mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
    
    mpeg_xvmc_decoder_select="mpegvideo_decoder"
    
    msmpeg4_crystalhd_decoder_select="crystalhd"
    
    msmpeg4v1_decoder_select="h263_decoder"
    
    msmpeg4v1_encoder_select="h263_encoder"
    
    msmpeg4v2_decoder_select="h263_decoder"
    
    msmpeg4v2_encoder_select="h263_encoder"
    
    msmpeg4v3_decoder_select="h263_decoder"
    
    msmpeg4v3_encoder_select="h263_encoder"
    
    nellymoser_decoder_select="mdct sinewin"
    nellymoser_encoder_select="mdct sinewin"
    
    png_decoder_select="zlib"
    png_encoder_select="zlib"
    
    qdm2_decoder_select="mdct rdft mpegaudiodsp"
    
    ra_144_encoder_select="lpc"
    
    rv30_decoder_select="golomb h264pred"
    rv40_decoder_select="golomb h264pred"
    
    shorten_decoder_select="golomb"
    
    snow_decoder_select="dwt"
    snow_encoder_select="aandct dwt"
    
    sonic_decoder_select="golomb"
    sonic_encoder_select="golomb"
    sonic_ls_encoder_select="golomb"
    
    svq1_encoder_select="aandct"
    
    svq3_decoder_select="golomb h264dsp h264pred"
    
    svq3_decoder_suggest="zlib"
    
    theora_decoder_select="vp3_decoder"
    
    tiff_decoder_suggest="zlib"
    tiff_encoder_suggest="zlib"
    
    truehd_decoder_select="mlp_decoder"
    
    tscc_decoder_select="zlib"
    
    twinvq_decoder_select="mdct lsp sinewin"
    
    vc1_crystalhd_decoder_select="crystalhd"
    
    vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
    
    vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
    vc1_vdpau_decoder_select="vdpau vc1_decoder"
    
    vc1image_decoder_select="vc1_decoder"
    
    vorbis_decoder_select="mdct"
    vorbis_encoder_select="mdct"
    
    vp6_decoder_select="huffman"
    
    vp6a_decoder_select="vp6_decoder"
    vp6f_decoder_select="vp6_decoder"
    
    vp8_decoder_select="h264pred"
    
    wmapro_decoder_select="mdct sinewin"
    wmav1_decoder_select="mdct sinewin"
    wmav1_encoder_select="mdct sinewin"
    wmav2_decoder_select="mdct sinewin"
    wmav2_encoder_select="mdct sinewin"
    wmavoice_decoder_select="lsp rdft dct mdct sinewin"
    
    wmv1_encoder_select="h263_encoder"
    
    wmv2_encoder_select="h263_encoder"
    
    wmv3_decoder_select="vc1_decoder"
    
    wmv3_crystalhd_decoder_select="crystalhd"
    
    wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
    
    wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
    wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
    
    wmv3image_decoder_select="wmv3_decoder"
    
    zlib_decoder_select="zlib"
    zlib_encoder_select="zlib"
    zmbv_decoder_select="zlib"
    zmbv_encoder_select="zlib"
    
    crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
    
    vaapi_deps="va_va_h"
    
    vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
    
    
    h264_parser_select="golomb h264dsp h264pred"
    
    # external libraries
    
    tipok's avatar
    tipok committed
    libaacplus_encoder_deps="libaacplus"
    
    libcelt_decoder_deps="libcelt"
    
    libdirac_decoder_deps="libdirac !libschroedinger"
    
    libdirac_encoder_deps="libdirac"
    
    libgsm_decoder_deps="libgsm"
    libgsm_encoder_deps="libgsm"
    
    libgsm_ms_decoder_deps="libgsm"
    libgsm_ms_encoder_deps="libgsm"
    
    libmodplug_demuxer_deps="libmodplug"
    
    libopencore_amrnb_decoder_deps="libopencore_amrnb"
    libopencore_amrnb_encoder_deps="libopencore_amrnb"
    libopencore_amrwb_decoder_deps="libopencore_amrwb"
    
    libopenjpeg_decoder_deps="libopenjpeg"
    
    libschroedinger_decoder_deps="libschroedinger"
    libschroedinger_encoder_deps="libschroedinger"
    
    libspeex_decoder_deps="libspeex"
    
    Art Clarke's avatar
    Art Clarke committed
    libspeex_encoder_deps="libspeex"
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    libstagefright_h264_decoder_deps="libstagefright_h264"
    
    libtheora_encoder_deps="libtheora"
    
    libvo_aacenc_encoder_deps="libvo_aacenc"
    
    libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
    
    libvorbis_encoder_deps="libvorbis"
    
    James Zern's avatar
    James Zern committed
    libvpx_decoder_deps="libvpx"
    
    James Zern's avatar
    James Zern committed
    libvpx_encoder_deps="libvpx"
    
    libxavs_encoder_deps="libxavs"
    
    libutvideo_decoder_deps="libutvideo gpl"
    
    # demuxers / muxers
    
    ac3_demuxer_select="ac3_parser"
    
    asf_stream_muxer_select="asf_muxer"
    
    avisynth_demuxer_deps="avisynth"
    
    dirac_demuxer_select="dirac_parser"
    
    flac_demuxer_select="flac_parser"
    
    libnut_demuxer_deps="libnut"
    libnut_muxer_deps="libnut"
    
    matroska_audio_muxer_select="matroska_muxer"
    
    matroska_demuxer_suggest="zlib bzlib"
    mov_demuxer_suggest="zlib"
    
    mp3_demuxer_select="mpegaudio_parser"
    
    mp4_muxer_select="mov_muxer"
    mpegtsraw_demuxer_select="mpegts_demuxer"
    mxf_d10_muxer_select="mxf_muxer"
    
    ogg_demuxer_select="golomb"
    
    rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
    rtsp_demuxer_select="http_protocol rtpdec"
    rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
    
    Martin Storsjö's avatar
    Martin Storsjö committed
    sap_demuxer_select="sdp_demuxer"
    
    sap_muxer_select="rtp_muxer rtp_protocol"
    
    spdif_muxer_select="aac_parser"
    
    tg2_muxer_select="mov_muxer"
    tgp_muxer_select="mov_muxer"
    
    w64_demuxer_deps="wav_demuxer"
    
    alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
    alsa_outdev_deps="alsa_asoundlib_h"
    bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
    
    Ramiro Polla's avatar
    Ramiro Polla committed
    dshow_indev_deps="IBaseFilter"
    dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
    
    dv1394_indev_deps="dv1394 dv_demuxer"
    
    fbdev_indev_deps="linux_fb_h"
    
    jack_indev_deps="jack_jack_h sem_timedwait"
    
    lavfi_indev_deps="avfilter"
    
    libcdio_indev_deps="libcdio"
    
    libdc1394_indev_deps="libdc1394"
    
    libv4l2_indev_deps="libv4l2"
    
    openal_indev_deps="openal"
    
    oss_indev_deps_any="soundcard_h sys_soundcard_h"
    oss_outdev_deps_any="soundcard_h sys_soundcard_h"
    
    pulse_indev_deps="libpulse"
    
    sdl_outdev_deps="sdl"
    
    sndio_indev_deps="sndio_h"
    sndio_outdev_deps="sndio_h"
    
    v4l_indev_deps="linux_videodev_h"
    v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
    
    vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
    
    vfwcap_indev_extralibs="-lavicap32"
    
    x11_grab_device_indev_deps="x11grab XShmCreateImage"
    
    Roxis's avatar
    Roxis committed
    x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
    
    # protocols
    
    gopher_protocol_deps="network"
    
    http_protocol_select="tcp_protocol"
    
    https_protocol_select="tls_protocol"
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    mmsh_protocol_select="http_protocol"
    
    mmst_protocol_deps="network"
    
    rtmp_protocol_select="tcp_protocol"
    rtp_protocol_select="udp_protocol"
    
    tls_protocol_deps_any="openssl gnutls"
    tls_protocol_select="tcp_protocol"
    
    udp_protocol_deps="network"
    
    amovie_filter_deps="avcodec avformat"
    
    blackframe_filter_deps="gpl"
    
    boxblur_filter_deps="gpl"
    
    cropdetect_filter_deps="gpl"
    
    delogo_filter_deps="gpl"
    
    drawtext_filter_deps="libfreetype"
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    frei0r_filter_deps="frei0r dlopen"
    frei0r_src_filter_deps="frei0r dlopen"
    
    hqdn3d_filter_deps="gpl"
    
    movie_filter_deps="avcodec avformat"
    mp_filter_deps="gpl avcodec"
    
    mptestsrc_filter_deps="gpl"
    
    negate_filter_deps="lut_filter"
    
    scale_filter_deps="swscale"
    
    # libraries
    avdevice_deps="avcodec avformat"
    avformat_deps="avcodec"
    
    # programs
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    ffmpeg_deps="avcodec avformat swscale swresample"
    
    ffmpeg_select="buffer_filter buffersink_filter"
    
    avconv_deps="avcodec avformat swscale"
    avconv_select="buffer_filter"
    
    ffplay_deps="avcodec avformat swscale sdl"
    
    ffplay_select="buffersink_filter rdft"
    
    ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
    
    ffserver_extralibs='$ldl'
    
    # tests
    
    test_deps(){
        suf1=$1
        suf2=$2
        shift 2
        for v; do
            dep=${v%=*}
            tests=${v#*=}
            for name in ${tests}; do
    
                append ${name}_test_deps ${dep}$suf1 ${dep}$suf2
    
    mxf_d10_test_deps="avfilter"
    seek_lavf_mxf_d10_test_deps="mxf_d10_test"
    
    
    test_deps _encoder _decoder                                             \
        adpcm_g726=g726                                                     \
        adpcm_ima_qt                                                        \
        adpcm_ima_wav                                                       \
        adpcm_ms                                                            \
        adpcm_swf                                                           \
        adpcm_yamaha=adpcm_yam                                              \
        alac                                                                \
        asv1                                                                \
        asv2                                                                \
        bmp                                                                 \
    
        dnxhd="dnxhd_1080i dnxhd_720p dnxhd_720p_rd"                        \
    
        dvvideo="dv dv50"                                                   \
        ffv1                                                                \
        flac                                                                \
        flashsv                                                             \
        flv                                                                 \
        gif                                                                 \
        h261                                                                \
        h263="h263 h263p"                                                   \
        huffyuv                                                             \
        jpegls                                                              \
        mjpeg="jpg mjpeg ljpeg"                                             \
        mp2                                                                 \
        mpeg1video="mpeg mpeg1b"                                            \
        mpeg2video="mpeg2 mpeg2thread"                                      \
        mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc"                 \
    
        msmpeg4v3=msmpeg4                                                   \
    
        msmpeg4v2                                                           \
        pbm=pbmpipe                                                         \
        pcx                                                                 \
        pgm="pgm pgmpipe"                                                   \
    
        ppm="ppm ppmpipe"                                                   \
        rawvideo="rgb yuv"                                                  \
        roq                                                                 \
        rv10                                                                \
        rv20                                                                \
        sgi                                                                 \
        snow="snow snowll"                                                  \
        svq1                                                                \
        targa=tga                                                           \
        tiff                                                                \
        wmav1                                                               \
        wmav2                                                               \
        wmv1                                                                \
        wmv2                                                                \
    
    test_deps _muxer _demuxer                                               \
        aiff                                                                \
        pcm_alaw=alaw                                                       \
        asf                                                                 \
        au                                                                  \
        avi                                                                 \
        dv=dv_fmt                                                           \
        ffm                                                                 \
        flv=flv_fmt                                                         \
        gxf                                                                 \
        matroska=mkv                                                        \
        mmf                                                                 \
        mov                                                                 \
        pcm_mulaw=mulaw                                                     \
    
        mxf="mxf mxf_d10"                                                   \
    
        nut                                                                 \
        ogg                                                                 \
        rawvideo=pixfmt                                                     \
        rm                                                                  \
        swf                                                                 \
        mpegts=ts                                                           \
        voc                                                                 \
        wav                                                                 \
        yuv4mpegpipe=yuv4mpeg                                               \
    
    
    ac3_fixed_test_deps="ac3_fixed_encoder ac3_decoder rm_muxer rm_demuxer"
    
    mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    # default parameters
    
    
    # installation paths
    
    prefix_default="/usr/local"
    bindir_default='${prefix}/bin'
    
    datadir_default='${prefix}/share/ffmpeg'
    
    incdir_default='${prefix}/include'
    libdir_default='${prefix}/lib'
    mandir_default='${prefix}/share/man'
    shlibdir_default="$libdir_default"
    
    ar_default="ar"
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    cxx_default="g++"
    
    host_cc_default="gcc"
    
    ln_s="ln -sf"
    
    objformat="elf"
    
    pkg_config_default=pkg-config
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    ranlib="ranlib"
    
    yasmexe="yasm"
    
    target_os_default=$(tolower $(uname -s))
    host_os=$target_os_default
    
    
    # configurable options
    
    enable avcodec
    enable avdevice
    
    enable avutil
    
    enable fastdiv
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    enable ffprobe
    
    enable ffserver
    enable network
    
    enable static
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    enable swresample
    
    SHFLAGS='-shared -Wl,-soname,$$(@F)'
    
    FULLNAME='$(NAME)$(BUILDSUF)'
    LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
    
    SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
    
    SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
    SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
    
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
    SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    CXX_O='-o $@'
    
    host_cflags='-D_ISOC99_SOURCE -O3 -g'
    
    target_path='$(CURDIR)'
    
    # since the object filename is not given with the -MM flag, the compiler
    # is only able to print the basename, and we must add the path ourselves
    
    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
    
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
    
    if test -f configure; then
    
        source_path=.
    
        source_path=$(cd $(dirname "$0"); pwd)
    
        echo "$source_path" | grep -q '[[:blank:]]' &&
    
            die "Out of tree builds are impossible with whitespace in source path."
    
        test -e "$source_path/config.h" &&
            die "Out of tree builds are impossible with config.h in source dir."
    
        r=${v#*=}
        l=${v%"$r"}
        r=$(sh_quote "$r")
    
        FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
    
    find_things(){
        thing=$1
        pattern=$2
        file=$source_path/$3
    
        sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
    
    }
    
    ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
    DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
    
    HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
    
    PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
    BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
    MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
    DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
    
    OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
    INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
    
    PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
    
    FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
    
        map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]')
    
    }
    
    ACODEC_TESTS=$(find_tests acodec)
    VCODEC_TESTS=$(find_tests vsynth1)
    LAVF_TESTS=$(find_tests lavf)
    
    LAVFI_TESTS=$(find_tests lavfi)
    
    SEEK_TESTS=$(find_tests seek seek_)
    
    pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST))
    
    
    for n in $COMPONENT_LIST; do
        v=$(toupper ${n%s})_LIST
        eval enable \$$v
        eval ${n}_if_any="\$$v"
    done
    
    
    enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS
    
    
    die_unknown(){
        echo "Unknown option \"$1\"."
        echo "See $0 --help for available options."
        exit 1
    }
    
    
    Ramiro Polla's avatar
    Ramiro Polla committed
        suffix=_$1
        shift
    
        echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
    
        --extra-ldflags=*) add_ldflags $optval
    
        --extra-libs=*) add_extralibs $optval
    
        --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
    
        --enable-debug=*) debuglevel="$optval"
        ;;
    
        --disable-everything)
    
        map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
    
        eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
    
        is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
        eval list=\$$(toupper $thing)_LIST
    
        name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
        $action $(filter "$name" $list)
    
        eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
    
        if is_in $option $COMPONENT_LIST; then
    
            test $action = disable && action=unset
    
            eval $action \$$(toupper ${option%s})_LIST
        elif is_in $option $CMDLINE_SELECT; then
            $action $option
        else
            die_unknown $opt
        fi
    
        ;;
        --list-*)
            NAME="${opt#--list-}"
            is_in $NAME $COMPONENT_LIST || die_unknown $opt
            NAME=${NAME%s}
            eval show_list $NAME \$$(toupper $NAME)_LIST
        ;;
        --help|-h) show_help
        ;;
        *)
    
        optname="${optname#--}"
        optname=$(echo "$optname" | sed 's/-/_/g')
    
        if is_in $optname $CMDLINE_SET; then
            eval $optname='$optval'
        elif is_in $optname $CMDLINE_APPEND; then
            append $optname "$optval"
        else
             die_unknown $opt
        fi
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    disabled logging && logfile=/dev/null
    
    
    echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    set >> $logfile
    
    
    test -n "$cross_prefix" && enable cross_compile
    
    
    if enabled cross_compile; then
        test -n "$arch" && test -n "$target_os" ||
            die "Must specify target arch and OS when cross-compiling"
    fi
    
    set_default arch target_os
    
    
    ar_default="${cross_prefix}${ar_default}"
    
    cc_default="${cross_prefix}${cc_default}"
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    cxx_default="${cross_prefix}${cxx_default}"
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    nm_default="${cross_prefix}${nm_default}"
    
    pkg_config_default="${cross_prefix}${pkg_config_default}"
    
    ranlib="${cross_prefix}${ranlib}"
    
    strip_default="${cross_prefix}${strip_default}"
    
    sysinclude_default="${sysroot}/usr/include"
    
    
    set_default cc cxx nm pkg_config strip sysinclude
    
    enabled cross_compile || host_cc_default=$cc
    set_default host_cc
    
    if ! $pkg_config --version >/dev/null 2>&1; then
        warn "$pkg_config not found, library detection may fail."
        pkg_config=false
    fi
    
    
            mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
    
        esac
    }
    
    EXESUF=$(exesuf $target_os)
    HOSTEXESUF=$(exesuf $host_os)
    
    # set temporary file name
    
    : ${TMPDIR:=$TEMPDIR}