📄 configure
字号:
#! /bin/shif test x"$1" = x"-h" -o x"$1" = x"--help" ; thenecho "Usage: ./configure [options]"echo ""echo "available options:"echo ""echo " --help print this message"echo " --enable-avis-input enables avisynth input (win32 only)"echo " --enable-mp4-output enables mp4 output (using gpac)"echo " --enable-gtk build GTK+ interface"echo " --enable-pthread enables multithreaded encoding"echo " --enable-debug adds -g, doesn't strip"echo " --enable-gprof adds -pg, doesn't strip"echo " --enable-visualize enables visualization (X11 only)"echo " --enable-pic build position-independent code"echo " --enable-shared build libx264.so"echo " --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS"echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS"echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"echo " --host=HOST build programs to run on HOST"echo ""exit 1ficc_check() { rm -f conftest* cat > conftest.c << EOF#include <$1>int main () { $3 return 0; }EOF $CC conftest.c $CFLAGS $LDFLAGS $2 -o conftest 2>$DEVNULL TMP="$?" rm -f conftest* return $TMP}as_check() { rm -f conftest* echo "$1" > conftest.asm $AS conftest.asm $ASFLAGS $2 -o conftest.o 2>$DEVNULL TMP="$?" rm -f conftest* return $TMP}rm -f config.h config.mak x264.pcprefix='/usr/local'exec_prefix='${prefix}'bindir='${exec_prefix}/bin'libdir='${exec_prefix}/lib'includedir='${prefix}/include'DEVNULL='/dev/null'avis_input="auto"mp4_output="auto"pthread="auto"debug="no"gprof="no"pic="no"gtk="no"vis="no"shared="no"CC="${CC-gcc}"CFLAGS="$CFLAGS -Wall -I."LDFLAGS="$LDFLAGS"HAVE_GETOPT_LONG=1AS="yasm"ASFLAGS=""EXE=""# check whether 'echo -n' works as expected, otherwise try printfif [ "x`echo -n houba`" = xhouba ]then ECHON="echo -n"elif [ "x`printf houba`" = xhouba ]then ECHON="printf"else echo "Neither 'echo -n' nor 'printf' are working with your shell!" exit 1fi# parse optionsfor opt do optarg="${opt#*=}" case "$opt" in --prefix=*) prefix="$optarg" ;; --exec-prefix=*) exec_prefix="$optarg" ;; --bindir=*) bindir="$optarg" ;; --libdir=*) libdir="$optarg" ;; --includedir=*) includedir="$optarg" ;; --enable-avis-input) avis_input="yes" ;; --disable-avis-input) avis_input="no" ;; --enable-mp4-output) mp4_output="yes" ;; --disable-mp4-output) mp4_output="no" ;; --extra-asflags=*) ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}" ;; --extra-cflags=*) CFLAGS="$CFLAGS ${opt#--extra-cflags=}" ;; --extra-ldflags=*) LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}" ;; --enable-pthread) pthread="auto" # can't skip detection, since it differs by OS ;; --disable-pthread) pthread="no" ;; --enable-debug) debug="yes" ;; --enable-gprof) CFLAGS="$CFLAGS -pg" LDFLAGS="$LDFLAGS -pg" gprof="yes" ;; --enable-pic) pic="yes" ;; --enable-gtk) gtk="yes" ;; --disable-gtk) gtk="no" ;; --enable-shared) shared="yes" ;; --enable-visualize) LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11" CFLAGS="$CFLAGS -DVISUALIZE=1" vis="yes" ;; --host=*) host="${opt#--host=}" ;; *) echo "Unknown option $opt, ignored" ;; esacdoneif [ "x$host" = x ]; then host=`./config.guess`fi# normalize a triplet into a quadruplethost=`./config.sub $host`# split $hosthost_cpu="${host%%-*}"host="${host#*-}"host_vendor="${host%%-*}"host_os="${host#*-}"case $host_os in beos*) SYS="BEOS" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" ;; darwin*) SYS="MACOSX" CFLAGS="$CFLAGS -falign-loops=16" LDFLAGS="$LDFLAGS -lm -lmx" ;; freebsd*) SYS="FREEBSD" LDFLAGS="$LDFLAGS -lm" ;; kfreebsd*-gnu) SYS="FREEBSD" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" LDFLAGS="$LDFLAGS -lm" ;; netbsd*) SYS="NETBSD" LDFLAGS="$LDFLAGS -lm" ;; openbsd*) SYS="OPENBSD" CFLAGS="$CFLAGS -I/usr/X11R6/include" LDFLAGS="$LDFLAGS -lm" ;; linux*) SYS="LINUX" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" LDFLAGS="$LDFLAGS -lm" ;; cygwin*) SYS="CYGWIN" CFLAGS="$CFLAGS -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin" EXE=".exe" DEVNULL="NUL" ;; mingw*) SYS="MINGW" EXE=".exe" DEVNULL="NUL" ;; sunos*|solaris*) SYS="SunOS" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" LDFLAGS="$LDFLAGS -lm" HAVE_GETOPT_LONG=0 ;; *) echo "Unknown system $host, edit the configure" exit 1 ;;esaccase $host_cpu in i*86) ARCH="X86" AS="yasm" ASFLAGS="-O2" if [ "$SYS" = MACOSX ]; then ASFLAGS="$ASFLAGS -f macho -DPREFIX" elif [ "$SYS" = CYGWIN -o "$SYS" = MINGW ]; then ASFLAGS="$ASFLAGS -f win32 -DPREFIX" elif [ "$SYS" = NETBSD ]; then ASFLAGS="$ASFLAGS -f aoutb" else ASFLAGS="$ASFLAGS -f elf" fi as_check || AS="nasm" ;; x86_64) ARCH="X86_64" AS="yasm" ASFLAGS="-f elf -m amd64" ;; powerpc|powerpc64) ARCH="PPC" if [ $SYS = MACOSX ] then ALTIVECFLAGS="$ALTIVECFLAGS -faltivec -fastf -mcpu=G4" else ALTIVECFLAGS="$ALTIVECFLAGS -maltivec -mabi=altivec" fi ;; sparc) if test "$(uname -m)" = "sun4u"; then ARCH="UltraSparc" CFLAGS="$CFLAGS -mcpu=ultrasparc" LDFLAGS="$LDFLAGS -mcpu=ultrasparc" AS="as" ASFLAGS="-xarch=v8plusa" else ARCH="Sparc" fi ;; mips|mipsel|mips64|mips64el) ARCH="MIPS" ;; arm*) ARCH="ARM" ;; s390|s390x) ARCH="S390" ;; parisc|parisc64) ARCH="PARISC" ;; *) ARCH="$(echo $host_cpu | tr a-z A-Z)" ;;esac# check requirementsif [ $shared = yes -a \( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" \) ] ; then pic="yes"fiif [ $SYS = MACOSX -a $ARCH = X86 ]then # we want Apple's nasm from Xcode 2.4.1 or later NASM_BUILD_REQUIRED=11 NASM_BUILD=`nasm -v|grep "Apple Computer"|sed 's/.*build \([0-9]*\).*/\1/'` if [ $NASM_BUILD -lt $NASM_BUILD_REQUIRED ] then echo "Your version of 'nasm' is too old." echo "Please install Xcode 2.4.1 or later." AS="" fifiif [ $ARCH = X86 -o $ARCH = X86_64 ] ; then if as_check ; then CFLAGS="$CFLAGS -DHAVE_MMX" if as_check "pabsw xmm0, xmm0" ; then ASFLAGS="$ASFLAGS -DHAVE_SSE3" CFLAGS="$CFLAGS -DHAVE_SSE3" fi else echo "No suitable assembler found. x264 will be several times slower." echo "Please install 'yasm' to get MMX/SSE optimized code." AS="" fifiCFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS"# autodetect options that weren't forced nor disabledlibpthread=""if test "$pthread" = "auto" ; then pthread="no" case $SYS in BEOS) pthread="yes" ;; MINGW|CYGWIN) if cc_check pthread.h -lpthread "pthread_create(0,0,0,0);" ; then pthread="yes" libpthread="-lpthread" elif cc_check pthread.h -lpthreadGC2 "pthread_create(0,0,0,0);" ; then pthread="yes" libpthread="-lpthreadGC2" elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then pthread="yes" libpthread="-lpthreadGC2 -lwsock32" CFLAGS="$CFLAGS -DPTW32_STATIC_LIB" fi ;; *) cc_check pthread.h -lpthread && pthread="yes" && libpthread="-lpthread" ;; esacfiif test "$pthread" = "yes" ; then CFLAGS="$CFLAGS -DHAVE_PTHREAD" LDFLAGS="$LDFLAGS $libpthread"fiMP4_LDFLAGS="-lgpac_static"if [ $SYS = CYGWIN -o $SYS = MINGW ]; then MP4_LDFLAGS="$MP4_LDFLAGS -lwinmm"fiif [ "$mp4_output" = "auto" ] ; then mp4_output="no" cc_check gpac/isomedia.h "$MP4_LDFLAGS" && mp4_output="yes"fiif [ "$mp4_output" = "yes" ] ; then echo "#define MP4_OUTPUT" >> config.h LDFLAGS="$LDFLAGS $MP4_LDFLAGS"fiif [ "$avis_input" = "auto" ] ; then if [ $SYS = CYGWIN -o $SYS = MINGW ]; then avis_input="yes" else avis_input="no"; fifiif [ "$avis_input" = "yes" ] ; then echo "#define AVIS_INPUT" >> config.h LDFLAGS="$LDFLAGS -lvfw32"fiif [ "$pic" = "yes" ] ; then CFLAGS="$CFLAGS -fPIC" ASFLAGS="$ASFLAGS -D__PIC__"fiif [ "$debug" != "yes" -a "$gprof" != "yes" ]; then CFLAGS="$CFLAGS -s -fomit-frame-pointer" LDFLAGS="$LDFLAGS -s"fiif [ "$debug" = "yes" ]; then CFLAGS="-O1 -g $CFLAGS"else CFLAGS="-O4 -ffast-math $CFLAGS"fiif cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then echo "#define fseek fseeko" >> config.h echo "#define ftell ftello" >> config.helif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then echo "#define fseek fseeko64" >> config.h echo "#define ftell ftello64" >> config.hfi# generate config filescat > config.mak << EOFprefix=$prefixexec_prefix=$exec_prefixbindir=$bindirlibdir=$libdirincludedir=$includedirARCH=$ARCHSYS=$SYSCC=$CCCFLAGS=$CFLAGSALTIVECFLAGS=$ALTIVECFLAGSLDFLAGS=$LDFLAGSAS=$ASASFLAGS=$ASFLAGSGTK=$gtkEXE=$EXEVIS=$visHAVE_GETOPT_LONG=$HAVE_GETOPT_LONGDEVNULL=$DEVNULLECHON=$ECHONEOF$ECHON 'CONFIGURE_ARGS=' >> config.makfor A in "$@" ; do $ECHON " '$A'" >> config.makdoneecho '' >> config.makcp config.mak gtk/config.makif [ "$shared" = "yes" ]; then API=$(grep '#define X264_BUILD' < x264.h | cut -f 3 -d ' ') echo "SONAME=libx264.so.$API" >> config.mak echo 'default: $(SONAME)' >> config.mak if [ "$gtk" = "yes" ]; then echo "SONAMEGTK=libx264gtk.so.$API" >> gtk/config.mak fifiif [ "$gtk" = "yes" ]; then echo 'default: libx264gtk.a' >> config.mak echo 'install: install-gtk' >> config.makfi./version.shpclibs="-L$libdir -lx264 $libpthread"cat > x264.pc << EOFprefix=$prefixexec_prefix=$exec_prefixlibdir=$libdirincludedir=$includedirName: x264Description: H.264 (MPEG4 AVC) encoder libraryVersion: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//')Libs: $pclibsCflags: -I$includedirEOFecho "Platform: $ARCH"echo "System: $SYS"echo "avis input: $avis_input"echo "mp4 output: $mp4_output"echo "pthread: $pthread"echo "gtk: $gtk"echo "debug: $debug"echo "gprof: $gprof"echo "PIC: $pic"echo "shared: $shared"echo "visualize: $vis"echoecho "You can run 'make' or 'make fprofiled' now."
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -