dnl Process this file with autoconf to produce a configure script.

AC_INIT(src/framing.c)

AM_INIT_AUTOMAKE(libogg,1.2.0)
AM_MAINTAINER_MODE

dnl Library versioning

LIB_CURRENT=7
LIB_REVISION=0
LIB_AGE=7
AC_SUBST(LIB_CURRENT)
AC_SUBST(LIB_REVISION)
AC_SUBST(LIB_AGE)

AC_PROG_CC
AM_PROG_LIBTOOL
AM_PROG_CC_C_O

dnl config.h
AM_CONFIG_HEADER(config.h)

dnl Set some options based on environment

cflags_save="$CFLAGS"
if test -z "$GCC"; then
        case $host in 
        *-*-irix*)
                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
        case $host in 
        *-*-linux*)
                DEBUG="-g -Wall -fsigned-char"
                CFLAGS="-O20 -ffast-math -fsigned-char"
                PROFILE="-Wall -W -pg -g -O20 -ffast-math -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 -fsigned-char $sparc_cpu"
                CFLAGS="-O20 -ffast-math -fsigned-char $sparc_cpu"
                PROFILE="-pg -g -O20 -fsigned-char $sparc_cpu" 
		;;
	*-*-darwin*)
		DEBUG="-fno-common -g -Wall -fsigned-char"
		CFLAGS="-fno-common -O4 -Wall -fsigned-char -ffast-math"
		PROFILE="-fno-common -O4 -Wall -pg -g -fsigned-char -ffast-math"
		;;
        *)
                DEBUG="-g -Wall -fsigned-char"
                CFLAGS="-O20 -fsigned-char"
                PROFILE="-O20 -g -pg -fsigned-char" 
		;;
        esac
fi
CFLAGS="$CFLAGS $cflags_save"
DEBUG="$DEBUG $cflags_save"
PROFILE="$PROFILE $cflags_save"

dnl Checks for programs.

dnl Checks for libraries.

dnl Checks for header files.
AC_HEADER_STDC

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST

dnl Check for types

AC_MSG_CHECKING(for int16_t)
AC_CACHE_VAL(has_cv_int16_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
int16_t foo;
int main() {return 0;}
],
has_cv_int16_t=yes,
has_cv_int16_t=no,
has_cv_int16_t=no
)])
AC_MSG_RESULT($has_cv_int16_t)

AC_MSG_CHECKING(for int32_t)
AC_CACHE_VAL(has_cv_int32_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
int32_t foo;
int main() {return 0;}
],
has_cv_int32_t=yes,
has_cv_int32_t=no,
has_cv_int32_t=no
)])
AC_MSG_RESULT($has_cv_int32_t)

AC_MSG_CHECKING(for uint32_t)
AC_CACHE_VAL(has_cv_uint32_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
uint32_t foo;
int main() {return 0;}
],
has_cv_uint32_t=yes,
has_cv_uint32_t=no,
has_cv_uint32_t=no
)])
AC_MSG_RESULT($has_cv_uint32_t)

AC_MSG_CHECKING(for uint16_t)
AC_CACHE_VAL(has_cv_uint16_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
uint16_t foo;
int main() {return 0;}
],
has_cv_uint16_t=yes,
has_cv_uint16_t=no,
has_cv_uint16_t=no
)])
AC_MSG_RESULT($has_cv_uint16_t)

AC_MSG_CHECKING(for u_int32_t)
AC_CACHE_VAL(has_cv_u_int32_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
u_int32_t foo;
int main() {return 0;}
],
has_cv_u_int32_t=yes,
has_cv_u_int32_t=no,
has_cv_u_int32_t=no
)])
AC_MSG_RESULT($has_cv_u_int32_t)

AC_MSG_CHECKING(for u_int16_t)
AC_CACHE_VAL(has_cv_u_int16_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
u_int16_t foo;
int main() {return 0;}
],
has_cv_u_int16_t=yes,
has_cv_u_int16_t=no,
has_cv_u_int16_t=no
)])
AC_MSG_RESULT($has_cv_u_int16_t)

AC_MSG_CHECKING(for int64_t)
AC_CACHE_VAL(has_cv_int64_t,
[AC_TRY_RUN([
#if defined __BEOS__ && !defined __HAIKU__
#include <inttypes.h>
#endif
#include <sys/types.h>
int64_t foo;
int main() {return 0;}
],
has_cv_int64_t=yes,
has_cv_int64_t=no,
has_cv_int64_t=no
)])
AC_MSG_RESULT($has_cv_int64_t)

AC_CHECK_SIZEOF(short,2)
AC_CHECK_SIZEOF(int,4)
AC_CHECK_SIZEOF(long,4)
AC_CHECK_SIZEOF(long long,8)


if test x$has_cv_int16_t = "xyes" ; then
        SIZE16="int16_t"
else
        case 2 in
                $ac_cv_sizeof_short) SIZE16="short";;
                $ac_cv_sizeof_int) SIZE16="int";;
        esac
fi

if test x$has_cv_int32_t = "xyes" ; then
        SIZE32="int32_t"
else
        case 4 in
                $ac_cv_sizeof_short) SIZE32="short";;
                $ac_cv_sizeof_int) SIZE32="int";;
                $ac_cv_sizeof_long) SIZE32="long";;
        esac
fi

if test x$has_cv_uint32_t = "xyes" ; then
        USIZE32="uint32_t"
else
        if test x$has_cv_u_int32_t = "xyes" ; then
                USIZE32="u_int32_t"
        else
                case 4 in
                        $ac_cv_sizeof_short) USIZE32="unsigned short";;
                        $ac_cv_sizeof_int) USIZE32="unsigned int";;
                        $ac_cv_sizeof_long) USIZE32="unsigned long";;
                esac
        fi
fi

if test x$has_cv_uint16_t = "xyes" ; then
        USIZE16="uint16_t"
else
        if test x$has_cv_u_int16_t = "xyes" ; then
                USIZE16="u_int16_t"
        else
                case 2 in
                        $ac_cv_sizeof_short) USIZE16="unsigned short";;
                        $ac_cv_sizeof_int) USIZE16="unsigned int";;
                        $ac_cv_sizeof_long) USIZE16="unsigned long";;
                esac
        fi
fi

if test x$has_cv_int64_t = "xyes" ; then
        SIZE64="int64_t"
else
case 8 in
        $ac_cv_sizeof_int) SIZE64="int";;
        $ac_cv_sizeof_long) SIZE64="long";;
        $ac_cv_sizeof_long_long) SIZE64="long long";;
esac
fi

if test -z "$SIZE16"; then
        AC_MSG_ERROR(No 16 bit type found on this platform!)
fi
if test -z "$USIZE16"; then
        AC_MSG_ERROR(No unsigned 16 bit type found on this platform!)
fi
if test -z "$SIZE32"; then
        AC_MSG_ERROR(No 32 bit type found on this platform!)
fi
if test -z "$USIZE32"; then
        AC_MSG_ERROR(No unsigned 32 bit type found on this platform!)
fi
if test -z "$SIZE64"; then
        AC_MSG_WARN(No 64 bit type found on this platform!)
fi

dnl Checks for library functions.
AC_FUNC_MEMCMP

dnl Make substitutions

AC_SUBST(LIBTOOL_DEPS)
AC_SUBST(SIZE16)
AC_SUBST(USIZE16)
AC_SUBST(SIZE32)
AC_SUBST(USIZE32)
AC_SUBST(SIZE64)
AC_SUBST(OPT)
AC_SUBST(LIBS)
AC_SUBST(DEBUG)
AC_SUBST(CFLAGS)
AC_SUBST(PROFILE)

AC_OUTPUT([
Makefile
src/Makefile
doc/Makefile doc/libogg/Makefile
include/Makefile include/ogg/Makefile include/ogg/config_types.h
libogg.spec
ogg.pc
ogg-uninstalled.pc
])