--- trunk/xvidcore/build/generic/configure.in 2004/03/22 22:36:25 1382 +++ trunk/xvidcore/build/generic/configure.in 2005/01/16 10:34:52 1596 @@ -2,20 +2,23 @@ dnl dnl Autoconf script for XviD dnl -dnl Copyright(C) 2003 Edouard Gomez +dnl Copyright(C) 2003-2004 Edouard Gomez dnl dnl ========================================================================== -AC_INIT([XviD], [1.0.0 rc3], [xvid-devel@xvid.org]) +AC_PREREQ([2.50]) + +AC_INIT([XviD], [1.1.0-beta1], [xvid-devel@xvid.org]) AC_CONFIG_SRCDIR(configure.in) dnl Do not forget to increase that when needed. API_MAJOR="4" -API_MINOR="0" +API_MINOR="1" dnl NASM version requirement minimum_nasm_patch_version=34 nasm_prog="nasm" +yasm_prog="yasm" dnl Default CFLAGS -- Big impact on overall speed our_cflags_defaults="-Wall" @@ -159,12 +162,14 @@ i[[3456]]86) AC_MSG_RESULT(ia32) ARCHITECTURE="IA32" + ;; + x86_64) + AC_MSG_RESULT(x86_64) + ARCHITECTURE="X86_64" ;; powerpc) AC_MSG_RESULT(PowerPC) - dnl ATM the ppc port is out of date - dnl ARCHITECTURE="PPC" - ARCHITECTURE="GENERIC" + ARCHITECTURE="PPC" ;; ia64) AC_MSG_RESULT(ia64) @@ -297,7 +302,7 @@ ;; *) AC_MSG_RESULT([Unknown Platform (Using default -shared -lc -lm)]) - STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" SPECIFIC_LDFLAGS="" SPECIFIC_CFLAGS="" @@ -325,81 +330,167 @@ dnl IA32 dnl -if test "$ARCHITECTURE" = "IA32" ; then +if test "$ARCHITECTURE" = "IA32" -o "$ARCHITECTURE" = "X86_64" ; then dnl - dnl Checking nasm existence + dnl Checking for nasm compatible programs + dnl yasm is preferred over nasm, because... i can use it + dnl to profile assembly code ;-) dnl - AC_CHECK_PROG([ac_nasm], [$nasm_prog], [yes], [no], , [yes]) - if test "$ac_nasm" = "yes" ; then - - dnl - dnl Checking nasm patch version - dnl - AC_MSG_CHECKING([for nasm patch version]) - nasm_patch=`nasm -r | cut -d '.' -f 3 | cut -d ' ' -f 1` - if test -z $nasm_patch ; then - nasm_patch=-1 - fi - AC_MSG_RESULT([$nasm_patch]) + found_nasm_comp_prog="no" + chosen_asm_prog="" - if test "$nasm_patch" -lt "$minimum_nasm_patch_version" ; then - AC_MSG_WARN([nasm patch version too old - Compiling generic sources only]) - ARCHITECTURE="GENERIC" - else + dnl Check for yasm first + AC_CHECK_PROG([ac_yasm], [$yasm_prog], [yes], [no], , [yes]) + if test "$ac_yasm" = "yes" ; then + found_nasm_comp_prog="yes" + chosen_asm_prog="$yasm_prog" + fi - dnl - dnl Checking nasm format - win32 or elf - dnl - AC_MSG_CHECKING([for nasm object format]) - case "$target_os" in - *bsd*|linux*|beos|irix*|solaris*) - AC_MSG_RESULT([elf]) - NASM_FORMAT="elf" - PREFIX="" - ;; - [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) - AC_MSG_RESULT([win32]) - NASM_FORMAT="win32" - PREFIX="-DPREFIX" - ;; - esac - - AS=nasm - AFLAGS="-I\$( before using intrincic +dnl - define vectors with vec = {0,0,0,0} +dnl +dnl * The compile time option will be "injected" into SPECIFIC_CFLAGS variable +dnl * The need for altivec.h will also be injected into SPECIFIC_CFLAGS through +dnl a -DHAVE_ALTIVEC_H +dnl * The vector definition is handled in portab.h thx to +dnl HAVE_PARENTHESES/BRACES_ALTIVEC_DECL +dnl +PPC_ALTIVEC_SOURCES="" if test "$ARCHITECTURE" = "PPC" ; then AS="\$(CC)" - AFLAGS="-c" - ASSEMBLY_EXTENSION="s" - ASSEMBLY_SOURCES="SRC_PPC" - AC_MSG_CHECKING([for Altivec support]) - cat > conftest.S << EOF - .text - vxor 0,0,0 + AFLAGS="" + ASSEMBLY_EXTENSION=".s" + ASSEMBLY_SOURCES="" + + AC_MSG_CHECKING([for altivec.h]) +cat > conftest.c << EOF +#include +int main() { return(0); } EOF - if $CC -c conftest.S 2>/dev/null 1>/dev/null ; then + if $CC -faltivec -c conftest.c 2>/dev/null 1>/dev/null || \ + $CC -maltivec -mabi=altivec -c conftest.c 2>/dev/null 1>/dev/null ; then AC_MSG_RESULT(yes) - SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DARCH_IS_PPC_ALTIVEC" - ASSEMBLY_SOURCES="SRC_ALTIVEC" + SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_ALTIVEC_H" + TEMP_ALTIVEC="-DHAVE_ALTIVEC_H" else AC_MSG_RESULT(no) + TEMP_ALTIVEC="" fi + + AC_MSG_CHECKING([for Altivec compiler support]) +cat > conftest.c << EOF +#ifdef HAVE_ALTIVEC_H +#include +#endif + +int main() +{ + vector unsigned int vartest2 = (vector unsigned int)(0); + vector unsigned int vartest3 = (vector unsigned int)(1); + vartest2 = vec_add(vartest2, vartest3); + return(0); +} +EOF + if $CC $TEMP_ALTIVEC -faltivec -c conftest.c 2>/dev/null 1>/dev/null ; then + AC_MSG_RESULT([yes (Apple)]) + SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -faltivec -DHAVE_ALTIVEC_PARENTHESES_DECL $TEMP_ALTIVEC" + PPC_ALTIVEC_SOURCES="SRC_PPC_ALTIVEC" + else +cat > conftest.c << EOF +#ifdef HAVE_ALTIVEC_H +#include +#endif + +int main() +{ + vector unsigned int vartest2 = (vector unsigned int){0}; + vector unsigned int vartest3 = (vector unsigned int){1}; + vartest2 = vec_add(vartest2, vartest3); + return(0); +} +EOF + if $CC $TEMP_ALTIVEC -maltivec -mabi=altivec -c conftest.c 2>/dev/null 1>/dev/null ; then + AC_MSG_RESULT([yes (GNU)]) + SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -maltivec -mabi=altivec -DHAVE_ALTIVEC_BRACES_DECL $TEMP_ALTIVEC" + PPC_ALTIVEC_SOURCES="SRC_PPC_ALTIVEC" + else + AC_MSG_RESULT([no (ppc support won't be compiled in)]) + dnl Only C code can be compiled :-( + ARCHITECTURE="GENERIC" + fi + fi + rm -f conftest.* fi @@ -439,6 +530,10 @@ AC_CHECK_HEADERS( stdio.h \ signal.h \ + stdlib.h \ + string.h \ + assert.h \ + math.h \ , , AC_MSG_ERROR(Missing header file)) dnl ========================================================================== @@ -490,6 +585,7 @@ AC_SUBST(SPECIFIC_LDFLAGS) AC_SUBST(SPECIFIC_CFLAGS) AC_SUBST(DCT_IA64_SOURCES) +AC_SUBST(PPC_ALTIVEC_SOURCES) AC_SUBST(RANLIB) AC_SUBST(API_MAJOR) AC_SUBST(API_MINOR)