[svn] / branches / dev-api-4 / xvidcore / build / generic / configure.in Repository:
ViewVC logotype

View of /branches/dev-api-4/xvidcore/build/generic/configure.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1182 - (download) (annotate)
Tue Oct 21 16:48:58 2003 UTC (20 years, 5 months ago) by edgomez
File size: 13801 byte(s)
Handles nasm include path weirdness

CodingStyle (forgiven bit from last patcheset)
dnl ==========================================================================
dnl
dnl Autoconf script for XviD
dnl
dnl Copyright(C) 2003 Edouard Gomez <ed.gomez@free.fr>
dnl
dnl ==========================================================================

AC_INIT([XviD], [1.0.0 cvs-snapshot], [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"

dnl Default CFLAGS -- Big impact on overall speed
our_cflags_defaults="-Wall"
our_cflags_defaults="$our_cflags_defaults -O1"
our_cflags_defaults="$our_cflags_defaults -fstrength-reduce"
our_cflags_defaults="$our_cflags_defaults -finline-functions"
our_cflags_defaults="$our_cflags_defaults -fgcse"
our_cflags_defaults="$our_cflags_defaults -freduce-all-givs"
our_cflags_defaults="$our_cflags_defaults -ffast-math"
our_cfalgs_defaults="$our_cflags_defaults -fomit-frame-pointer"

dnl ==========================================================================
dnl Features - configure options
dnl ==========================================================================

FEATURES=""

dnl Internal Debug
AC_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 Profile
AC_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 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],
				 [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 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
dnl ==========================================================================

AC_PREFIX_DEFAULT("/usr/local")
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_CANONICAL_TARGET

dnl ==========================================================================
dnl Check for the C compiler (could be passed on command line)
dnl ==========================================================================

dnl
dnl First we test if CFLAGS have been passed on command line
dnl I do that because autoconf defaults (-g -O2) suck and they would kill
dnl performance. To prevent that we define a good defult CFLAGS at the end
dnl of the script if and only if CFLAGS has not been passed on the command
dnl line
dnl
AC_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])
fi

dnl Now we can safely check for the C compiler
AC_PROG_CC

dnl ==========================================================================
dnl Check for the install program
dnl ==========================================================================

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
dnl ARCHITECTURE : The platform architecture
dnl                - IA32 for mmx, mmx-ext, mmx2, sse assembly
dnl                - IA64
dnl                - PPC for PowerPC assembly routines
dnl                - GENERIC for plain C sources only
dnl
dnl BUS: Address bus size (in bits)
dnl      - 32
dnl      - 64
dnl
dnl ENDIANNESS: I think you can guess what this thing means :-)
dnl             - LITTLE_ENDIAN
dnl             - BIG_ENDIAN
dnl
dnl ==========================================================================

dnl
dnl Looking what sources have to be compiled according to the CPU type
dnl

ARCHITECTURE=""

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"
		;;
   esac
else
   AC_MSG_RESULT([no])
   ARCHITECTURE="GENERIC"
fi

dnl
dnl Testing address bus length
dnl
BUS=""

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])
	;;
esac

dnl
dnl Testing endianness
dnl
ENDIANNESS=""

AC_C_BIGENDIAN(ENDIANNESS="BIG_ENDIAN", ENDIANNESS="LITTLE_ENDIAN")

dnl ==========================================================================
dnl
dnl Check for OS specific variables
dnl    - SHARED_EXTENSION, STATIC_EXTENSION, OBJECT_EXTENSION
dnl
dnl ==========================================================================

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"
	;;
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)
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="libxvidcore.\$(STATIC_EXTENSION)"
	SHARED_LIB="libxvidcore.\$(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=""
	;;
esac

if test x"$PRE_SHARED_LIB" = x; then 
  PRE_SHARED_LIB=$SHARED_LIB
fi

dnl ==========================================================================
dnl
dnl Assembler stuff
dnl  - AS, AFLAGS, ASSEMBLY_EXTENSION, SOURCES
dnl
dnl ==========================================================================

AS=""
AFLAGS=""
ASSEMBLY_EXTENSION=""
GENERIC_SOURCES="SRC_GENERIC"
ASSEMBLY_SOURCES=""

dnl
dnl IA32
dnl

if 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"
   fi

fi

dnl
dnl PPC
dnl

if 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,0
EOF
   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.*
fi

dnl
dnl IA64
dnl

if 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"
		;;
   esac

fi

dnl ==========================================================================
dnl
dnl Check for header files
dnl
dnl ==========================================================================

AC_CHECK_HEADERS(
	stdio.h \
	signal.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 ==========================================================================

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 ==========================================================================
dnl
dnl Output files
dnl
dnl ==========================================================================

AC_CONFIG_FILES(platform.inc)

AC_OUTPUT

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4