📄 configure.in
字号:
dnl ==========================================================================dnldnl Autoconf script for XviDdnldnl Copyright(C) 2003-2004 Edouard Gomez <ed.gomez@free.fr>dnldnl ==========================================================================AC_PREREQ([2.50])AC_INIT([XviD], [1.0.2], [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 requirementminimum_nasm_patch_version=34nasm_prog="nasm"dnl Default CFLAGS -- Big impact on overall speedour_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"dnl ==========================================================================dnl Features - configure optionsdnl ==========================================================================FEATURES=""dnl Internal DebugAC_ARG_ENABLE(idebug, AC_HELP_STRING([--enable-idebug], [Enable internal debug function]), [if test "$enable_idebug" = "yes" ; then FEATURES="$FEATURES -D_DEBUG" fi])dnl Internal ProfileAC_ARG_ENABLE(iprofile, AC_HELP_STRING([--enable-iprofile], [Enable internal profiling]), [if test "$enable_iprofile" = "yes" ; then FEATURES="$FEATURES -D_PROFILING_" fi])dnl GNU Profiling optionsAC_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 codeAC_ARG_ENABLE(assembly, AC_HELP_STRING([--disable-assembly], [Disable assembly code]), [if test "$enable_assembly" = "no" ; then assembly="no" else if test "$enable_assembly" = "yes" ; then assembly="yes" fi fi], [assembly="yes"])dnl Build as a module not a shared lib on darwinAC_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 typednl ==========================================================================AC_PREFIX_DEFAULT("/usr/local")AC_CANONICAL_BUILDAC_CANONICAL_HOSTAC_CANONICAL_TARGETdnl ==========================================================================dnl Check for the C compiler (could be passed on command line)dnl ==========================================================================dnldnl First we test if CFLAGS have been passed on command linednl I do that because autoconf defaults (-g -O2) suck and they would killdnl performance. To prevent that we define a good defult CFLAGS at the enddnl of the script if and only if CFLAGS has not been passed on the commanddnl linednlAC_MSG_CHECKING(whether to use default CFLAGS)if test x"$CFLAGS" = x"" ; then force_default_cc_options="yes" AC_MSG_RESULT([yes])else force_default_cc_options="no" AC_MSG_RESULT([no])fidnl Now we can safely check for the C compilerAC_PROG_CCdnl ==========================================================================dnl Check for the install programdnl ==========================================================================AC_PROG_INSTALLdnl ==========================================================================dnl Check for the ranlib program to generate static library indexdnl ==========================================================================AC_PROG_RANLIBdnl ==========================================================================dnldnl This part looks for:dnldnl ARCHITECTURE : The platform architecturednl - IA32 for mmx, mmx-ext, mmx2, sse assemblydnl - IA64dnl - PPC for PowerPC assembly routinesdnl - GENERIC for plain C sources onlydnldnl BUS: Address bus size (in bits)dnl - 32dnl - 64dnldnl ENDIANNESS: I think you can guess what this thing means :-)dnl - LITTLE_ENDIANdnl - BIG_ENDIANdnldnl ==========================================================================dnldnl Looking what sources have to be compiled according to the CPU typednlARCHITECTURE=""AC_MSG_CHECKING([for whether to use assembly code])if test x"$assembly" = x"yes" ; then AC_MSG_RESULT([yes]) AC_MSG_CHECKING([for architecture type]) case "$target_cpu" in i[[3456]]86) AC_MSG_RESULT(ia32) ARCHITECTURE="IA32" ;; powerpc) AC_MSG_RESULT(PowerPC) dnl ATM the ppc port is out of date dnl ARCHITECTURE="PPC" ARCHITECTURE="GENERIC" ;; ia64) AC_MSG_RESULT(ia64) ARCHITECTURE="IA64" ;; *) AC_MSG_RESULT($target_cpu) ARCHITECTURE="GENERIC" ;; esacelse AC_MSG_RESULT([no]) ARCHITECTURE="GENERIC"fidnldnl Testing address bus lengthdnlBUS=""AC_CHECK_SIZEOF([int *])case "$ac_cv_sizeof_int_p" in 4) BUS="32BIT" ;; 8) BUS="64BIT" ;; *) AC_MSG_ERROR([XviD supports only 32/64 bit architectures]) ;;esacdnldnl Testing endiannessdnlENDIANNESS=""AC_C_BIGENDIAN(ENDIANNESS="BIG_ENDIAN", ENDIANNESS="LITTLE_ENDIAN")dnl ==========================================================================dnldnl Check for OS specific variablesdnl - SHARED_EXTENSION, STATIC_EXTENSION, OBJECT_EXTENSIONdnldnl ==========================================================================AC_MSG_CHECKING(for build extensions)SHARED_EXTENSION=""STATIC_EXTENSION=""OBJECT_EXTENSION=""case "$target_os" in *bsd*|linux*|beos|irix*|solaris*) AC_MSG_RESULT([.so .a .o]) STATIC_EXTENSION="a" SHARED_EXTENSION="so" OBJECT_EXTENSION="o" ;; [[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*) 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" OBJECT_EXTENSION="o" ;; *) AC_MSG_RESULT([Unknown OS - Using .so .a .o]) STATIC_EXTENSION="a" SHARED_EXTENSION="so" OBJECT_EXTENSION="o" ;;esacdnl ==========================================================================dnldnl Determines best options for CC and LDdnl - STATIC_LIB, SHARED_LIB, SPECIFIC_CFLAGS, SPECIFIC_LDLAGSdnldnl ==========================================================================AC_MSG_CHECKING(for platform specific LDFLAGS/CFLAGS)SPECIFIC_LDFLAGS=""SPECIFIC_CFLAGS=""PRE_SHARED_LIB=""case "$target_os" in *bsd*|linux*|irix*|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 -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*) 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([ok]) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" SPECIFIC_LDFLAGS="-nostart" SPECIFIC_CFLAGS="-fPIC" ;; *) AC_MSG_RESULT([Unknown Platform (Using default -shared -lc -lm)]) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" SPECIFIC_LDFLAGS="" SPECIFIC_CFLAGS="" ;;esacif test x"$PRE_SHARED_LIB" = x; then PRE_SHARED_LIB=$SHARED_LIBfidnl ==========================================================================dnldnl Assembler stuffdnl - AS, AFLAGS, ASSEMBLY_EXTENSION, SOURCESdnldnl ==========================================================================AS=""AFLAGS=""ASSEMBLY_EXTENSION=""GENERIC_SOURCES="SRC_GENERIC"ASSEMBLY_SOURCES=""dnldnl IA32dnlif test "$ARCHITECTURE" = "IA32" ; then dnl dnl Checking nasm existence 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]) 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\$(<D)/ -f $NASM_FORMAT $PREFIX" ASSEMBLY_EXTENSION="asm" ASSEMBLY_SOURCES="SRC_IA32" fi else AC_MSG_WARN([nasm not found - Compiling generic sources only]) ARCHITECTURE="GENERIC" fifidnldnl PPCdnlif 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,0EOF if $CC -c conftest.S 2>/dev/null 1>/dev/null ; then AC_MSG_RESULT(yes) SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DARCH_IS_PPC_ALTIVEC" ASSEMBLY_SOURCES="SRC_ALTIVEC" else AC_MSG_RESULT(no) fi rm -f conftest.*fidnldnl IA64dnlif test "$ARCHITECTURE" = "IA64" ; then AS="\$(CC)" 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" ;; esacfidnl ==========================================================================dnldnl Check for header filesdnldnl ==========================================================================AC_CHECK_HEADERS( stdio.h \ signal.h \ stdlib.h \ string.h \ assert.h \ math.h \ , , AC_MSG_ERROR(Missing header file))dnl ==========================================================================dnldnl Now we can set CFLAGS if neededdnldnl ==========================================================================if test "$force_default_cc_options" = "yes" ; then CFLAGS="$our_cflags_defaults"fidnl ==========================================================================dnldnl Profiling stuff goes herednl - adds options to SPECIFIC_CFLAGS, SPECIFIC_LDLAGSdnl - removes incompatible options from CFLAGSdnldnl ==========================================================================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'/''/`fidnl ==========================================================================dnldnl Substitionsdnldnl ==========================================================================AC_SUBST(FEATURES)AC_SUBST(ARCHITECTURE)AC_SUBST(BUS)AC_SUBST(ENDIANNESS)AC_SUBST(SHARED_EXTENSION)AC_SUBST(STATIC_EXTENSION)AC_SUBST(OBJECT_EXTENSION)AC_SUBST(NASM_FORMAT)AC_SUBST(AS)AC_SUBST(AFLAGS)AC_SUBST(ASSEMBLY_EXTENSION)AC_SUBST(GENERIC_SOURCES)AC_SUBST(ASSEMBLY_SOURCES)AC_SUBST(CC)AC_SUBST(CFLAGS)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 ==========================================================================dnldnl Output filesdnldnl ==========================================================================AC_CONFIG_FILES(platform.inc)AC_OUTPUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -