configure
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:12k
源码类别:

Audio

开发平台:

Visual C++

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