X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=6f82da2f4229dfc7be4d7f160b82dd65220ca311;hb=dc95c0f4d30e5289442b1679bf674b92f18f5083;hp=e594db5042f4ea1629af2acfcbfca246775c5ab2;hpb=11ef32f432b8e055c30c99531e25320dbce8f656;p=x264 diff --git a/configure b/configure index e594db50..6f82da2f 100755 --- a/configure +++ b/configure @@ -19,32 +19,29 @@ 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 1 fi cc_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.pc +rm -f config.h config.mak x264.pc conftest* prefix='/usr/local' exec_prefix='${prefix}' @@ -64,11 +61,11 @@ vis="no" shared="no" CC="${CC-gcc}" -CFLAGS="$CFLAGS -Wall -I. -D__X264__" +CFLAGS="$CFLAGS -Wall -I." LDFLAGS="$LDFLAGS" HAVE_GETOPT_LONG=1 -AS="nasm" +AS="yasm" ASFLAGS="" EXE="" @@ -85,9 +82,100 @@ else exit 1 fi -MACHINE="$(./config.guess)" +# parse options + +for 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" + ;; + esac +done + +if [ "x$host" = x ]; then + host=`./config.guess` +fi +# normalize a triplet into a quadruplet +host=`./config.sub $host` + +# split $host +host_cpu="${host%%-*}" +host="${host#*-}" +host_vendor="${host%%-*}" +host_os="${host#*-}" -case "${MACHINE#*-*-}" in +case $host_os in beos*) SYS="BEOS" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" @@ -139,16 +227,15 @@ case "${MACHINE#*-*-}" in HAVE_GETOPT_LONG=0 ;; *) - echo "Unknown system $MACHINE, edit the configure" + echo "Unknown system $host, edit the configure" exit 1 ;; esac -case "${MACHINE%%-*}" in +case $host_cpu in i*86) ARCH="X86" - CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2" - AS="nasm" + AS="yasm" ASFLAGS="-O2" if [ "$SYS" = MACOSX ]; then ASFLAGS="$ASFLAGS -f macho -DPREFIX" @@ -159,12 +246,18 @@ case "${MACHINE%%-*}" in else ASFLAGS="$ASFLAGS -f elf" fi + as_check || AS="nasm" ;; x86_64) ARCH="X86_64" - CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2" AS="yasm" - ASFLAGS="-f elf -m amd64" + if [ "$SYS" = MACOSX ];then + ASFLAGS="-f macho64 -m amd64 -D__PIC__ -DPREFIX" + CFLAGS="$CFLAGS -arch x86_64" + LDFLAGS="$LDFLAGS -arch x86_64" + else + ASFLAGS="-f elf -m amd64" + fi ;; powerpc|powerpc64) ARCH="PPC" @@ -199,12 +292,16 @@ case "${MACHINE%%-*}" in ARCH="PARISC" ;; *) - ARCH="$(echo ${MACHINE%%-*} | tr a-z A-Z)" + ARCH="$(echo $host_cpu | tr a-z A-Z)" ;; esac # check requirements +if [ $shared = yes -a \( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" \) ] ; then + pic="yes" +fi + if [ $SYS = MACOSX -a $ARCH = X86 ] then # we want Apple's nasm from Xcode 2.4.1 or later @@ -214,103 +311,29 @@ then then echo "Your version of 'nasm' is too old." echo "Please install Xcode 2.4.1 or later." - exit 1 + AS="" fi fi -if [ $ARCH = X86_64 ] ; then - if ! as_check ; then - echo "No assembler. Please install yasm." - exit 1 - fi - if as_check "pabsw xmm0, xmm0" ; then - ASFLAGS="$ASFLAGS -DHAVE_SSE3" - CFLAGS="$CFLAGS -DHAVE_SSE3" +if [ $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="" fi fi CFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS" -# parse options - -for 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" - if [ $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" ] ; then - pic="yes" - fi - ;; - --enable-visualize) - LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11" - CFLAGS="$CFLAGS -DVISUALIZE=1" - vis="yes" - ;; - *) - echo "Unknown option $opt, ignored" - ;; - esac -done +echo "unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';" > conftest.c +$CC $CFLAGS conftest.c -c -o conftest.o 2>$DEVNULL || die "endian test failed" +grep -q BIGE conftest.o && CFLAGS="$CFLAGS -DWORDS_BIGENDIAN" # autodetect options that weren't forced nor disabled @@ -330,7 +353,7 @@ if test "$pthread" = "auto" ; then libpthread="-lpthreadGC2" elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then pthread="yes" - libpthread="-lpthreadGC2 -lwsock32"\ + libpthread="-lpthreadGC2 -lwsock32" CFLAGS="$CFLAGS -DPTW32_STATIC_LIB" fi ;; @@ -372,6 +395,8 @@ fi if [ "$pic" = "yes" ] ; then CFLAGS="$CFLAGS -fPIC" ASFLAGS="$ASFLAGS -D__PIC__" + # resolve textrels in the x86 asm + cc_check stdio.h -Wl,-Bsymbolic && LDFLAGS="$LDFLAGS -Wl,-Bsymbolic" fi if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then @@ -393,6 +418,8 @@ elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then echo "#define ftell ftello64" >> config.h fi +rm -f conftest* + # generate config files cat > config.mak << EOF