--- trunk/xvidcore/build/generic/configure.in 2008/11/28 18:16:42 1821 +++ branches/release-1_3-branch/xvidcore/build/generic/configure.in 2012/10/04 14:26:11 2064 @@ -8,17 +8,19 @@ AC_PREREQ([2.50]) -AC_INIT([Xvid], [1.3.0], [xvid-devel@xvid.org]) +AC_INIT([Xvid], [1.3.2], [xvid-devel@xvid.org]) AC_CONFIG_SRCDIR(configure.in) dnl Do not forget to increase that when needed. API_MAJOR="4" -API_MINOR="1" +API_MINOR="3" -dnl NASM version requirement +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" @@ -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,19 @@ dnl ========================================================================== AC_PROG_RANLIB +AC_CHECK_TOOL([AR], [ar], [ar-not-found]) + +dnl ========================================================================== +dnl Check for the egrep program +dnl ========================================================================== + +AC_PROG_EGREP + +dnl ========================================================================== +dnl Check how the system supports symlinks. +dnl ========================================================================== + +AC_PROG_LN_S dnl ========================================================================== dnl @@ -221,7 +249,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" @@ -233,7 +261,7 @@ SHARED_EXTENSION="dll" OBJECT_EXTENSION="obj" ;; - darwin*|raphsody*) + darwin*) if test x"$macosx_module" = x"yes"; then AC_MSG_RESULT([.so .a .o]) SHARED_EXTENSION="so" @@ -262,12 +290,17 @@ AC_MSG_CHECKING(for platform specific LDFLAGS/CFLAGS) SPECIFIC_LDFLAGS="" SPECIFIC_CFLAGS="" +ALTIVEC_CFLAGS="" PRE_SHARED_LIB="" +SO_API_MAJOR_LINK="" +SO_LINK="" case "$target_os" in - linux*|solaris*) + linux*|solaris*|gnu*) AC_MSG_RESULT([ok]) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" + SO_API_MAJOR_LINK="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" + SO_LINK="libxvidcore.\$(SHARED_EXTENSION)" SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -Wl,--version-script=libxvidcore.ld -lc -lm" SPECIFIC_CFLAGS="-fPIC" ;; @@ -275,6 +308,8 @@ AC_MSG_RESULT([ok]) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" + SO_API_MAJOR_LINK="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" + SO_LINK="libxvidcore.\$(SHARED_EXTENSION)" SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -lc -lm" SPECIFIC_CFLAGS="-fPIC" ;; @@ -282,16 +317,16 @@ AC_MSG_RESULT([ok]) STATIC_LIB="xvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="xvidcore.\$(SHARED_EXTENSION)" - SPECIFIC_LDFLAGS="-mno-cygwin -shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" + SPECIFIC_LDFLAGS="-shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" SPECIFIC_CFLAGS="-mno-cygwin" ;; - darwin*|raphsody*) + darwin*) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SPECIFIC_CFLAGS="-fPIC -fno-common -no-cpp-precomp" 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" @@ -345,6 +380,29 @@ 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]) + + dnl Actually, yasm >= 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 + 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]) @@ -379,7 +437,7 @@ if test "$found_nasm_comp_prog" = "yes" ; then AC_MSG_CHECKING([for asm object format]) case "$target_os" in - *bsd*|linux*|beos|irix*|solaris*) + *bsd*|linux*|beos|irix*|solaris*|gnu*) if test "$ARCHITECTURE" = "X86_64" ; then AC_MSG_RESULT([elf64]) NASM_FORMAT="elf64" @@ -398,12 +456,25 @@ AC_MSG_RESULT([win32]) NASM_FORMAT="win32" fi - PREFIX="-DWINDOWS" - MARK_FUNCS="" + PREFIX="-DWINDOWS" + if test "$GCC" = "yes" ; then + echo 'int main(void) {return 0;}' > conftest.c + $CC -S -o conftest conftest.c + if test `$EGREP -c '_main:' conftest` -eq 0 ; then + PREFIX="$PREFIX -DNO_PREFIX" + fi + rm -f conftest* + fi + MARK_FUNCS="" ;; *darwin*) - AC_MSG_RESULT([macho]) - NASM_FORMAT="macho" + 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="" ;; @@ -430,7 +501,7 @@ dnl and GNU gcc with very slight changes to code which can be sumed up by: dnl dnl Apple: -dnl - compile with the option -faltivec +dnl - compile with the option -arch ppc -faltivec dnl - define vectors with parentheses vec = (0,0,0,0) dnl GNU dnl - compile with -maltivec -mabi=altivec @@ -455,7 +526,7 @@ #include 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" @@ -479,9 +550,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 @@ -499,8 +570,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 :-( @@ -559,19 +631,39 @@ 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)) +if test x"$pthread" = x"yes" ; then + case "$target_os" in + mingw32*) + AC_CHECK_HEADER( + [pthread.h], + [AC_CHECK_LIB( + [pthreadGC2], + [pthread_create], + [SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD" + SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthreadGC2"], + [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)) + ;; + *) + 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)) + ;; + esac +else + AC_MSG_WARN(Pthread support disabled. No SMP support) +fi dnl ========================================================================== dnl @@ -603,26 +695,9 @@ 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_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 @@ -631,6 +706,7 @@ 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` + SPECIFIC_CFLAGS=`echo $SPECIFIC_CFLAGS | sed s,'-mno-cygwin','',g` fi # GCC 3.4.x @@ -661,16 +737,22 @@ 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(LN_S) 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(SO_API_MAJOR_LINK) +AC_SUBST(SO_LINK) AC_SUBST(SHARED_LIB) +AC_SUBST(ALTIVEC_CFLAGS) dnl ========================================================================== dnl