configure
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:14k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #!/bin/bash
  2. if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
  3. echo "Usage: ./configure [options]"
  4. echo ""
  5. echo "available options:"
  6. echo ""
  7. echo "  --help                   print this message"
  8. echo "  --disable-avis-input     disables avisynth input (win32 only)"
  9. echo "  --disable-mp4-output     disables mp4 output (using gpac)"
  10. echo "  --disable-pthread        disables multithreaded encoding"
  11. echo "  --disable-asm            disables assembly optimizations on x86 and arm"
  12. echo "  --enable-debug           adds -g, doesn't strip"
  13. echo "  --enable-gprof           adds -pg, doesn't strip"
  14. echo "  --enable-visualize       enables visualization (X11 only)"
  15. echo "  --enable-pic             build position-independent code"
  16. echo "  --enable-shared          build libx264.so"
  17. echo "  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS"
  18. echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS"
  19. echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"
  20. echo "  --host=HOST              build programs to run on HOST"
  21. echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools"
  22. echo ""
  23. exit 1
  24. fi
  25. cc_check() {
  26.     rm -f conftest.c
  27.     [ -n "$1" ] && echo "#include <$1>" > conftest.c
  28.     echo "int main () { $3 return 0; }" >> conftest.c
  29.     $CC conftest.c $CFLAGS $LDFLAGS $2 -o conftest 2>$DEVNULL
  30. }
  31. as_check() {
  32.     echo "$1" > conftest.asm
  33.     $AS conftest.asm $ASFLAGS $2 -o conftest.o 2>$DEVNULL
  34. }
  35. die() {
  36.     echo "$@"
  37.     exit 1
  38. }
  39. rm -f config.h config.mak x264.pc conftest*
  40. prefix='/usr/local'
  41. exec_prefix='${prefix}'
  42. bindir='${exec_prefix}/bin'
  43. libdir='${exec_prefix}/lib'
  44. includedir='${prefix}/include'
  45. DEVNULL='/dev/null'
  46. avis_input="auto"
  47. mp4_output="auto"
  48. pthread="auto"
  49. asm="yes"
  50. debug="no"
  51. gprof="no"
  52. pic="no"
  53. vis="no"
  54. shared="no"
  55. CFLAGS="$CFLAGS -Wall -I."
  56. LDFLAGS="$LDFLAGS"
  57. ASFLAGS="$ASFLAGS"
  58. HAVE_GETOPT_LONG=1
  59. cross_prefix=""
  60. EXE=""
  61. # parse options
  62. for opt do
  63.     optarg="${opt#*=}"
  64.     case "$opt" in
  65.         --prefix=*)
  66.             prefix="$optarg"
  67.             ;;
  68.         --exec-prefix=*)
  69.             exec_prefix="$optarg"
  70.             ;;
  71.         --bindir=*)
  72.             bindir="$optarg"
  73.             ;;
  74.         --libdir=*)
  75.             libdir="$optarg"
  76.             ;;
  77.         --includedir=*)
  78.             includedir="$optarg"
  79.             ;;
  80.         --enable-asm)
  81.             asm="yes"
  82.             ;;
  83.         --disable-asm)
  84.             asm="no"
  85.             ;;
  86.         --enable-avis-input)
  87.             avis_input="yes"
  88.             ;;
  89.         --disable-avis-input)
  90.             avis_input="no"
  91.             ;;
  92.         --enable-mp4-output)
  93.             mp4_output="yes"
  94.             ;;
  95.         --disable-mp4-output)
  96.             mp4_output="no"
  97.             ;;
  98.         --extra-asflags=*)
  99.             ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}"
  100.             ;;
  101.         --extra-cflags=*)
  102.             CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
  103.             ;;
  104.         --extra-ldflags=*)
  105.             LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
  106.             ;;
  107.         --enable-pthread)
  108.             pthread="auto" # can't skip detection, since it differs by OS
  109.             ;;
  110.         --disable-pthread)
  111.             pthread="no"
  112.             ;;
  113.         --enable-debug)
  114.             debug="yes"
  115.             ;;
  116.         --enable-gprof)
  117.             CFLAGS="$CFLAGS -pg"
  118.             LDFLAGS="$LDFLAGS -pg"
  119.             gprof="yes"
  120.             ;;
  121.         --enable-pic)
  122.             pic="yes"
  123.             ;;
  124.         --enable-shared)
  125.             shared="yes"
  126.             ;;
  127.         --enable-visualize)
  128.             LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
  129.             CFLAGS="$CFLAGS -DVISUALIZE=1"
  130.             vis="yes"
  131.             ;;
  132.         --host=*)
  133.             host="${opt#--host=}"
  134.             ;;
  135.         --cross-prefix=*)
  136.             cross_prefix="${opt#--cross-prefix=}"
  137.             ;;
  138.         *)
  139.             echo "Unknown option $opt, ignored"
  140.             ;;
  141.     esac
  142. done
  143. CC="${CC-${cross_prefix}gcc}"
  144. AR="${AR-${cross_prefix}ar}"
  145. RANLIB="${RANLIB-${cross_prefix}ranlib}"
  146. STRIP="${STRIP-${cross_prefix}strip}"
  147. if [ "x$host" = x ]; then
  148.     host=`./config.guess`
  149. fi
  150. # normalize a triplet into a quadruplet
  151. host=`./config.sub $host`
  152. # split $host
  153. host_cpu="${host%%-*}"
  154. host="${host#*-}"
  155. host_vendor="${host%%-*}"
  156. host_os="${host#*-}"
  157. case $host_os in
  158.   beos*)
  159.     SYS="BEOS"
  160.     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
  161.     ;;
  162.   darwin*)
  163.     SYS="MACOSX"
  164.     CFLAGS="$CFLAGS -falign-loops=16"
  165.     LDFLAGS="$LDFLAGS -lm"
  166.     if [ "$pic" = "no" ]; then
  167.         CFLAGS="$CFLAGS -mdynamic-no-pic"
  168.     fi
  169.     ;;
  170.   freebsd*)
  171.     SYS="FREEBSD"
  172.     LDFLAGS="$LDFLAGS -lm"
  173.     ;;
  174.   kfreebsd*-gnu)
  175.     SYS="FREEBSD"
  176.     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
  177.     LDFLAGS="$LDFLAGS -lm"
  178.     ;;
  179.   netbsd*)
  180.     SYS="NETBSD"
  181.     LDFLAGS="$LDFLAGS -lm"
  182.     ;;
  183.   openbsd*)
  184.     SYS="OPENBSD"
  185.     CFLAGS="$CFLAGS -I/usr/X11R6/include"
  186.     LDFLAGS="$LDFLAGS -lm"
  187.     ;;
  188.   *linux*)
  189.     SYS="LINUX"
  190.     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
  191.     LDFLAGS="$LDFLAGS -lm"
  192.     ;;
  193.   cygwin*)
  194.     SYS="MINGW"
  195.     EXE=".exe"
  196.     DEVNULL="NUL"
  197.     if cc_check "" -mno-cygwin; then
  198.         CFLAGS="$CFLAGS -mno-cygwin"
  199.         LDFLAGS="$LDFLAGS -mno-cygwin"
  200.     fi
  201.     ;;
  202.   mingw*)
  203.     SYS="MINGW"
  204.     EXE=".exe"
  205.     DEVNULL="NUL"
  206.     ;;
  207.   sunos*|solaris*)
  208.     SYS="SunOS"
  209.     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
  210.     LDFLAGS="$LDFLAGS -lm"
  211.     HAVE_GETOPT_LONG=0
  212.     ;;
  213.   *)
  214.     die "Unknown system $host, edit the configure"
  215.     ;;
  216. esac
  217. case $host_cpu in
  218.   i*86)
  219.     ARCH="X86"
  220.     AS="yasm"
  221.     ASFLAGS="$ASFLAGS -O2"
  222.     if [[ "$asm" == yes && "$CFLAGS" != *-march* ]]; then
  223.       CFLAGS="$CFLAGS -march=i686"
  224.     fi
  225.     if [[ "$asm" == yes && "$CFLAGS" != *-mfpmath* ]]; then
  226.       CFLAGS="$CFLAGS -mfpmath=sse -msse"
  227.     fi
  228.     if [ "$SYS" = MACOSX ]; then
  229.       ASFLAGS="$ASFLAGS -f macho -DPREFIX"
  230.     elif [ "$SYS" = MINGW ]; then
  231.       ASFLAGS="$ASFLAGS -f win32 -DPREFIX"
  232.     else
  233.       ASFLAGS="$ASFLAGS -f elf"
  234.     fi
  235.     ;;
  236.   x86_64)
  237.     ARCH="X86_64"
  238.     AS="yasm"
  239.     if [ "$SYS" = MACOSX ];then
  240.       ASFLAGS="$ASFLAGS -f macho64 -m amd64 -DPIC -DPREFIX"
  241.       CFLAGS="$CFLAGS -arch x86_64"
  242.       LDFLAGS="$LDFLAGS -arch x86_64"
  243.     elif [ "$SYS" = MINGW ]; then
  244.       ASFLAGS="$ASFLAGS -f win32 -m amd64 -DPREFIX"
  245.     else
  246.       ASFLAGS="$ASFLAGS -f elf -m amd64"
  247.     fi
  248.     ;;
  249.   powerpc|powerpc64)
  250.     ARCH="PPC"
  251.     if [ $SYS = MACOSX ]
  252.     then
  253.       ALTIVECFLAGS="$ALTIVECFLAGS -faltivec -fastf -mcpu=G4"
  254.     else
  255.       ALTIVECFLAGS="$ALTIVECFLAGS -maltivec -mabi=altivec -DHAVE_ALTIVEC_H"
  256.     fi
  257.     ;;
  258.   sparc)
  259.     if test "$(uname -m)" = "sun4u"; then
  260.       ARCH="UltraSparc"
  261.       CFLAGS="$CFLAGS -mcpu=ultrasparc"
  262.       LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
  263.       AS="${cross_prefix}as"
  264.       ASFLAGS="$ASFLAGS -xarch=v8plusa"
  265.     else
  266.       ARCH="Sparc"
  267.     fi
  268.     ;;
  269.   mips|mipsel|mips64|mips64el)
  270.     ARCH="MIPS"
  271.     ;;
  272.   arm*)
  273.     ARCH="ARM"
  274.     AS="${AS-${cross_prefix}gcc}"
  275.     ;;
  276.   s390|s390x)
  277.     ARCH="S390"
  278.     ;;
  279.   parisc|parisc64)
  280.     ARCH="PARISC"
  281.     ;;
  282.   *)
  283.     ARCH="$(echo $host_cpu | tr a-z A-Z)"
  284.     ;;
  285. esac
  286. # check requirements
  287. cc_check || die "No working C compiler found."
  288. if [ $shared = yes -a ( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" -o $ARCH = "ARM" ) ] ; then
  289.     pic="yes"
  290. fi
  291. if [ $asm = yes -a ( $ARCH = X86 -o $ARCH = X86_64 ) ] ; then
  292.     if ! as_check "lzcnt eax, eax" ; then
  293.         VER=`($AS --version || echo no assembler) 2>$DEVNULL | head -n 1`
  294.         echo "Found $VER"
  295.         echo "Minimum version is yasm-0.6.2"
  296.         echo "If you really want to compile without asm, configure with --disable-asm."
  297.         exit 1
  298.     fi
  299.     if ! cc_check '' '' 'asm("pabsw %xmm0, %xmm0");' ; then
  300.         VER=`(as --version || echo no gnu as) 2>$DEVNULL | head -n 1`
  301.         echo "Found $VER"
  302.         echo "Minimum version is binutils-2.17"
  303.         echo "Your compiler can't handle inline SSSE3 asm."
  304.         echo "If you really want to compile without asm, configure with --disable-asm."
  305.         exit 1
  306.     fi
  307.     CFLAGS="$CFLAGS -DHAVE_MMX"
  308. fi
  309. if [ $asm = yes -a $ARCH = ARM ] ; then
  310.     # set flags so neon is built by default
  311.     echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu|-mfloat-abi)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp"
  312.     if  cc_check '' '' 'asm("rev ip, ip");' ; then      CFLAGS="$CFLAGS -DHAVE_ARMV6"
  313.         cc_check '' '' 'asm("movt r0, #0");'         && CFLAGS="$CFLAGS -DHAVE_ARMV6T2"
  314.         cc_check '' '' 'asm("vadd.i16 q0, q0, q0");' && CFLAGS="$CFLAGS -DHAVE_NEON"
  315.         ASFLAGS="$ASFLAGS $CFLAGS -c"
  316.     else
  317.         echo "You specified a pre-ARMv6 or Thumb-1 CPU in your CFLAGS."
  318.         echo "If you really want to run on such a CPU, configure with --disable-asm."
  319.         exit 1
  320.     fi
  321. fi
  322. [ $asm = no ] && AS=""
  323. [ "x$AS" = x ] && asm="no"
  324. CFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS"
  325. echo "unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';" > conftest.c
  326. $CC $CFLAGS conftest.c -c -o conftest.o 2>$DEVNULL || die "endian test failed"
  327. grep -q BIGE conftest.o && CFLAGS="$CFLAGS -DWORDS_BIGENDIAN"
  328. # autodetect options that weren't forced nor disabled
  329. libpthread=""
  330. if test "$pthread" = "auto" ; then
  331.     pthread="no"
  332.     case $SYS in
  333.         BEOS)
  334.             pthread="yes"
  335.             ;;
  336.         MINGW)
  337.             if cc_check pthread.h -lpthread "pthread_create(0,0,0,0);" ; then
  338.                 pthread="yes"
  339.                 libpthread="-lpthread"
  340.             elif cc_check pthread.h -lpthreadGC2 "pthread_create(0,0,0,0);" ; then
  341.                 pthread="yes"
  342.                 libpthread="-lpthreadGC2"
  343.             elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
  344.                 pthread="yes"
  345.                 libpthread="-lpthreadGC2 -lwsock32"
  346.                 CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"
  347.             elif cc_check pthread.h "-lpthreadGC2 -lws2_32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
  348.                 pthread="yes"
  349.                 libpthread="-lpthreadGC2 -lws2_32"
  350.                 CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"
  351.             fi
  352.             ;;
  353.         OPENBSD)
  354.             cc_check pthread.h -pthread && pthread="yes" && libpthread="-pthread"
  355.             ;;
  356.         *)
  357.             cc_check pthread.h -lpthread && pthread="yes" && libpthread="-lpthread"
  358.             ;;
  359.     esac
  360. fi
  361. if test "$pthread" = "yes" ; then
  362.     CFLAGS="$CFLAGS -DHAVE_PTHREAD"
  363.     LDFLAGS="$LDFLAGS $libpthread"
  364. fi
  365. MP4_LDFLAGS="-lgpac_static"
  366. if [ $SYS = MINGW ]; then
  367.     MP4_LDFLAGS="$MP4_LDFLAGS -lwinmm"
  368. fi
  369. if [ "$mp4_output" = "auto" ] ; then
  370.     mp4_output="no"
  371.     cc_check gpac/isomedia.h "$MP4_LDFLAGS" && mp4_output="yes"
  372. fi
  373. if [ "$mp4_output" = "yes" ] ; then
  374.     echo "#define MP4_OUTPUT" >> config.h
  375.     LDFLAGS="$LDFLAGS $MP4_LDFLAGS"
  376. fi
  377. if [ "$avis_input" = "auto" ] ; then
  378.     if [ $SYS = MINGW ]; then
  379.         avis_input="yes"
  380.     else
  381.         avis_input="no";
  382.     fi
  383. fi
  384. if [ "$avis_input" = "yes" ] ; then
  385.     if cc_check "stdlib.h" -lvfw32 ; then
  386.         echo "#define AVIS_INPUT" >> config.h
  387.         LDFLAGS="$LDFLAGS -lvfw32"
  388.     elif cc_check "stdlib.h" -lavifil32 ; then
  389.         echo "#define AVIS_INPUT" >> config.h
  390.         LDFLAGS="$LDFLAGS -lavifil32"
  391.     else
  392.         avis_input="no";
  393.     fi
  394. fi
  395. if [ "$pic" = "yes" ] ; then
  396.     CFLAGS="$CFLAGS -fPIC"
  397.     ASFLAGS="$ASFLAGS -DPIC"
  398.     # resolve textrels in the x86 asm
  399.     cc_check stdio.h -Wl,-Bsymbolic && LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
  400. fi
  401. if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
  402.     CFLAGS="$CFLAGS -s -fomit-frame-pointer"
  403.     LDFLAGS="$LDFLAGS -s"
  404. fi
  405. if [ "$debug" = "yes" ]; then
  406.     CFLAGS="-O1 -g $CFLAGS"
  407. elif [ $ARCH = ARM ]; then
  408.     # arm-gcc-4.2 produces incorrect output with -ffast-math
  409.     # and it doesn't save any speed anyway on 4.4, so disable it
  410.     CFLAGS="-O4 -fno-fast-math $CFLAGS"
  411. else
  412.     CFLAGS="-O4 -ffast-math $CFLAGS"
  413. fi
  414. if cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then
  415.     echo "#define fseek fseeko" >> config.h
  416.     echo "#define ftell ftello" >> config.h
  417. elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then
  418.     echo "#define fseek fseeko64" >> config.h
  419.     echo "#define ftell ftello64" >> config.h
  420. fi
  421. rm -f conftest*
  422. # generate config files
  423. cat > config.mak << EOF
  424. prefix=$prefix
  425. exec_prefix=$exec_prefix
  426. bindir=$bindir
  427. libdir=$libdir
  428. includedir=$includedir
  429. ARCH=$ARCH
  430. SYS=$SYS
  431. CC=$CC
  432. CFLAGS=$CFLAGS
  433. ALTIVECFLAGS=$ALTIVECFLAGS
  434. LDFLAGS=$LDFLAGS
  435. AR=$AR
  436. RANLIB=$RANLIB
  437. STRIP=$STRIP
  438. AS=$AS
  439. ASFLAGS=$ASFLAGS
  440. EXE=$EXE
  441. VIS=$vis
  442. HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
  443. DEVNULL=$DEVNULL
  444. EOF
  445. if [ "$shared" = "yes" ]; then
  446.     API=$(grep '#define X264_BUILD' < x264.h | cut -f 3 -d ' ')
  447.     if [ "$SYS" = "MINGW" ]; then
  448.         echo "SONAME=libx264-$API.dll" >> config.mak
  449.         echo 'IMPLIBNAME=libx264.dll.a' >> config.mak
  450.         echo 'SOFLAGS=-Wl,--out-implib,$(IMPLIBNAME) -Wl,--enable-auto-image-base' >> config.mak
  451.     elif [ "$SYS" = "MACOSX" ]; then
  452.         echo "SOSUFFIX=dylib" >> config.mak
  453.         echo "SONAME=libx264.$API.dylib" >> config.mak
  454.         echo 'SOFLAGS=-dynamiclib -Wl,-single_module -Wl,-read_only_relocs,suppress -install_name $(DESTDIR)$(libdir)/$(SONAME)' >> config.mak
  455.     elif [ "$SYS" = "SunOS" ]; then
  456.         echo "SOSUFFIX=so" >> config.mak
  457.         echo "SONAME=libx264.so.$API" >> config.mak
  458.         echo 'SOFLAGS=-Wl,-h,$(SONAME)' >> config.mak
  459.     else
  460.         echo "SOSUFFIX=so" >> config.mak
  461.         echo "SONAME=libx264.so.$API" >> config.mak
  462.         echo 'SOFLAGS=-Wl,-soname,$(SONAME)' >> config.mak
  463.     fi
  464.     echo 'default: $(SONAME)' >> config.mak
  465. fi
  466. ./version.sh
  467. pclibs="-L$libdir -lx264 $libpthread"
  468. cat > x264.pc << EOF
  469. prefix=$prefix
  470. exec_prefix=$exec_prefix
  471. libdir=$libdir
  472. includedir=$includedir
  473. Name: x264
  474. Description: H.264 (MPEG4 AVC) encoder library
  475. Version: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//')
  476. Libs: $pclibs
  477. Cflags: -I$includedir
  478. EOF
  479. echo "Platform:   $ARCH"
  480. echo "System:     $SYS"
  481. echo "asm:        $asm"
  482. echo "avis input: $avis_input"
  483. echo "mp4 output: $mp4_output"
  484. echo "pthread:    $pthread"
  485. echo "debug:      $debug"
  486. echo "gprof:      $gprof"
  487. echo "PIC:        $pic"
  488. echo "shared:     $shared"
  489. echo "visualize:  $vis"
  490. echo
  491. echo "You can run 'make' or 'make fprofiled' now."