⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configure

📁 ffmpeg的完整源代码和作者自己写的文档。不但有在Linux的工程哦
💻
📖 第 1 页 / 共 4 页
字号:

# test for lrintf in math.h
check_exec <<EOF && enable lrintf || disable lrintf
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

enabled_any libamr_nb libamr_wb && enable libamr

# these are off by default, so fail if requested and not available
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
enabled liba52     && require liba52 a52dec/a52.h a52_init -la52
enabled libamr_nb  && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
enabled libamr_wb  && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
enabled libdc1394  && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
enabled libgsm     && require libgsm gsm.h gsm_create -lgsm
enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
enabled libnut     && require libnut libnut.h nut_demuxer_init -lnut
enabled libogg     && require libogg ogg/ogg.h ogg_sync_init -logg
enabled libtheora  && require libtheora theora/theora.h theora_info_init -ltheora -logg
enabled libvorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
enabled libx264    && require x264 x264.h x264_encoder_open -lx264
enabled libxvid    && require Xvid xvid.h xvid_global -lxvidcore
enabled mlib       && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib

# disable the native AC-3 decoder if liba52 is enabled
enabled liba52 && disable ac3_decoder

_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
    check_cc <<EOF && _restrict=$restrict_keyword && break
void foo(char * $restrict_keyword p);
EOF
done

test "$vhook" = "default" && vhook="$dlopen"

if test "$targetos" = cygwin -o "$targetos" = 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

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`
    temp_cflags $sdl_cflags
    temp_extralibs `"${SDL_CONFIG}" --libs`
    if check_lib SDL.h SDL_Init; then
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
        if test "$_sdlversion" -lt 121 ; then
            enable sdl_too_old
        else
            enable sdl
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
#include <SDL.h>
int main(void){
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
    int w = vi->current_w;
    return 0;
}
EOF
        fi
    fi
    restore_flags
fi

texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html

##########################################
# Network check

if enabled network; then
    # Prefer arpa/inet.h over winsock2
    if check_header arpa/inet.h ; then
        check_func closesocket
    elif check_header winsock2.h ; then
        network_extralibs="-lws2_32"
        check_func2 winsock2.h closesocket
    fi
fi

##########################################
# IPv6 check

enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main( void ) {
  struct sockaddr_storage saddr;
  struct ipv6_mreq mreq6;
  getaddrinfo(0,0,0,0);
  getnameinfo(0,0,0,0,0,0,0);
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
}
EOF

check_header linux/videodev.h
check_header linux/videodev2.h

# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
{ check_header dev/bktr/ioctl_meteor.h &&
  check_header dev/bktr/ioctl_bt848.h; } ||
{ check_header machine/ioctl_meteor.h &&
  check_header machine/ioctl_bt848.h; } ||
{ check_header dev/video/meteor/ioctl_meteor.h &&
  check_header dev/video/bktr/ioctl_bt848.h; } ||
check_header dev/ic/bt8xx.h

check_header sys/soundcard.h
check_header soundcard.h

# Deal with the x11 frame grabber
enabled x11grab                         &&
check_header X11/Xlib.h                 &&
check_header X11/extensions/XShm.h      &&
check_func XOpenDisplay -lX11           &&
check_func XShmCreateImage -lX11 -lXext

enabled debug && add_cflags -g

# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement
check_cflags -Wall
check_cflags -Wno-switch
check_cflags -Wdisabled-optimization
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
check_cflags -Wno-pointer-sign
enabled extra_warnings && check_cflags -Winline

# add some linker flags
check_ldflags -Wl,--warn-common
check_ldflags $LDLATEFLAGS

if enabled small; then
    check_cflags -Os            # not all compilers support -Os
    optimize="small"
elif enabled optimize; then
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
        add_cflags  "-O5"
        add_ldflags "-O5"
    else
        add_cflags "-O3"
    fi
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
            x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS="\$(PIC)" ;;
        esac
    fi
fi

if enabled gprof; then
    add_cflags  "-p"
    add_ldflags "-p"
fi

VHOOKCFLAGS="-fPIC"

# find if .align arg is power-of-two or not
if test $asmalign_pot = "unknown"; then
    disable asmalign_pot
    echo 'asm (".align 3");' | check_cc && enable asmalign_pot
fi

enabled_any $ENCODER_LIST  && enable encoders
enabled_any $DECODER_LIST  && enable decoders
enabled_any $MUXER_LIST    && enable muxers
enabled_any $DEMUXER_LIST  && enable demuxers
enabled_any $PROTOCOL_LIST && enable protocols
enabled_any $BSF_LIST      && enable bsfs

enabled_any $THREADS_LIST  && enable threads

check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
    $BSF_LIST $DEMUXER_LIST $MUXER_LIST $PROTOCOL_LIST

enabled libdc1394 && append pkg_requires "libraw1394"
enabled libogg    && append pkg_requires "ogg >= 1.1"
enabled libtheora && append pkg_requires "theora"
enabled libvorbis && append pkg_requires "vorbis vorbisenc"

echo "install prefix            $PREFIX"
echo "source path               $source_path"
echo "C compiler                $cc"
echo "make                      $make"
echo ".align is power-of-two    $asmalign_pot"
echo "ARCH                      $arch ($cpu)"
if test "$BUILDSUF" != ""; then
    echo "build suffix              $BUILDSUF"
fi
echo "big-endian                ${bigendian-no}"
if test $arch = "x86_32" -o $arch = "x86_64"; then
    echo "MMX enabled               ${mmx-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}"
fi
if test $arch = "armv4l"; then
    echo "ARMv5TE enabled           ${armv5te-no}"
    echo "ARMv6 enabled             ${armv6-no}"
    echo "IWMMXT enabled            ${iwmmxt-no}"
fi
if test $arch = "mips"; then
    echo "MMI enabled               ${mmi-no}"
fi
if test $arch = "powerpc"; then
    echo "AltiVec enabled           ${altivec-no}"
    echo "dcbzl available           ${dcbzl-no}"
fi
echo "gprof enabled             ${gprof-no}"
echo "debug symbols             ${debug-no}"
echo "strip symbols             ${dostrip-no}"
echo "optimize                  ${optimize-no}"
echo "static                    ${static-no}"
echo "shared                    ${shared-no}"
echo "postprocessing support    ${pp-no}"
echo "software scaler enabled   ${swscaler-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}"
fi
echo "threading support         ${thread_type-no}"
echo "SDL support               ${sdl-no}"
if enabled sdl_too_old; then
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
fi
echo "Sun medialib support      ${mlib-no}"
echo "AVISynth enabled          ${avisynth-no}"
echo "liba52 support            ${liba52-no}"
echo "liba52 dlopened           ${liba52bin-no}"
echo "libamr-nb support         ${libamr_nb-no}"
echo "libamr-wb support         ${libamr_wb-no}"
echo "libdc1394 support         ${libdc1394-no}"
echo "libfaac enabled           ${libfaac-no}"
echo "libfaad enabled           ${libfaad-no}"
echo "libfaad dlopened          ${libfaadbin-no}"
echo "libgsm enabled            ${libgsm-no}"
echo "libmp3lame enabled        ${libmp3lame-no}"
echo "libnut enabled            ${libnut-no}"
echo "libogg enabled            ${libogg-no}"
echo "libtheora enabled         ${libtheora-no}"
echo "libvorbis enabled         ${libvorbis-no}"
echo "x264 enabled              ${libx264-no}"
echo "XviD enabled              ${libxvid-no}"
echo "zlib enabled              ${zlib-no}"
enabled gpl &&
    echo "License: GPL" ||
    echo "License: LGPL"

echo "Creating config.mak and config.h..."

echo "# Automatically generated by configure - do not modify!" > config.mak
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH

echo "PREFIX=$PREFIX" >> config.mak
echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak
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 "MANDIR=\$(DESTDIR)$mandir" >> config.mak
echo "MAKE=$make" >> config.mak
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
echo "RANLIB=$ranlib" >> config.mak
echo "LDCONFIG=$LDCONFIG" >> config.mak
echo "LN_S=$ln_s" >> config.mak
enabled dostrip &&
    echo "STRIP=$strip" >> config.mak ||
    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 "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
echo "BUILD_STATIC=$static" >> config.mak
echo "BUILDSUF=$BUILDSUF" >> config.mak
echo "LIBPREF=$LIBPREF" >> config.mak
echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
echo "LIB=$LIB" >> config.mak
echo "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak

if enabled bigendian; then
  echo "WORDS_BIGENDIAN=yes" >> config.mak
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
fi
if enabled mmx; then
  echo "#define __CPU__ 586" >> $TMPH
fi

if enabled sdl; then
  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
fi

sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`



if enabled shared; then
  echo "BUILD_SHARED=yes" >> config.mak
  echo "PIC=-fPIC -DPIC" >> config.mak
  echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
  echo "SPPVERSION=$pp_version" >> config.mak
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
  echo "LAVCVERSION=$lavc_version" >> config.mak
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
  echo "LAVFVERSION=$lavf_version" >> config.mak
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
  echo "LAVUVERSION=$lavu_version" >> config.mak
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
  echo "SWSVERSION=$sws_version" >> config.mak
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
  echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
fi
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
echo "EXTRALIBS=$extralibs" >> 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   \
                                      $DECODER_LIST  \
                                      $ENCODER_LIST  \
                                      $PARSER_LIST   \
                                      $BSF_LIST      \
                                      $DEMUXER_LIST  \
                                      $MUXER_LIST    \
                                      $PROTOCOL_LIST \

echo "#define restrict $_restrict" >> $TMPH

if enabled small; then
  echo "#define av_always_inline"  >> $TMPH
fi

echo "SRC_PATH=\"$source_path\"" >> config.mak
echo "SRC_PATH_BARE=$source_path" >> config.mak
echo "BUILD_ROOT=\"$PWD\"" >> config.mak

# Apparently it's not possible to portably echo a backslash.
enabled asmalign_pot &&
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH


# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
cmp -s $TMPH config.h &&
    echo "config.h is unchanged" ||
    mv -f $TMPH config.h

rm -f $TMPO $TMPC $TMPE $TMPS $TMPH

# build tree in object directory if source path is different from current one
if enabled source_path_used; then
    DIRS="\
         doc \
         libavcodec \
         libavcodec/alpha \
         libavcodec/armv4l \
         libavcodec/bfin \
         libavcodec/i386 \
         libavcodec/mlib \
         libavcodec/ppc \
         libavcodec/sh4 \
         libavcodec/sparc \
         libavformat \
         libavutil \
         libpostproc \
         libswscale \
         tests \
         tools \
         vhook \
         "
    FILES="\
          Makefile \
          common.mak \
          doc/texi2pod.pl \
          libavcodec/Makefile \
          libavformat/Makefile \
          libavutil/Makefile \
          libpostproc/Makefile \
          libswscale/Makefile \
          "
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
        $ln_s "$source_path/$f" $f
    done
fi


# build pkg-config files
# FIXME: libdir and includedir are hardcoded and may differ from the real path.

pkgconfig_generate(){
name=$1
comment=$2
version=$3
libs=$4
requires=$5
include=$6
cat <<EOF >$name.pc
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: $name
Description: $comment
Version: $version
Requires: $requires
Conflicts:
Libs: -L\${libdir} $libs
Cflags: -I\${includedir} -I\${includedir}/$include
EOF
}

pkgconfig_generate_uninstalled(){
name=$1
shortname=${name#lib}
comment=$2
version=$3
libs=$4
requires=$5
cat <<EOF >$name-uninstalled.pc
prefix=
exec_prefix=
libdir=\${pcfiledir}/$name
includedir=\${pcfiledir}/$name

Name: $name
Description: $comment
Version: $version
Requires: $requires
Conflicts:
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
Cflags: -I\${includedir}
EOF
}

pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"

pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"

pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"

if enabled pp; then
  pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
  pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
fi

if enabled swscaler; then
  pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" -lswscale "libavutil = $lavu_version" ffmpeg
  pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
else
  pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" ffmpeg
  pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
  apply libswscale.pc sed s/^Libs:.*$/Libs:/
  apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
fi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -