Skip to content
Snippets Groups Projects
configure 133 KiB
Newer Older
  • Learn to ignore specific revisions
  •     echo "dcbzl available           ${dcbzl-no}"
    
    fi
    if enabled sparc; then
        echo "VIS enabled               ${vis-no}"
    
    echo "debug symbols             ${debug-no}"
    
    echo "strip symbols             ${stripping-no}"
    
    echo "optimize for size         ${small-no}"
    
    echo "optimizations             ${optimizations-no}"
    
    echo "static                    ${static-no}"
    echo "shared                    ${shared-no}"
    
    echo "postprocessing support    ${postproc-no}"
    
    echo "network support           ${network-no}"
    echo "threading support         ${thread_type-no}"
    
    echo "safe bitstream reader     ${safe_bitstream_reader-no}"
    
    echo "SDL support               ${sdl-no}"
    
    echo "libdxva2 enabled          ${dxva2-no}"
    echo "libva enabled             ${vaapi-no}"
    echo "libvdpau enabled          ${vdpau-no}"
    
    echo "AVISynth enabled          ${avisynth-no}"
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    echo "frei0r enabled            ${frei0r-no}"
    
    echo "gnutls enabled            ${gnutls-no}"
    
    echo "libaacplus enabled        ${libaacplus-no}"
    
    echo "libass enabled            ${libass-no}"
    
    Paul B Mahol's avatar
    Paul B Mahol committed
    echo "libcaca enabled           ${libcaca-no}"
    
    echo "libcdio support           ${libcdio-no}"
    
    echo "libcelt enabled           ${libcelt-no}"
    
    Ramiro Polla's avatar
    Ramiro Polla committed
    echo "libdc1394 support         ${libdc1394-no}"
    
    echo "libfaac enabled           ${libfaac-no}"
    
    echo "libfdk-aac enabled        ${libfdk_aac-no}"
    
    echo "libgsm enabled            ${libgsm-no}"
    
    echo "libiec61883 support       ${libiec61883-no}"
    
    echo "libilbc enabled           ${libilbc-no}"
    
    Clément Bœsch's avatar
    Clément Bœsch committed
    echo "libmodplug enabled        ${libmodplug-no}"
    
    echo "libmp3lame enabled        ${libmp3lame-no}"
    echo "libnut enabled            ${libnut-no}"
    
    echo "libopencore-amrnb support ${libopencore_amrnb-no}"
    echo "libopencore-amrwb support ${libopencore_amrwb-no}"
    
    echo "libopencv support         ${libopencv-no}"
    
    echo "libopenjpeg enabled       ${libopenjpeg-no}"
    
    echo "libopus enabled           ${libopus-no}"
    
    echo "libpulse enabled          ${libpulse-no}"
    
    echo "librtmp enabled           ${librtmp-no}"
    
    echo "libschroedinger enabled   ${libschroedinger-no}"
    
    echo "libspeex enabled          ${libspeex-no}"
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    echo "libstagefright-h264 enabled    ${libstagefright_h264-no}"
    
    echo "libtheora enabled         ${libtheora-no}"
    
    echo "libtwolame enabled        ${libtwolame-no}"
    
    echo "libutvideo enabled        ${libutvideo-no}"
    
    echo "libv4l2 enabled           ${libv4l2-no}"
    
    echo "libvo-aacenc support      ${libvo_aacenc-no}"
    
    echo "libvo-amrwbenc support    ${libvo_amrwbenc-no}"
    
    echo "libvorbis enabled         ${libvorbis-no}"
    
    James Zern's avatar
    James Zern committed
    echo "libvpx enabled            ${libvpx-no}"
    
    echo "libxavs enabled           ${libxavs-no}"
    
    echo "openal enabled            ${openal-no}"
    
    echo "openssl enabled           ${openssl-no}"
    
    echo "zlib enabled              ${zlib-no}"
    
    echo "bzlib enabled             ${bzlib-no}"
    
    echo "texi2html enabled         ${texi2html-no}"
    
    echo "perl enabled              ${perl-no}"
    
    echo "pod2man enabled           ${pod2man-no}"
    echo "makeinfo enabled          ${makeinfo-no}"
    
    test -n "$random_seed" &&
        echo "random seed               ${random_seed}"
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    
    for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
    
        echo "Enabled ${type}s:"
    
        eval list=\$$(toupper $type)_LIST
    
        print_enabled '_*' $list | sort | pr -r -3 -t
    
    license="LGPL version 2.1 or later"
    
    if enabled nonfree; then
    
        license="nonfree and unredistributable"
    
    elif enabled gplv3; then
        license="GPL version 3 or later"
    elif enabled lgplv3; then
        license="LGPL version 3 or later"
    
    elif enabled gpl; then
    
        license="GPL version 2 or later"
    
    echo "Creating config.mak and config.h..."
    
    
    test -e Makefile || $ln_s "$source_path/Makefile" .
    
    enabled stripping || strip="echo skipping strip"
    
    
    config_files="$TMPH config.mak"
    
    
    cat > config.mak <<EOF
    # Automatically generated by configure - do not modify!
    
    ifndef FFMPEG_CONFIG_MAK
    FFMPEG_CONFIG_MAK=1
    
    FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
    
    prefix=$prefix
    LIBDIR=\$(DESTDIR)$libdir
    SHLIBDIR=\$(DESTDIR)$shlibdir
    INCDIR=\$(DESTDIR)$incdir
    BINDIR=\$(DESTDIR)$bindir
    DATADIR=\$(DESTDIR)$datadir
    MANDIR=\$(DESTDIR)$mandir
    
    SRC_PATH=$source_path
    
    ifndef MAIN_MAKEFILE
    SRC_PATH:=\$(SRC_PATH:.%=..%)
    endif
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    CXX=$cxx
    
    DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
    DEPAS=$as
    DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
    
    ARFLAGS=$arflags
    AR_O=$ar_o
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    CXXFLAGS=$CXXFLAGS
    
    CXX_C=$CXX_C
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    CXX_O=$CXX_O
    
    LD_LIB=$LD_LIB
    LD_PATH=$LD_PATH
    
    LDFLAGS-ffserver=$FFSERVERLDFLAGS
    
    SHFLAGS=$SHFLAGS
    YASMFLAGS=$YASMFLAGS
    BUILDSUF=$build_suffix
    
    PROGSSUF=$progs_suffix
    
    FULLNAME=$FULLNAME
    LIBPREF=$LIBPREF
    LIBSUF=$LIBSUF
    LIBNAME=$LIBNAME
    SLIBPREF=$SLIBPREF
    SLIBSUF=$SLIBSUF
    EXESUF=$EXESUF
    EXTRA_VERSION=$extra_version
    CCDEP=$CCDEP
    
    Mohamed Naufal's avatar
    Mohamed Naufal committed
    CXXDEP=$CXXDEP
    
    CC_DEPFLAGS=$CC_DEPFLAGS
    AS_DEPFLAGS=$AS_DEPFLAGS
    HOSTCC=$host_cc
    
    HOSTCFLAGS=$host_cflags
    HOSTEXESUF=$HOSTEXESUF
    HOSTLDFLAGS=$host_ldflags
    HOSTLIBS=$host_libs
    
    DEPHOSTCC=$host_cc
    DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
    HOSTCCDEP=$HOSTCCDEP
    HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
    HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
    
    HOSTLD_O=$HOSTLD_O
    
    TARGET_EXEC=$target_exec
    TARGET_PATH=$target_path
    
    LIBS-ffplay=$sdl_libs
    CFLAGS-ffplay=$sdl_cflags
    
    ZLIB=$($ldflags_filter -lz)
    
    LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
    EXTRALIBS=$extralibs
    
    LIBTARGET=${LIBTARGET}
    SLIBNAME=${SLIBNAME}
    SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
    SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
    SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
    SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
    
    SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
    SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
    SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
    SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
    
    SAMPLES:=${samples:-\$(FATE_SAMPLES)}
    
    NOREDZONE_FLAGS=$noredzone_flags
    
        lcname=$1
        name=$(toupper $lcname)
        file=$source_path/$lcname/version.h
    
        eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
        eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
    
        eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
        eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
    
        name=$1
        file=$source_path/$2
    
    # This condition will be removed when we stop supporting old libpostproc versions
    if ! test "$name" = LIBPOSTPROC || test "$postproc_version" = current; then
    
        eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
        eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
    
        lcname=$(tolower $name)
        eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
        eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
    
    get_version_old LIBPOSTPROC libpostproc/postprocess.h
    get_version_old LIBSWRESAMPLE libswresample/swresample.h
    
    
    get_version libavcodec
    get_version libavdevice
    get_version libavfilter
    get_version libavformat
    get_version libavresample
    get_version libavutil
    get_version libswscale
    
    cat > $TMPH <<EOF
    /* Automatically generated by configure - do not modify! */
    
    #ifndef FFMPEG_CONFIG_H
    #define FFMPEG_CONFIG_H
    #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
    
    #define FFMPEG_LICENSE "$(c_escape $license)"
    
    #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
    
    #define AVCONV_DATADIR "$(eval c_escape $datadir)"
    
    #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
    
    #define av_restrict $_restrict
    
    #define EXTERN_PREFIX "${extern_prefix}"
    #define EXTERN_ASM ${extern_prefix}
    
    #define HAVE_MMX2 HAVE_MMXEXT
    
    test -n "$assert_level" &&
        echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
    
    
    test -n "$malloc_prefix" &&
        echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
    
    
    if enabled yasm; then
        append config_files $TMPASM
        printf '' >$TMPASM
    fi
    
    
    print_config ARCH_   "$config_files" $ARCH_LIST
    print_config HAVE_   "$config_files" $HAVE_LIST
    print_config CONFIG_ "$config_files" $CONFIG_LIST       \
    
    Måns Rullgård's avatar
    Måns Rullgård committed
                                         $CONFIG_EXTRA      \
    
    cat >>config.mak <<EOF
    
    LAVF_FATE_TESTS=$(print_enabled -n _test $LAVF_FATE_TESTS)
    
    LAVF_TESTS=$(print_enabled   -n _test $LAVF_TESTS)
    
    LAVFI_TESTS=$(print_enabled  -n _test $LAVFI_TESTS)
    
    SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
    
    echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
    
    echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
    
    cp_if_changed $TMPH config.h
    
    enabled yasm && cp_if_changed $TMPASM config.asm
    
    
    cat > $TMPH <<EOF
    /* Generated by ffconf */
    #ifndef AVUTIL_AVCONFIG_H
    #define AVUTIL_AVCONFIG_H
    EOF
    
    
    test "$postproc_version" != current && cat >> $TMPH <<EOF
    #define LIBPOSTPROC_VERSION_MAJOR $LIBPOSTPROC_VERSION_MAJOR
    #define LIBPOSTPROC_VERSION_MINOR $LIBPOSTPROC_VERSION_MINOR
    #define LIBPOSTPROC_VERSION_MICRO $LIBPOSTPROC_VERSION_MICRO
    EOF
    
    
    print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
    
    
    echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
    
    cp_if_changed $TMPH libavutil/avconfig.h
    
    
    test -n "$WARNINGS" && printf "\n$WARNINGS"
    
    
    # build pkg-config files
    
    pkgconfig_generate(){
    
        name=$1
        shortname=${name#lib}${build_suffix}
        comment=$2
        version=$3
        libs=$4
        requires=$5
        enabled ${name#lib} || return 0
        mkdir -p $name
        cat <<EOF > $name/$name.pc
    
    exec_prefix=\${prefix}
    
    Name: $name
    Description: $comment
    Version: $version
    
    Requires: $(enabled shared || echo $requires)
    
    Requires.private: $(enabled shared && echo $requires)
    
    Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
    
    Libs.private: $(enabled shared && echo $libs)
    
    Cflags: -I\${includedir}
    
    
    mkdir -p doc/examples/pc-uninstalled
    includedir=${source_path}
    [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
    
        cat <<EOF > doc/examples/pc-uninstalled/$name.pc
    
    libdir=\${pcfiledir}/../../../$name
    includedir=${includedir}
    
    Name: $name
    Description: $comment
    Version: $version
    Requires: $requires
    
    Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
    
    libavfilter_pc_deps=""
    enabled libavfilter_deps_avcodec    && prepend libavfilter_pc_deps "libavcodec = $LIBAVCODEC_VERSION,"
    enabled libavfilter_deps_avformat   && prepend libavfilter_pc_deps "libavformat = $LIBAVFORMAT_VERSION,"
    enabled libavfilter_deps_swscale    && prepend libavfilter_pc_deps "libswscale = $LIBSWSCALE_VERSION,"
    enabled libavfilter_deps_swresample && prepend libavfilter_pc_deps "libswresample = $LIBSWRESAMPLE_VERSION,"
    
    enabled libavfilter_deps_postproc   && prepend libavfilter_pc_deps "libpostproc = $LIBPOSTPROC_VERSION,"
    
    libavfilter_pc_deps=${libavfilter_pc_deps%, }
    
    
    libavdevice_pc_deps="libavformat = $LIBAVFORMAT_VERSION"
    enabled lavfi_indev && prepend libavdevice_pc_deps "libavfilter = $LIBAVFILTER_VERSION,"
    
    
    pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
    
    pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
    
    pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
    
    pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$libavdevice_pc_deps"
    
    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$libavfilter_pc_deps"
    
    pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
    
    Justin Ruggles's avatar
    Justin Ruggles committed
    pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs"
    
    pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"
    
    pkgconfig_generate libswresample "FFmpeg audio rescaling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"
    
    
    fix_ffmpeg_remote(){
        git_remote_from=$1
        git_remote_to=$2
        fixme_remote=$(git remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
        if [ "$fixme_remote" != "" ]; then
            echolog "
    Outdated domain in git config, the official domain for ffmpeg git is since
    November 2011, source.ffmpeg.org, both the old and the new point to the same
    repository and server. To update it enter the following commands:
    "
            for remote in $fixme_remote; do
                echolog "git remote set-url $remote $git_remote_to"
            done
        fi
    }
    
    if test -f "$source_path/.git/config"; then
        remote_from=git.videolan.org
        remote_to=source.ffmpeg.org
        fix_ffmpeg_remote git@$remote_from:ffmpeg   git@$remote_to:ffmpeg
        fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg
    fi