dnl Process this file with autoconf to produce a configure script

dnl ------------------------------------------------
dnl Initialization and Versioning
dnl ------------------------------------------------


AC_INIT([libvorbis],[1.3.1],[vorbis-dev@xiph.org])

AC_CONFIG_SRCDIR([lib/mdct.c])

AC_CANONICAL_TARGET([])

AM_INIT_AUTOMAKE($PACKAGE_NAME,$PACKAGE_VERSION)
AM_MAINTAINER_MODE
AM_CONFIG_HEADER([config.h])

dnl Add parameters for aclocal
AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")

dnl Library versioning
dnl - library source changed -> increment REVISION
dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
dnl - interfaces added -> increment AGE
dnl - interfaces removed -> AGE = 0

V_LIB_CURRENT=4
V_LIB_REVISION=4
V_LIB_AGE=4

VF_LIB_CURRENT=6
VF_LIB_REVISION=2
VF_LIB_AGE=3

VE_LIB_CURRENT=2
VE_LIB_REVISION=7
VE_LIB_AGE=0

AC_SUBST(V_LIB_CURRENT)
AC_SUBST(V_LIB_REVISION)
AC_SUBST(V_LIB_AGE)
AC_SUBST(VF_LIB_CURRENT)
AC_SUBST(VF_LIB_REVISION)
AC_SUBST(VF_LIB_AGE)
AC_SUBST(VE_LIB_CURRENT)
AC_SUBST(VE_LIB_REVISION)
AC_SUBST(VE_LIB_AGE)

dnl --------------------------------------------------  
dnl Check for programs
dnl --------------------------------------------------  

dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2"
dnl if $CFLAGS is blank
cflags_save="$CFLAGS"
AC_PROG_CC
AC_PROG_CPP
CFLAGS="$cflags_save"

AC_C_INLINE

AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
AM_PROG_CC_C_O

dnl Check for doxygen
if test "x$enable_docs" = xyes; then
  AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
  if test $HAVE_DOXYGEN = "false"; then
    AC_MSG_WARN([*** doxygen not found, API documentation will not be built])
  fi
else
  HAVE_DOXYGEN=false
fi
AM_CONDITIONAL(HAVE_DOXYGEN,$HAVE_DOXYGEN)

dnl latex tools for the specification document
AC_ARG_ENABLE(docs,
	AC_HELP_STRING([--enable-docs], [build the documentation]))

if test "x$enable_docs" = xyes; then
  AC_CHECK_PROGS([PDFLATEX], pdflatex, [/bin/false])
  AC_CHECK_PROGS([HTLATEX], htlatex, [/bin/false])
  if test "x$PDFLATEX" = x/bin/false || test "x$HTLATEX" = x/bin/false; then
    enable_docs=no
    AC_MSG_WARN([Documentation will not be built!])
  fi
fi

AM_CONDITIONAL(BUILD_DOCS, [test "x$enable_docs" = xyes])

AC_ARG_ENABLE(examples, 
  AS_HELP_STRING([--enable-examples], [build the examples])) 
 	
AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = xyes]) 

dnl --------------------------------------------------
dnl Set build flags based on environment
dnl --------------------------------------------------

dnl Set some target options

cflags_save="$CFLAGS"
if test -z "$GCC"; then
	case $host in 
	*-*-irix*)
		dnl If we're on IRIX, we wanna use cc even if gcc 
		dnl is there (unless the user has overriden us)...
		if test -z "$CC"; then
			CC=cc
		fi
		DEBUG="-g -signed" 
		CFLAGS="-O2 -w -signed"
		PROFILE="-p -g3 -O2 -signed" ;;
	sparc-sun-solaris*)
		DEBUG="-v -g"
		CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
		PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc" ;;
	*)
		DEBUG="-g"
		CFLAGS="-O"
		PROFILE="-g -p" ;;
        esac
else

	AC_MSG_CHECKING([GCC version])
	GCC_VERSION=`$CC -dumpversion`
	AC_MSG_RESULT([$GCC_VERSION])
	case $host in 
	*86-*-linux*)
		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
		CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
#              	PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
		PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"

		# glibc < 2.1.3 has a serious FP bug in the math inline header
		# that will cripple Vorbis.  Look to see if the magic FP stack
		# clobber is missing in the mathinline header, thus indicating
		# the buggy version

		AC_EGREP_CPP(log10.*fldlg2.*fxch,[
				#define __LIBC_INTERNAL_MATH_INLINES 1
			     	#define __OPTIMIZE__
				#include <math.h>
				],bad=maybe,bad=no)
		if test ${bad} = "maybe" ;then
		      AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\),
					[
					#define __LIBC_INTERNAL_MATH_INLINES 1
				     	#define __OPTIMIZE__
					#include <math.h>
					],bad=no,bad=yes)
		fi
 		if test ${bad} = "yes" ;then
 AC_MSG_WARN([                                                        ])
 AC_MSG_WARN([********************************************************])
 AC_MSG_WARN([* The glibc headers on this machine have a serious bug *])
 AC_MSG_WARN([* in /usr/include/bits/mathinline.h  This bug affects  *])
 AC_MSG_WARN([* all floating point code, not just Ogg, built on this *])
 AC_MSG_WARN([* machine.  Upgrading to glibc 2.1.3 is strongly urged *])
 AC_MSG_WARN([* to correct the problem.  Note that upgrading glibc   *])
 AC_MSG_WARN([* will not fix any previously built programs; this is  *])
 AC_MSG_WARN([* a compile-time time bug.                             *])
 AC_MSG_WARN([* To work around the problem for this build of Ogg,    *])
 AC_MSG_WARN([* autoconf is disabling all math inlining.  This will  *])
 AC_MSG_WARN([* hurt Ogg performace but is necessary for an Ogg that *])
 AC_MSG_WARN([* will actually work.  Once glibc is upgraded, rerun   *])
 AC_MSG_WARN([* configure and make to build with inlining.           *])
 AC_MSG_WARN([********************************************************])
 AC_MSG_WARN([                                                        ])

  		CFLAGS=${OPT}" -D__NO_MATH_INLINES"
  		PROFILE=${PROFILE}" -D__NO_MATH_INLINES"
  		fi;;
        powerpc-*-linux*spe) 
 	        DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES" 
 	        CFLAGS="-O3 -Wall -Wextra -ffast-math -mfused-madd -D_REENTRANT" 
 	        PROFILE="-pg -g -O3 -ffast-math -mfused-madd -D_REENTRANT";; 
	powerpc-*-linux*)
		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES"
		CFLAGS="-O3 -Wall -Wextra -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT"
		PROFILE="-pg -g -O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT";;
	*-*-linux*)
		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
		CFLAGS="-O20 -Wall -Wextra -ffast-math -D_REENTRANT -fsigned-char"
		PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";;
	sparc-sun-*)
		sparc_cpu=""
		AC_MSG_CHECKING([if gcc supports -mv8])
		old_cflags="$CFLAGS"
		CFLAGS="$CFLAGS -mv8"
		AC_TRY_COMPILE(, [return 0;], [
			AC_MSG_RESULT([yes])
			sparc_cpu="-mv8"
		])
		CFLAGS="$old_cflags"
		DEBUG="-g -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char $sparc_cpu"
		CFLAGS="-O20 -Wall -Wextra -ffast-math -D__NO_MATH_INLINES -fsigned-char $sparc_cpu"
		PROFILE="-pg -g -O20 -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" ;;
	*-*-darwin*)
		DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char"
		CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O4 -ffast-math -fsigned-char"
		PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O4 -ffast-math -fsigned-char";;
	*-*-os2*)
		# Use -W instead of -Wextra because gcc on OS/2 is an old version.
		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
		CFLAGS="-O20 -Wall -W -ffast-math -D_REENTRANT -fsigned-char"
		PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";;
 	*)
		DEBUG="-g -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char"
		CFLAGS="-O20 -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char"
		PROFILE="-O20 -g -pg -D__NO_MATH_INLINES -fsigned-char" ;;
        esac

        AC_ADD_CFLAGS([-Wdeclaration-after-statement])
fi
CFLAGS="$CFLAGS $cflags_save"

dnl --------------------------------------------------
dnl Check for headers
dnl --------------------------------------------------

AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:)

dnl --------------------------------------------------
dnl Check for typedefs, structures, etc
dnl --------------------------------------------------

dnl none

dnl --------------------------------------------------
dnl Check for libraries
dnl --------------------------------------------------

AC_CHECK_LIB(m, cos, VORBIS_LIBS="-lm", VORBIS_LIBS="")
AC_CHECK_LIB(pthread, pthread_create, pthread_lib="-lpthread", :)

PKG_PROG_PKG_CONFIG

HAVE_OGG=no
if test "x$PKG_CONFIG" != "x"
then
  PKG_CHECK_MODULES(OGG, ogg >= 1.0, HAVE_OGG=yes, HAVE_OGG=no)
fi
if test "x$HAVE_OGG" = "xno"
then
  dnl fall back to the old school test
  XIPH_PATH_OGG(, AC_MSG_ERROR(must have Ogg installed!))
  libs_save=$LIBS
  LIBS="$OGG_LIBS $VORBIS_LIBS"
  AC_CHECK_FUNC(oggpack_writealign, , AC_MSG_ERROR(Ogg >= 1.0 required !))
  LIBS=$libs_save
fi

dnl --------------------------------------------------
dnl Check for library functions
dnl --------------------------------------------------

AC_FUNC_ALLOCA
AC_FUNC_MEMCMP

dnl --------------------------------------------------
dnl Do substitutions
dnl --------------------------------------------------

AC_SUBST(VORBIS_LIBS)
AC_SUBST(DEBUG)
AC_SUBST(PROFILE)
AC_SUBST(pthread_lib)

dnl The following line causes the libtool distributed with the source
dnl to be replaced if the build system has a more recent version.
AC_SUBST(LIBTOOL_DEPS)

AC_OUTPUT([
Makefile
m4/Makefile
lib/Makefile
lib/modes/Makefile
lib/books/Makefile
lib/books/coupled/Makefile
lib/books/uncoupled/Makefile
lib/books/floor/Makefile
doc/Makefile doc/vorbisfile/Makefile doc/vorbisenc/Makefile
doc/Doxyfile
include/Makefile include/vorbis/Makefile
examples/Makefile
test/Makefile
vq/Makefile
libvorbis.spec
vorbis.pc
vorbisenc.pc
vorbisfile.pc
vorbis-uninstalled.pc
vorbisenc-uninstalled.pc
vorbisfile-uninstalled.pc
])
