📄 configure
字号:
logfile="config.err"# installation pathsPREFIX="/usr/local"libdir='$(PREFIX)/lib'shlibdir="$libdir"incdir='$(PREFIX)/include/ffmpeg'mandir='$(PREFIX)/share/man'bindir='$(PREFIX)/bin'# toolchaincc="gcc"ar="ar"ranlib="ranlib"make="make"strip="strip"asmalign_pot="unknown"ln_s="ln -sf"# machinearch=`uname -m`cpu="generic"# OStargetos=$(tolower $(uname -s))# librariesenable zlib# configurable optionsenable debugenable dostripenable ffmpegenable ffplayenable ffserverenable ipv6enable staticenable mpegaudio_hpenable networkenable optimizationsenable protocolsvhook="default"# build settingsSHFLAGS='-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,-ELDCONFIG="ldconfig"LIBPREF="lib"LIBSUF=".a"FULLNAME='$(NAME)$(BUILDSUF)'LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'SLIBPREF="lib"SLIBSUF=".so"SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'# find source pathsource_path="`dirname \"$0\"`"enable source_path_usedif test -z "$source_path" -o "$source_path" = "." ; then source_path="`pwd`" disable source_path_usedelse source_path="`cd \"$source_path\"; pwd`" echo "$source_path" | grep -q '[[:blank:]]' && die "Out of tree builds are impossible with whitespace in source path."fiFFMPEG_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"`OUTDEV_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavdevice/alldevices.c"`INDEV_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavdevice/alldevices.c"`PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`enable $ARCH_EXT_LIST \ $DECODER_LIST \ $ENCODER_LIST \ $PARSER_LIST \ $BSF_LIST \ $DEMUXER_LIST \ $MUXER_LIST \ $PROTOCOL_LIST \ $INDEV_LIST \ $OUTDEV_LIST \die_unknown(){ echo "Unknown option \"$1\"." echo "See $0 --help for available options." exit 1}show_list() { suffix=_$1 shift echo $* | sed s/$suffix//g | tr ' ' '\n' | 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" ;; --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 ;; --disable-devices) disable $INDEV_LIST $OUTDEV_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=${NAME%s} eval show_list $NAME \$$(toupper $NAME)_LIST ;; --help|-h) show_help ;; *) die_unknown $opt ;; esacdonecase "$arch" in i386|i486|i586|i686|i86pc|BePC) arch="x86_32" enable fast_unaligned ;; x86_64|amd64) arch="x86_32" enable fast_unaligned canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`" if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then arch="x86_64" enable fast_64bit fi fi ;; # armv4l is a subset of armv[567]*l arm|armv[4567]*l) arch="armv4l" ;; alpha) arch="alpha" enable fast_64bit ;; "Power Macintosh"|ppc|powerpc) arch="powerpc" ;; ppc64) arch="powerpc" enable fast_64bit ;; mips|mipsel|IP*) arch="mips" ;; sun4u|sparc64) arch="sparc64" enable fast_64bit ;; sparc) arch="sparc" ;; sh4) arch="sh4" ;; parisc) arch="parisc" ;; parisc64) arch="parisc" enable fast_64bit ;; s390|s390x) arch="s390" ;; m68k) arch="m68k" ;; ia64) arch="ia64" enable fast_64bit ;; bfin) arch="bfin" ;; *) arch="unknown" ;;esacenable $archenabled_any x86_32 x86_64 && enable x86enabled sparc64 && enable sparc# OS specificcase $targetos in beos|haiku|zeta) PREFIX="$HOME/config" # helps building libavcodec add_cflags "-DPIC -fomit-frame-pointer" # 3 gcc releases known for BeOS, each with ugly bugs gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`" case "$gcc_version" in 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc" disable mmx ;; *20010315*) echo "BeBits gcc" add_cflags "-fno-expensive-optimizations" ;; esac LDCONFIG="echo ignoring ldconfig" SHFLAGS=-nostart # enable BeOS things enable audio_beos # no need for libm, but the inet stuff # Check for BONE # XXX: actually should check for NOT net_server if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then network_extralibs="-lbind -lsocket" else enable beos_netserver network_extralibs="-lnet" fi ;; sunos) FFSERVERLDFLAGS="" SHFLAGS='-shared -Wl,-h,$@' network_extralibs="-lsocket -lnsl" ;; netbsd) oss_demuxer_extralibs="-lossaudio" oss_muxer_extralibs="-lossaudio" ;; openbsd) disable need_memalign LIBOBJFLAGS='$(PIC)' LDCONFIG='ldconfig -m $(SHLIBDIR)' SHFLAGS='-shared' SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)' SLIBNAME_WITH_VERSION='$(SLIBNAME)' SLIBNAME_WITH_MAJOR='$(SLIBNAME)' oss_demuxer_extralibs="-lossaudio" oss_muxer_extralibs="-lossaudio" ;; freebsd) disable need_memalign ;; bsd/os) osextralibs="-lpoll -lgnugetopt" strip="strip -d" ;; darwin) disable need_memalign SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(SPPVERSION),-compatibility_version,$(SPPVERSION) -Wl,-read_only_relocs,suppress' VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$@' strip="strip -x" FFLDFLAGS="-Wl,-dynamic,-search_paths_first" SLIBSUF=".dylib" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' FFSERVERLDFLAGS=-Wl,-bind_at_load ;; mingw32*) targetos=mingw32 shlibdir="$bindir" VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil' VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)' if enabled swscaler; then VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale" VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)" fi disable ffserver SLIBPREF="" SLIBSUF=".dll" EXESUF=".exe" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' SLIB_EXTRA_CMD='-lib /machine:i386 /def:$(@:$(SLIBSUF)=.def)' SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' SHFLAGS='-shared -Wl,--output-def,$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' ;; cygwin*) targetos=cygwin shlibdir="$bindir" VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil' VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)' if enabled swscaler; then VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale" VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)" fi EXESUF=".exe" SLIBPREF="cyg" SLIBSUF=".dll" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' SHFLAGS='-shared -Wl,--enable-auto-image-base' ;; *-dos|freedos|opendos) enable memalign_hack disable ffplay ffserver vhook disable $INDEV_LIST $OUTDEV_LIST network_extralibs="-lsocket" EXESUF=".exe" ;; linux) LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS" enable dv1394 ;; irix*) targetos=irix ranlib="echo ignoring ranlib" ;; os/2*) ar="emxomfar -p256" ranlib="echo ignoring ranlib" strip="lxlite" ln_s="cp -f" add_cflags "-Zomf" EXESUF=".exe" FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap" SHFLAGS='$(NAME).def -Zdll -Zomf' FFSERVERLDFLAGS="" LIBSUF="_s.lib" SLIBPREF="" SLIBSUF=".dll" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(NAME).def; \ echo PROTMODE >> $(NAME).def; \ echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(NAME).def; \ echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(NAME).def; \ echo EXPORTS >> $(NAME).def; \ emxexp -o $(OBJS) >> $(NAME).def' SLIB_EXTRA_CMD='emximp -o $(LIBPREF)$(NAME)_dll.a $(NAME).def; \ emximp -o $(LIBPREF)$(NAME)_dll.lib $(NAME).def;' SLIB_INSTALL_EXTRA_CMD='install -m 644 $(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"' SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib' vhook="no" ;; *) targetos="${targetos}-UNKNOWN" ;;esacadd_extralibs $osextralibsif ! disabled logging ; then enabled logging || logfile="$logging" echo "# $0 $@" >$logfile set >>$logfileelse logfile=/dev/nullfi# Combine FFLDFLAGS and the LDFLAGS environment variable.LDFLAGS="$FFLDFLAGS $LDFLAGS"test -n "$cross_prefix" && enable cross_compilecc="${cross_prefix}${cc}"ar="${cross_prefix}${ar}"ranlib="${cross_prefix}${ranlib}"strip="${cross_prefix}${strip}"# we need to build at least one lib type
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -