--- trunk/xvidcore/build/generic/configure.in 2004/06/12 13:02:12 1472 +++ trunk/xvidcore/build/generic/configure.in 2011/09/14 10:43:47 2030 @@ -1,6 +1,6 @@ dnl ========================================================================== dnl -dnl Autoconf script for XviD +dnl Autoconf script for Xvid dnl dnl Copyright(C) 2003-2004 Edouard Gomez dnl @@ -8,23 +8,25 @@ AC_PREREQ([2.50]) -AC_INIT([XviD], [1.0.1], [xvid-devel@xvid.org]) +AC_INIT([Xvid], [1.4.0], [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="4" -dnl NASM version requirement -minimum_nasm_patch_version=34 +dnl NASM/YASM version requirement +minimum_yasm_major_version=1 +minimum_nasm_minor_version=0 +minimum_nasm_major_version=2 nasm_prog="nasm" +yasm_prog="yasm" dnl Default CFLAGS -- Big impact on overall speed our_cflags_defaults="-Wall" our_cflags_defaults="$our_cflags_defaults -O2" our_cflags_defaults="$our_cflags_defaults -fstrength-reduce" our_cflags_defaults="$our_cflags_defaults -finline-functions" -our_cflags_defaults="$our_cflags_defaults -freduce-all-givs" our_cflags_defaults="$our_cflags_defaults -ffast-math" our_cflags_defaults="$our_cflags_defaults -fomit-frame-pointer" @@ -72,6 +74,19 @@ fi], [assembly="yes"]) +dnl pthread code +AC_ARG_ENABLE(pthread, + AC_HELP_STRING([--disable-pthread], + [Disable pthread dependent code]), + [if test "$enable_pthread" = "no" ; then + pthread="no" + else + if test "$enable_pthread" = "yes" ; then + pthread="yes" + fi + fi], + [pthread="yes"]) + dnl Build as a module not a shared lib on darwin AC_ARG_ENABLE(macosx_module, AC_HELP_STRING([--enable-macosx_module], @@ -126,6 +141,7 @@ dnl ========================================================================== AC_PROG_RANLIB +AC_CHECK_TOOL([AR], [ar], [ar-not-found]) dnl ========================================================================== dnl @@ -161,6 +177,10 @@ i[[3456]]86) AC_MSG_RESULT(ia32) ARCHITECTURE="IA32" + ;; + x86_64) + AC_MSG_RESULT(x86_64) + ARCHITECTURE="X86_64" ;; powerpc) AC_MSG_RESULT(PowerPC) @@ -194,7 +214,7 @@ BUS="64BIT" ;; *) - AC_MSG_ERROR([XviD supports only 32/64 bit architectures]) + AC_MSG_ERROR([Xvid supports only 32/64 bit architectures]) ;; esac @@ -217,7 +237,7 @@ STATIC_EXTENSION="" OBJECT_EXTENSION="" case "$target_os" in - *bsd*|linux*|beos|irix*|solaris*) + *bsd*|linux*|beos|irix*|solaris*|gnu*) AC_MSG_RESULT([.so .a .o]) STATIC_EXTENSION="a" SHARED_EXTENSION="so" @@ -258,9 +278,17 @@ AC_MSG_CHECKING(for platform specific LDFLAGS/CFLAGS) SPECIFIC_LDFLAGS="" SPECIFIC_CFLAGS="" +ALTIVEC_CFLAGS="" PRE_SHARED_LIB="" case "$target_os" in - *bsd*|linux*|irix*|solaris*) + linux*|solaris*|gnu*) + AC_MSG_RESULT([ok]) + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" + SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" + SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -Wl,--version-script=libxvidcore.ld -lc -lm" + SPECIFIC_CFLAGS="-fPIC" + ;; + *bsd*|irix*) AC_MSG_RESULT([ok]) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" @@ -280,7 +308,7 @@ if test x"$macosx_module" = x"no"; then AC_MSG_RESULT([dylib options]) SHARED_LIB="libxvidcore.\$(API_MAJOR).\$(SHARED_EXTENSION)" - SPECIFIC_LDFLAGS="-dynamiclib -flat_namespace -compatibility_version \$(API_MAJOR) -current_version \$(API_MAJOR).\$(API_MINOR) -install_name \$(libdir)/\$(SHARED_LIB)" + SPECIFIC_LDFLAGS="-Wl,-read_only_relocs,suppress -dynamiclib -flat_namespace -compatibility_version \$(API_MAJOR) -current_version \$(API_MAJOR).\$(API_MINOR) -install_name \$(libdir)/\$(SHARED_LIB)" else AC_MSG_RESULT([module options]) PRE_SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)-temp.o" @@ -297,7 +325,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,58 +353,118 @@ 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 - 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="" + dnl Check for yasm first + AC_CHECK_PROG([ac_yasm], [$yasm_prog], [yes], [no], , [yes]) + if test "$ac_yasm" = "yes" ; then + dnl + dnl Checking yasm version + dnl + AC_MSG_CHECKING([for yasm version]) + yasm_major=`$yasm_prog --version | head -1 | cut -d '.' -f 1 | cut -d ' ' -f 2` + if test -z $yasm_major ; then + yasm_major=-1 + fi + AC_MSG_RESULT([$yasm_major]) - 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 - 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\$(= 0.7.99.2161 should be ok + dnl But I'm too lazy to check also the patch version... + if test "$yasm_major" -lt "$minimum_yasm_major_version" ; then + AC_MSG_WARN([yasm version is too old]) + else + found_nasm_comp_prog="yes" + chosen_asm_prog="$yasm_prog" fi + fi - else - AC_MSG_WARN([nasm not found - Compiling generic sources only]) - ARCHITECTURE="GENERIC" + dnl Check for nasm (not buggy version) + if test "$found_nasm_comp_prog" = "no" ; then + AC_CHECK_PROG([ac_nasm], [$nasm_prog], [yes], [no], , [yes]) + if test "$ac_nasm" = "yes" ; then + dnl + dnl Checking nasm version + dnl + AC_MSG_CHECKING([for nasm version]) + nasm_minor=`$nasm_prog -v | cut -d '.' -f 2 | cut -d ' ' -f 1` + nasm_major=`$nasm_prog -v | cut -d '.' -f 1 | cut -d ' ' -f 3` + if test -z $nasm_minor ; then + nasm_minor=-1 + fi + if test -z $nasm_major ; then + nasm_major=-1 + fi + AC_MSG_RESULT([$nasm_major]) + + dnl need nasm 2.x for SSE3/4 and X86_64 + if test "$nasm_major" -lt "$minimum_nasm_major_version" ; then + AC_MSG_WARN([nasm version is too old]) + else + found_nasm_comp_prog="yes" + chosen_asm_prog="$nasm_prog" + fi + fi fi + dnl + dnl Ok now sort what object format we must use + dnl + if test "$found_nasm_comp_prog" = "yes" ; then + AC_MSG_CHECKING([for asm object format]) + case "$target_os" in + *bsd*|linux*|beos|irix*|solaris*|gnu*) + if test "$ARCHITECTURE" = "X86_64" ; then + AC_MSG_RESULT([elf64]) + NASM_FORMAT="elf64" + else + AC_MSG_RESULT([elf]) + NASM_FORMAT="elf" + fi + MARK_FUNCS="-DMARK_FUNCS" + PREFIX="" + ;; + [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) + if test "$ARCHITECTURE" = "X86_64" ; then + AC_MSG_RESULT([win64]) + NASM_FORMAT="win64" + else + AC_MSG_RESULT([win32]) + NASM_FORMAT="win32" + fi + PREFIX="-DWINDOWS" + MARK_FUNCS="" + ;; + *darwin*) + if test "$ARCHITECTURE" = "X86_64" ; then + AC_MSG_RESULT([macho64]) + NASM_FORMAT="macho64" + else + AC_MSG_RESULT([macho32]) + NASM_FORMAT="macho32" + fi + PREFIX="-DPREFIX" + MARK_FUNCS="" + ;; + esac + + AS="$chosen_asm_prog" + ASSEMBLY_EXTENSION="asm" + AFLAGS="-I\$( int main() { return(0); } EOF - if $CC -faltivec -c conftest.c 2>/dev/null 1>/dev/null || \ + if $CC -arch ppc -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 -DHAVE_ALTIVEC_H" @@ -436,9 +524,9 @@ return(0); } EOF - if $CC $TEMP_ALTIVEC -faltivec -c conftest.c 2>/dev/null 1>/dev/null ; then + if $CC $TEMP_ALTIVEC -arch ppc -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" + SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -arch ppc -faltivec -DHAVE_ALTIVEC_PARENTHESES_DECL $TEMP_ALTIVEC" PPC_ALTIVEC_SOURCES="SRC_PPC_ALTIVEC" else cat > conftest.c << EOF @@ -456,8 +544,9 @@ 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" + SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_ALTIVEC_BRACES_DECL $TEMP_ALTIVEC" PPC_ALTIVEC_SOURCES="SRC_PPC_ALTIVEC" + ALTIVEC_CFLAGS="-maltivec -mabi=altivec" else AC_MSG_RESULT([no (ppc support won't be compiled in)]) dnl Only C code can be compiled :-( @@ -512,6 +601,26 @@ dnl ========================================================================== dnl +dnl Check for pthread +dnl +dnl ========================================================================== + +if test x"$pthread" = x"yes" ; then + AC_CHECK_HEADER( + [pthread.h], + [AC_CHECK_LIB( + [pthread], + [pthread_create], + [SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD" + SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthread"], + AC_MSG_WARN(Pthread not supported. No SMP support))], + AC_MSG_WARN(Pthread not supported. No SMP support)) +else + AC_MSG_WARN(Pthread support disabled. No SMP support) +fi + +dnl ========================================================================== +dnl dnl Now we can set CFLAGS if needed dnl dnl ========================================================================== @@ -536,6 +645,31 @@ fi dnl ========================================================================== +dnl Some gcc flags can't be used for gcc >= 3.4.0 +dnl ========================================================================== + +if test "$GCC" = "yes" ; then + + GCC_MAJOR=`$CC -dumpversion | cut -d . -f 1` + GCC_MINOR=`$CC -dumpversion | cut -d . -f 2` + + # GCC 4.x + if test "${GCC_MAJOR}" -gt 3 ; then + CFLAGS=`echo $CFLAGS | sed s,"-mcpu","-mtune",g` + CFLAGS=`echo $CFLAGS | sed s,'-freduce-all-givs','',g` + CFLAGS=`echo $CFLAGS | sed s,'-fmove-all-movables','',g` + CFLAGS=`echo $CFLAGS | sed s,'-fnew-ra','',g` + CFLAGS=`echo $CFLAGS | sed s,'-fwritable-strings','',g` + fi + + # GCC 3.4.x + if test "${GCC_MAJOR}" -eq 3 && test "${GCC_MINOR}" -gt 3 ; then + CFLAGS=`echo $CFLAGS | sed s,"-mcpu","-mtune",g` + fi +fi + + +dnl ========================================================================== dnl dnl Substitions dnl @@ -556,16 +690,19 @@ AC_SUBST(ASSEMBLY_SOURCES) AC_SUBST(CC) AC_SUBST(CFLAGS) +AC_SUBST(LDFLAGS) AC_SUBST(SPECIFIC_LDFLAGS) AC_SUBST(SPECIFIC_CFLAGS) AC_SUBST(DCT_IA64_SOURCES) AC_SUBST(PPC_ALTIVEC_SOURCES) AC_SUBST(RANLIB) +AC_SUBST(AR) AC_SUBST(API_MAJOR) AC_SUBST(API_MINOR) AC_SUBST(STATIC_LIB) AC_SUBST(PRE_SHARED_LIB) AC_SUBST(SHARED_LIB) +AC_SUBST(ALTIVEC_CFLAGS) dnl ========================================================================== dnl