--- trunk/xvidcore/build/generic/configure.in 2005/04/04 23:49:37 1609 +++ trunk/xvidcore/build/generic/configure.in 2008/11/14 15:43:28 1794 @@ -17,6 +17,8 @@ dnl NASM version requirement minimum_nasm_patch_version=34 +minimum_nasm_minor_version=99 +minimum_nasm_major_version=2 nasm_prog="nasm" yasm_prog="yasm" @@ -265,7 +267,14 @@ SPECIFIC_CFLAGS="" PRE_SHARED_LIB="" case "$target_os" in - *bsd*|linux*|irix*|solaris*) + linux*|solaris*) + 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)" @@ -349,7 +358,7 @@ fi dnl if yasm hasn't been found, then check for nasm (not buggy version) - if test "$found_nasm_comp_prog" = "no" -a "$ARCHITECTURE" != "X86_64" ; then + 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 @@ -357,17 +366,25 @@ dnl AC_MSG_CHECKING([for nasm patch version]) nasm_patch=`$nasm_prog -r | cut -d '.' -f 3 | cut -d ' ' -f 1` + 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_patch ; then nasm_patch=-1 fi + if test -z $nasm_minor ; then + nasm_minor=-1 + fi + if test -z $nasm_major ; then + nasm_major=-1 + fi AC_MSG_RESULT([$nasm_patch]) - - if test "$nasm_patch" -lt "$minimum_nasm_patch_version" ; then - AC_MSG_WARN([nasm patch version is too old]) + 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" + found_nasm_comp_prog="yes" + chosen_asm_prog="$nasm_prog" fi fi fi @@ -390,6 +407,12 @@ PREFIX="-DPREFIX" MARK_FUNCS="" ;; + *darwin*) + AC_MSG_RESULT([macho]) + NASM_FORMAT="macho" + PREFIX="-DPREFIX" + MARK_FUNCS="" + ;; esac AS="$chosen_asm_prog" @@ -538,6 +561,26 @@ dnl ========================================================================== dnl +dnl Check for pthread +dnl +dnl ========================================================================== + +AC_CHECK_HEADER( + pthread.h, + AC_CHECK_LIB( + pthread, + pthread_create, + AC_CHECK_LIB( + pthread, + pthread_join, + 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)), + AC_MSG_WARN(Pthread not supported. No SMP support)) + +dnl ========================================================================== +dnl dnl Now we can set CFLAGS if needed dnl dnl ========================================================================== @@ -562,6 +605,48 @@ fi dnl ========================================================================== +dnl Some gcc flags can't be used for gcc >= 3.4.0 +dnl ========================================================================== + +if test "$GCC" = "yes" ; then +cat << EOF > test.c +#include +int main(int argc, char **argv) +{ + if (*argv[[1]] == 'M') { + printf("%d", __GNUC__); + } + if (*argv[[1]] == 'm') { + printf("%d", __GNUC_MINOR__); + } + return 0; +} +EOF + $CC -o gcc-ver test.c + + GCC_MAJOR=`./gcc-ver M` + GCC_MINOR=`./gcc-ver m` + + rm -f test.c + rm -f gcc-ver + + # 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