--- trunk/xvidcore/build/generic/configure.in 2003/02/10 13:54:19 828 +++ branches/release-1_0-branch/xvidcore/build/generic/configure.in 2004/05/02 10:33:22 1445 @@ -2,13 +2,19 @@ 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], [0.9.1 (wip)], [xvid-devel@xvid.org]) +AC_PREREQ([2.50]) + +AC_INIT([XviD], [1.0.0 rc4], [xvid-devel@xvid.org]) AC_CONFIG_SRCDIR(configure.in) +dnl Do not forget to increase that when needed. +API_MAJOR="4" +API_MINOR="0" + dnl NASM version requirement minimum_nasm_patch_version=34 nasm_prog="nasm" @@ -16,27 +22,17 @@ 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 -fPIC" -our_cflags_defaults="$our_cflags_defaults -fomit-frame-pointer" +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 -funroll-loops" -our_cflags_defaults="$our_cflags_defaults -fschedule-insns" -our_cflags_defaults="$our_cflags_defaults -fschedule-insns2" +our_cflags_defaults="$our_cflags_defaults -fomit-frame-pointer" dnl ========================================================================== dnl Features - configure options dnl ========================================================================== FEATURES="" -DIVX4COMPAT_SOURCES="" - -dnl BIGLUT aka old VLC code -AC_ARG_ENABLE(oldvlc, - AC_HELP_STRING([--enable-oldvlc], - [Enable old VLC code (Needs much more memory ~10MB)]), - [if test "$enable_oldvlc" = "yes" ; then - FEATURES="$FEATURES -DBIGLUT" - fi]) dnl Internal Debug AC_ARG_ENABLE(idebug, @@ -54,6 +50,15 @@ FEATURES="$FEATURES -D_PROFILING_" fi]) +dnl GNU Profiling options +AC_ARG_ENABLE(gnuprofile, + AC_HELP_STRING([--enable-gnuprofile], + [Enable profiling informations for gprof]), + [if test "$enable_gnuprofile" = "yes" ; then + GNU_PROF_CFLAGS="-pg -fprofile-arcs -ftest-coverage" + GNU_PROF_LDFLAGS="-pg" + fi]) + dnl Assembly code AC_ARG_ENABLE(assembly, AC_HELP_STRING([--disable-assembly], @@ -67,14 +72,16 @@ fi], [assembly="yes"]) -dnl Internal Debug -AC_ARG_ENABLE(divx4compat, - AC_HELP_STRING([--enable-divx4compat], - [Enable DivX4 compatibility API]), - [if test "$enable_divx4compat" = "yes" ; then - DIVX4COMPAT_SOURCES="SRC_DIVX4COMPAT" - fi]) - +dnl Build as a module not a shared lib on darwin +AC_ARG_ENABLE(macosx_module, + AC_HELP_STRING([--enable-macosx_module], + [Build as a module on MacOS X]), + [if test "$enable_macosx_module" = "yes" ; then + macosx_module="yes" + else + macosx_module="no" + fi], + [macosx_module="no"]) dnl ========================================================================== dnl Default install prefix and checks build type @@ -99,7 +106,6 @@ AC_MSG_CHECKING(whether to use default CFLAGS) if test x"$CFLAGS" = x"" ; then force_default_cc_options="yes" - CFLAGS="$our_cflags_defaults" AC_MSG_RESULT([yes]) else force_default_cc_options="no" @@ -116,6 +122,12 @@ AC_PROG_INSTALL dnl ========================================================================== +dnl Check for the ranlib program to generate static library index +dnl ========================================================================== + +AC_PROG_RANLIB + +dnl ========================================================================== dnl dnl This part looks for: dnl @@ -213,16 +225,21 @@ SHARED_EXTENSION="so" OBJECT_EXTENSION="o" ;; - [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]|mingw32|mks) - AC_MSG_RESULT([.dll .lib .obj]) - STATIC_EXTENSION="lib" + [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) + AC_MSG_RESULT([.dll .a .obj]) + STATIC_EXTENSION="a" SHARED_EXTENSION="dll" OBJECT_EXTENSION="obj" ;; darwin*|raphsody*) - AC_MSG_RESULT([.dynlib .a .o]) + if test x"$macosx_module" = x"yes"; then + AC_MSG_RESULT([.so .a .o]) + SHARED_EXTENSION="so" + else + AC_MSG_RESULT([.dynlib .a .o]) + SHARED_EXTENSION="dylib" + fi STATIC_EXTENSION="a" - SHARED_EXTENSION="dylib" OBJECT_EXTENSION="o" ;; *) @@ -233,36 +250,70 @@ ;; esac +dnl ========================================================================== +dnl +dnl Determines best options for CC and LD +dnl - STATIC_LIB, SHARED_LIB, SPECIFIC_CFLAGS, SPECIFIC_LDLAGS +dnl +dnl ========================================================================== + AC_MSG_CHECKING(for platform specific LDFLAGS/CFLAGS) -OS_LDFLAGS="" +SPECIFIC_LDFLAGS="" +SPECIFIC_CFLAGS="" +PRE_SHARED_LIB="" case "$target_os" in *bsd*|linux*|irix*|solaris*) - AC_MSG_RESULT([-shared -lc -lm]) - OS_LDFLAGS="-shared -lc -lm" - ;; - [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]|mingw32|mks) - AC_MSG_RESULT([-shared -Wl,--dll,--out-implib,\$@.a]) - OS_LDFLAGS="-shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" - CFLAGS="$CFLAGS -mno-cygwin" + 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 -lc -lm" + SPECIFIC_CFLAGS="-fPIC" + ;; + [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) + 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_CFLAGS="-mno-cygwin" ;; darwin*|raphsody*) - AC_MSG_RESULT([-dynamiclib]) - OS_LDFLAGS="-dynamiclib -flat_namespace" - CFLAGS="$CFLAGS -fno-common" + 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)" + else + AC_MSG_RESULT([module options]) + PRE_SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)-temp.o" + SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" + SPECIFIC_LDFLAGS="-r -keep_private_externs -nostdlib && \$(CC) \$(LDFLAGS) \$(PRE_SHARED_LIB) -o libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -bundle -flat_namespace -undefined suppress" + fi ;; beos) - AC_MSG_RESULT([-nostart]) - OS_LDFLAGS="-nostart" + AC_MSG_RESULT([ok]) + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" + SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" + SPECIFIC_LDFLAGS="-nostart" + SPECIFIC_CFLAGS="-fPIC" ;; *) - AC_MSG_RESULT([Unknown OS - -shared -lc -lm]) - OS_LDFLAGS="" + AC_MSG_RESULT([Unknown Platform (Using default -shared -lc -lm)]) + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" + SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" + SPECIFIC_LDFLAGS="" + SPECIFIC_CFLAGS="" ;; esac +if test x"$PRE_SHARED_LIB" = x; then + PRE_SHARED_LIB=$SHARED_LIB +fi + dnl ========================================================================== dnl -dnl Assembler stuff - AS, AFLAGS, ASSEMBLY_EXTENSION, SOURCES +dnl Assembler stuff +dnl - AS, AFLAGS, ASSEMBLY_EXTENSION, SOURCES dnl dnl ========================================================================== @@ -289,8 +340,12 @@ 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]) + if test "$nasm_patch" -lt "$minimum_nasm_patch_version" ; then AC_MSG_WARN([nasm patch version too old - Compiling generic sources only]) ARCHITECTURE="GENERIC" @@ -306,7 +361,7 @@ NASM_FORMAT="elf" PREFIX="" ;; - [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]|mingw32|mks) + [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) AC_MSG_RESULT([win32]) NASM_FORMAT="win32" PREFIX="-DPREFIX" @@ -314,7 +369,7 @@ esac AS=nasm - AFLAGS="-I\$(/dev/null 1>/dev/null ; then AC_MSG_RESULT(yes) - CFLAGS="$CFLAGS -DARCH_IS_PPC_ALTIVEC" + SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DARCH_IS_PPC_ALTIVEC" ASSEMBLY_SOURCES="SRC_ALTIVEC" else AC_MSG_RESULT(no) @@ -359,6 +414,22 @@ AFLAGS="-c" ASSEMBLY_EXTENSION="s" ASSEMBLY_SOURCES="SRC_IA64" + + case `basename $CC` in + *ecc*) + DCT_IA64_SOURCES="SRC_IA64_IDCT_ECC" + + dnl If the compiler is ecc, then i don't know its options + dnl fallback to "no options" + if test "$force_default_cc_options" = "yes" ; then + our_cflags_defaults="" + fi + ;; + *) + DCT_IA64_SOURCES="SRC_IA64_IDCT_GCC" + ;; + esac + fi dnl ========================================================================== @@ -370,10 +441,39 @@ AC_CHECK_HEADERS( stdio.h \ signal.h \ + stdlib.h \ + string.h \ + assert.h \ + math.h \ , , AC_MSG_ERROR(Missing header file)) dnl ========================================================================== dnl +dnl Now we can set CFLAGS if needed +dnl +dnl ========================================================================== + +if test "$force_default_cc_options" = "yes" ; then + CFLAGS="$our_cflags_defaults" +fi + +dnl ========================================================================== +dnl +dnl Profiling stuff goes here +dnl - adds options to SPECIFIC_CFLAGS, SPECIFIC_LDLAGS +dnl - removes incompatible options from CFLAGS +dnl +dnl ========================================================================== + +SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS $GNU_PROF_LDFLAGS" +SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS $GNU_PROF_CFLAGS" + +if test "$enable_gnuprofile" = "yes" ; then + CFLAGS=`echo $CFLAGS | sed s/'-fomit-frame-pointer'/''/` +fi + +dnl ========================================================================== +dnl dnl Substitions dnl dnl ========================================================================== @@ -393,8 +493,15 @@ AC_SUBST(ASSEMBLY_SOURCES) AC_SUBST(CC) AC_SUBST(CFLAGS) -AC_SUBST(OS_LDFLAGS) -AC_SUBST(DIVX4COMPAT_SOURCES) +AC_SUBST(SPECIFIC_LDFLAGS) +AC_SUBST(SPECIFIC_CFLAGS) +AC_SUBST(DCT_IA64_SOURCES) +AC_SUBST(RANLIB) +AC_SUBST(API_MAJOR) +AC_SUBST(API_MINOR) +AC_SUBST(STATIC_LIB) +AC_SUBST(PRE_SHARED_LIB) +AC_SUBST(SHARED_LIB) dnl ========================================================================== dnl