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

📄 configure

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

check_exec(){
    check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
}

check_exec_crash(){
    code=`cat`

    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
    # are safe but may not be available everywhere.  Thus we use
    # raise(SIGTERM) instead.  The check is run in a subshell so we
    # can redirect the "Terminated" message from the shell.  SIGBUS
    # is not defined by standard C so it is used conditionally.

    (check_exec "$@") >>$logfile 2>&1 <<EOF
#include <signal.h>
static void sighandler(int sig){
    raise(SIGTERM);
}
int main(){
    signal(SIGILL, sighandler);
    signal(SIGFPE, sighandler);
    signal(SIGSEGV, sighandler);
#ifdef SIGBUS
    signal(SIGBUS, sighandler);
#endif
    { $code }
}
EOF
}

require(){
    name="$1"
    header="$2"
    func="$3"
    shift 3
    check_lib $header $func "$@" || die "ERROR: $name not found"
}

require2(){
    name="$1"
    headers="$2"
    func="$3"
    shift 3
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
}

check_foo_config(){
    cfg=$1
    pkg=$2
    header=$3
    func=$4
    shift 4
    disable $cfg
    check_cmd ${pkg}-config --version
    err=$?
    if test "$err" = 0; then
        temp_cflags `${pkg}-config --cflags`
        temp_extralibs `${pkg}-config --libs`
        check_lib "$@" $header $func && enable $cfg
    fi
    return $err
}

apply(){
    file=$1
    shift
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
}

COMPONENT_LIST="
    bsfs
    decoders
    demuxers
    encoders
    muxers
    parsers
    protocols
"

CONFIG_LIST="
    $COMPONENT_LIST
    avisynth
    beos_netserver
    ffmpeg
    ffplay
    ffserver
    gpl
    gprof
    gray
    ipv6
    liba52
    liba52bin
    libamr
    libamr_nb
    libamr_wb
    libdc1394
    libfaac
    libfaad
    libfaadbin
    libgsm
    libmp3lame
    libnut
    libogg
    libtheora
    libvorbis
    libx264
    libxvid
    memalign_hack
    mpegaudio_hp
    network
    powerpc_perf
    pp
    small
    swscaler
    vhook
    x11grab
    zlib
"

THREADS_LIST='
    beosthreads
    pthreads
    w32threads
'

ARCH_LIST='
    alpha
    armv4l
    bfin
    ia64
    m68k
    mips
    parisc
    powerpc
    s390
    sh4
    sparc
    sparc64
    x86
    x86_32
    x86_64
'

ARCH_EXT_LIST='
    altivec
    armv5te
    armv6
    iwmmxt
    mmi
    mmx
    ssse3
    vis
'

HAVE_LIST="
    $ARCH_EXT_LIST
    $THREADS_LIST
    altivec_h
    arpa_inet_h
    byteswap_h
    closesocket
    cmov
    conio_h
    dcbzl
    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
    dlfcn_h
    dlopen
    ebp_available
    ebx_available
    fast_64bit
    fast_cmov
    fast_unaligned
    fork
    freetype2
    gethrtime
    GetProcessTimes
    getrusage
    imlib2
    inet_aton
    lrintf
    machine_ioctl_bt848_h
    machine_ioctl_meteor_h
    malloc_h
    memalign
    mkstemp
    mlib
    ppc64
    sdl
    sdl_video_size
    soundcard_h
    sys_poll_h
    sys_soundcard_h
    termios_h
    threads
    winsock2_h
"

CMDLINE_SELECT="
    $ARCH_EXT_LIST
    $CONFIG_LIST
    $THREADS_LIST
    debug
    extra_warnings
    shared
    static
"

# code dependency declarations

# architecture extensions
altivec_deps="powerpc"
armv5te_deps="armv4l"
armv6_deps="armv4l"
iwmmxt_deps="armv4l"
mmi_deps="mips"
mmx_deps="x86"
ssse3_deps="x86"
vis_deps="sparc"

# decoders / encoders
ac3_decoder_deps="gpl"
dxa_decoder_deps="zlib"
flashsv_decoder_deps="zlib"
flashsv_encoder_deps="zlib"
flv_decoder_deps="h263_decoder"
h263_decoder_deps="h263_parser mpeg4video_parser"
h263i_decoder_deps="h263_decoder"
h264_decoder_deps="h264_parser"
mpeg_xvmc_decoder_deps="xvmc"
mpeg4_decoder_deps="h263_decoder"
msmpeg4v1_decoder_deps="h263_decoder"
msmpeg4v2_decoder_deps="h263_decoder"
msmpeg4v3_decoder_deps="h263_decoder"
png_decoder_deps="zlib"
png_encoder_deps="zlib"
svq3_decoder_deps="h264_parser"
vc1_decoder_deps="h263_decoder"
wmv1_decoder_deps="h263_decoder"
wmv2_decoder_deps="h263_decoder"
wmv3_decoder_deps="h263_decoder"
zmbv_decoder_deps="zlib"
zmbv_encoder_deps="zlib"

# external libraries
liba52_decoder_deps="liba52"
liba52bin_decoder_extralibs='$ldl'
libamr_nb_decoder_deps="libamr_nb"
libamr_nb_encoder_deps="libamr_nb"
libamr_wb_decoder_deps="libamr_wb"
libamr_wb_encoder_deps="libamr_wb"
libfaac_encoder_deps="libfaac"
libfaad_decoder_deps="libfaad"
libfaadbin_decoder_extralibs='$ldl'
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
libgsm_ms_decoder_deps="libgsm"
libgsm_ms_encoder_deps="libgsm"
libmp3lame_encoder_deps="libmp3lame"
libtheora_encoder_deps="libtheora"
libvorbis_decoder_deps="libvorbis"
libvorbis_encoder_deps="libvorbis"
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
mpeg4aac_decoder_deps="libfaad"

# demuxers / muxers
ac3_demuxer_deps="ac3_parser"
audio_beos_demuxer_deps="audio_beos"
audio_beos_demuxer_extralibs="-lmedia -lbe"
audio_beos_muxer_deps="audio_beos"
audio_beos_muxer_extralibs="-lmedia -lbe"
avisynth_demuxer_deps="avisynth"
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
dv1394_demuxer_deps="dv1394"
libdc1394_demuxer_deps="libdc1394"
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
mp3_demuxer_deps="mpegaudio_parser"
ogg_muxer_deps="libogg"
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
redir_demuxer_deps="network"
rtp_muxer_deps="network mpegts_demuxer"
rtsp_demuxer_deps="rtp_protocol rtp_muxer"
sdp_demuxer_deps="rtsp_demuxer"
v4l2_demuxer_deps="linux_videodev2_h"
v4l_demuxer_deps="linux_videodev_h"
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
x11_grab_device_demuxer_extralibs="-lX11 -lXext"

# protocols
http_protocol_deps="network"
rtp_protocol_deps="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"

# programs
ffplay_deps="sdl"
ffserver_deps="muxers rtp_protocol"
ffserver_extralibs='$ldl'
vhook_extralibs='$ldl'


# set temporary file name
if test ! -z "$TMPDIR" ; then
    TMPDIR1="${TMPDIR}"
elif test ! -z "$TEMPDIR" ; then
    TMPDIR1="${TEMPDIR}"
else
    TMPDIR1="/tmp"
fi

TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"

# default parameters

enable logging
logfile="config.err"

# installation paths
PREFIX="/usr/local"
libdir='$(PREFIX)/lib'
shlibdir="$libdir"
incdir='$(PREFIX)/include/ffmpeg'
mandir='$(PREFIX)/share/man'
bindir='$(PREFIX)/bin'

# toolchain
cc="gcc"
ar="ar"
ranlib="ranlib"
make="make"
strip="strip"
asmalign_pot="unknown"
ln_s="ln -sf"

# machine
arch=`uname -m`
cpu="generic"

# OS
targetos=$(tolower $(uname -s))

# libraries
enable zlib

# configurable options
enable debug
enable dostrip
enable ffmpeg
enable ffplay
enable ffserver
enable ipv6
enable static
enable mpegaudio_hp
enable network
enable optimize
enable protocols
vhook="default"

# build settings
SHFLAGS='-shared -Wl,-soname,$@'
VHOOKSHFLAGS='$(SHFLAGS)'
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
FFSERVERLDFLAGS=-Wl,-E
LDCONFIG="ldconfig"
LIBPREF="lib"
LIBSUF=".a"
LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
SLIBPREF="lib"
SLIBSUF=".so"
SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIB)"'

# find source path
source_path="`dirname \"$0\"`"
enable source_path_used
if test -z "$source_path" -o "$source_path" = "." ; then
    source_path="`pwd`"
    disable source_path_used
else
    source_path="`cd \"$source_path\"; pwd`"
    echo "$source_path" | grep -q '[[:blank:]]' &&
      die "Out of tree builds are impossible with whitespace in source path."
fi

FFMPEG_CONFIGURATION="$@"

ENCODER_LIST=`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
DECODER_LIST=`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
PARSER_LIST=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
BSF_LIST=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' "$source_path/libavcodec/allcodecs.c"`
MUXER_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`

enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST $PROTOCOL_LIST $BSF_LIST
enable $ARCH_EXT_LIST

die_unknown(){
    echo "Unknown option \"$1\"."
    echo "See $0 --help for available options."
    exit 1
}

show_list() {
    for part in $*; do
        echo $part | sed 's/_[^_]*$//'
    done | sort
    exit 0
}

for opt do
  optval="${opt#*=}"
  case "$opt" in
  --log)
  ;;
  --log=*) logging="$optval"
  ;;
  --prefix=*) PREFIX="$optval"
  ;;
  --libdir=*) libdir="$optval"
  ;;
  --shlibdir=*) shlibdir="$optval"
  ;;
  --incdir=*) incdir="$optval"
  ;;
  --mandir=*) mandir="$optval"
  ;;
  --source-path=*) source_path="$optval"
  ;;
  --cross-prefix=*) cross_prefix="$optval"
  ;;
  --cross-compile) enable cross_compile
  ;;
  --target-os=*) targetos="$optval"
  ;;
  --cc=*) cc="$optval"
  ;;
  --make=*) make="$optval"
  ;;
  --extra-cflags=*) add_cflags "$optval"
  ;;
  --extra-ldflags=*) add_ldflags "$optval"
  ;;
  --extra-libs=*) add_extralibs "$optval"
  ;;
  --build-suffix=*) BUILDSUF="$optval"
  ;;
  --arch=*) arch="$optval"
  ;;
  --cpu=*) cpu="$optval"
  ;;
  --disable-opts) disable optimize
  ;;
  --enable-sunmlib) enable mlib
  ;;
  --disable-strip) disable dostrip
  ;;
  --disable-encoders) disable $ENCODER_LIST
  ;;
  --disable-decoders) disable $DECODER_LIST
  ;;
  --disable-muxers) disable $MUXER_LIST
  ;;
  --disable-demuxers) disable $DEMUXER_LIST
  ;;
  --disable-parsers) disable $PARSER_LIST
  ;;
  --disable-bsfs) disable $BSF_LIST
  ;;
  --disable-protocols) disable $PROTOCOL_LIST
  ;;
  --enable-*=*|--disable-*=*)
  eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
  case "$thing" in
      encoder|decoder|muxer|demuxer|parser|bsf|protocol) $action ${optval}_${thing} ;;
      *) die_unknown "$opt" ;;
  esac
  ;;
  --enable-?*|--disable-?*)
  eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
  echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
  $action $option
  ;;
  --list-*)
    NAME="${opt#--list-}"
    is_in $NAME $COMPONENT_LIST || die_unknown $opt
    NAME=$(toupper ${NAME%s})
    eval show_list \$${NAME}_LIST
  ;;
  --help|-h) show_help
  ;;
  *)
  die_unknown $opt
  ;;
  esac
done

case "$arch" in
  i386|i486|i586|i686|i86pc|BePC)
    arch="x86_32"

⌨️ 快捷键说明

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