434 lines
10 KiB
Plaintext
434 lines
10 KiB
Plaintext
|
dnl -*- m4 -*-
|
||
|
dnl
|
||
|
dnl libmad - MPEG audio decoder library
|
||
|
dnl Copyright (C) 2000-2004 Underbit Technologies, Inc.
|
||
|
dnl
|
||
|
dnl This program is free software; you can redistribute it and/or modify
|
||
|
dnl it under the terms of the GNU General Public License as published by
|
||
|
dnl the Free Software Foundation; either version 2 of the License, or
|
||
|
dnl (at your option) any later version.
|
||
|
dnl
|
||
|
dnl This program is distributed in the hope that it will be useful,
|
||
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
dnl GNU General Public License for more details.
|
||
|
dnl
|
||
|
dnl You should have received a copy of the GNU General Public License
|
||
|
dnl along with this program; if not, write to the Free Software
|
||
|
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
dnl
|
||
|
AC_REVISION([$Id: configure.ac,v 1.9 2004/01/23 09:41:32 rob Exp $])dnl
|
||
|
|
||
|
dnl Process this file with autoconf to produce a configure script.
|
||
|
|
||
|
AC_INIT([MPEG Audio Decoder], [0.15.1b], [support@underbit.com], [libmad])
|
||
|
AC_PREREQ(2.53)
|
||
|
|
||
|
AC_CONFIG_SRCDIR([decoder.h])
|
||
|
|
||
|
AM_INIT_AUTOMAKE
|
||
|
|
||
|
AM_CONFIG_HEADER([config.h])
|
||
|
|
||
|
dnl System type.
|
||
|
|
||
|
AC_CANONICAL_HOST
|
||
|
|
||
|
dnl Checks for programs.
|
||
|
|
||
|
AC_PROG_CC
|
||
|
AM_PROG_AS
|
||
|
|
||
|
if test "$GCC" = yes
|
||
|
then
|
||
|
case "$host" in
|
||
|
*-*-mingw*)
|
||
|
case "$build" in
|
||
|
*-*-cygwin*)
|
||
|
CPPFLAGS="$CPPFLAGS -mno-cygwin"
|
||
|
LDFLAGS="$LDFLAGS -mno-cygwin"
|
||
|
;;
|
||
|
esac
|
||
|
esac
|
||
|
|
||
|
dnl case "$host" in
|
||
|
dnl *-*-cygwin* | *-*-mingw*)
|
||
|
dnl LDFLAGS="$LDFLAGS -no-undefined -mdll"
|
||
|
dnl ;;
|
||
|
dnl esac
|
||
|
fi
|
||
|
|
||
|
dnl Support for libtool.
|
||
|
|
||
|
dnl AC_DISABLE_SHARED
|
||
|
dnl AC_LIBTOOL_WIN32_DLL
|
||
|
AC_PROG_LIBTOOL
|
||
|
|
||
|
AC_SUBST(LIBTOOL_DEPS)
|
||
|
|
||
|
dnl Compiler options.
|
||
|
|
||
|
arch=""
|
||
|
debug=""
|
||
|
optimize=""
|
||
|
profile=""
|
||
|
|
||
|
set -- $CFLAGS
|
||
|
CFLAGS=""
|
||
|
|
||
|
if test "$GCC" = yes
|
||
|
then
|
||
|
CFLAGS="-Wall"
|
||
|
fi
|
||
|
|
||
|
while test $# -gt 0
|
||
|
do
|
||
|
case "$1" in
|
||
|
-Wall)
|
||
|
if test "$GCC" = yes
|
||
|
then
|
||
|
:
|
||
|
else
|
||
|
CFLAGS="$CFLAGS $1"
|
||
|
fi
|
||
|
shift
|
||
|
;;
|
||
|
-g)
|
||
|
debug="-g"
|
||
|
shift
|
||
|
;;
|
||
|
-mno-cygwin)
|
||
|
shift
|
||
|
;;
|
||
|
-m*)
|
||
|
arch="$arch $1"
|
||
|
shift
|
||
|
;;
|
||
|
-O2)
|
||
|
optimize="-O"
|
||
|
shift
|
||
|
;;
|
||
|
-fomit-frame-pointer)
|
||
|
shift
|
||
|
;;
|
||
|
-O*|-f*)
|
||
|
optimize="$optimize $1"
|
||
|
shift
|
||
|
;;
|
||
|
*)
|
||
|
CFLAGS="$CFLAGS $1"
|
||
|
shift
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if test "$GCC" = yes
|
||
|
then
|
||
|
if test -z "$arch"
|
||
|
then
|
||
|
case "$host" in
|
||
|
i386-*) ;;
|
||
|
i?86-*) arch="-march=i486" ;;
|
||
|
arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;;
|
||
|
armv4*-*) arch="-march=armv4 -mtune=strongarm" ;;
|
||
|
powerpc-*) ;;
|
||
|
mips*-agenda-*) arch="-mcpu=vr4100" ;;
|
||
|
mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;;
|
||
|
esac
|
||
|
fi
|
||
|
|
||
|
case "$optimize" in
|
||
|
-O|"-O "*)
|
||
|
optimize="-O"
|
||
|
optimize="$optimize -fforce-mem"
|
||
|
optimize="$optimize -fforce-addr"
|
||
|
: #x optimize="$optimize -finline-functions"
|
||
|
: #- optimize="$optimize -fstrength-reduce"
|
||
|
optimize="$optimize -fthread-jumps"
|
||
|
optimize="$optimize -fcse-follow-jumps"
|
||
|
optimize="$optimize -fcse-skip-blocks"
|
||
|
: #x optimize="$optimize -frerun-cse-after-loop"
|
||
|
: #x optimize="$optimize -frerun-loop-opt"
|
||
|
: #x optimize="$optimize -fgcse"
|
||
|
optimize="$optimize -fexpensive-optimizations"
|
||
|
optimize="$optimize -fregmove"
|
||
|
: #* optimize="$optimize -fdelayed-branch"
|
||
|
: #x optimize="$optimize -fschedule-insns"
|
||
|
optimize="$optimize -fschedule-insns2"
|
||
|
: #? optimize="$optimize -ffunction-sections"
|
||
|
: #? optimize="$optimize -fcaller-saves"
|
||
|
: #> optimize="$optimize -funroll-loops"
|
||
|
: #> optimize="$optimize -funroll-all-loops"
|
||
|
: #x optimize="$optimize -fmove-all-movables"
|
||
|
: #x optimize="$optimize -freduce-all-givs"
|
||
|
: #? optimize="$optimize -fstrict-aliasing"
|
||
|
: #* optimize="$optimize -fstructure-noalias"
|
||
|
|
||
|
case "$host" in
|
||
|
arm*-*)
|
||
|
optimize="$optimize -fstrength-reduce"
|
||
|
;;
|
||
|
mips*-*)
|
||
|
optimize="$optimize -fstrength-reduce"
|
||
|
optimize="$optimize -finline-functions"
|
||
|
;;
|
||
|
i?86-*)
|
||
|
optimize="$optimize -fstrength-reduce"
|
||
|
;;
|
||
|
powerpc-apple-*)
|
||
|
# this triggers an internal compiler error with gcc2
|
||
|
: #optimize="$optimize -fstrength-reduce"
|
||
|
|
||
|
# this is really only beneficial with gcc3
|
||
|
: #optimize="$optimize -finline-functions"
|
||
|
;;
|
||
|
*)
|
||
|
# this sometimes provokes bugs in gcc 2.95.2
|
||
|
: #optimize="$optimize -fstrength-reduce"
|
||
|
;;
|
||
|
esac
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
|
||
|
case "$host" in
|
||
|
mips*-agenda-*)
|
||
|
AC_DEFINE(HAVE_MADD16_ASM, 1,
|
||
|
[Define if your MIPS CPU supports a 2-operand MADD16 instruction.])
|
||
|
;;
|
||
|
mips*-luxsonor-*)
|
||
|
AC_DEFINE(HAVE_MADD_ASM, 1,
|
||
|
[Define if your MIPS CPU supports a 2-operand MADD instruction.])
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
dnl Checks for header files.
|
||
|
|
||
|
AC_HEADER_STDC
|
||
|
AC_HEADER_SYS_WAIT
|
||
|
AC_CHECK_HEADERS(assert.h limits.h unistd.h sys/types.h fcntl.h errno.h)
|
||
|
|
||
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||
|
|
||
|
AC_C_CONST
|
||
|
AC_C_INLINE
|
||
|
AC_C_BIGENDIAN
|
||
|
AC_TYPE_PID_T
|
||
|
|
||
|
AC_CHECK_SIZEOF(int, 2)
|
||
|
AC_CHECK_SIZEOF(long, 4)
|
||
|
AC_CHECK_SIZEOF(long long, 8)
|
||
|
|
||
|
dnl Checks for library functions.
|
||
|
|
||
|
AC_CHECK_FUNCS(waitpid fcntl pipe fork)
|
||
|
|
||
|
dnl Other options.
|
||
|
|
||
|
AC_SUBST(FPM)
|
||
|
AC_SUBST(ASO)
|
||
|
AC_SUBST(ASO_OBJS)
|
||
|
|
||
|
dnl handle --enable and --disable options
|
||
|
|
||
|
AC_CACHE_SAVE
|
||
|
|
||
|
AC_MSG_CHECKING(whether to optimize for speed or for accuracy)
|
||
|
|
||
|
AC_ARG_ENABLE(speed, AC_HELP_STRING([--enable-speed],
|
||
|
[optimize for speed over accuracy]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes)
|
||
|
optimize_for="speed"
|
||
|
AC_DEFINE(OPT_SPEED, 1,
|
||
|
[Define to optimize for speed over accuracy.])
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
|
||
|
AC_ARG_ENABLE(accuracy, AC_HELP_STRING([--enable-accuracy],
|
||
|
[optimize for accuracy over speed]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes)
|
||
|
if test "$optimize_for" = "speed"
|
||
|
then
|
||
|
optimize_for="both"
|
||
|
else
|
||
|
optimize_for="accuracy"
|
||
|
fi
|
||
|
AC_DEFINE(OPT_ACCURACY, 1,
|
||
|
[Define to optimize for accuracy over speed.])
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
|
||
|
AC_MSG_RESULT(${optimize_for-default})
|
||
|
|
||
|
if test "$optimize_for" = "both"
|
||
|
then
|
||
|
AC_MSG_ERROR(cannot optimize for both speed and accuracy)
|
||
|
fi
|
||
|
|
||
|
AC_MSG_CHECKING(for architecture-specific fixed-point math routines)
|
||
|
AC_ARG_ENABLE(fpm, AC_HELP_STRING([--enable-fpm=ARCH],
|
||
|
[use ARCH-specific fixed-point math routines
|
||
|
(one of: intel, arm, mips, sparc, ppc, 64bit, default)]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes) ;;
|
||
|
no|default|approx) FPM="DEFAULT" ;;
|
||
|
intel|i?86) FPM="INTEL" ;;
|
||
|
arm) FPM="ARM" ;;
|
||
|
mips) FPM="MIPS" ;;
|
||
|
sparc) FPM="SPARC" ;;
|
||
|
ppc|powerpc) FPM="PPC" ;;
|
||
|
64bit) FPM="64BIT" ;;
|
||
|
float) FPM="FLOAT" ;;
|
||
|
*)
|
||
|
AC_MSG_RESULT(failed)
|
||
|
AC_MSG_ERROR([bad --enable-fpm option])
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
|
||
|
if test -z "$FPM" && test "$GCC" = yes
|
||
|
then
|
||
|
case "$host" in
|
||
|
i?86-*) FPM="INTEL" ;;
|
||
|
arm*-*) FPM="ARM" ;;
|
||
|
mips*-*) FPM="MIPS" ;;
|
||
|
sparc*-*) FPM="SPARC" ;;
|
||
|
powerpc*-*) FPM="PPC" ;;
|
||
|
# FIXME: need to test for 64-bit long long...
|
||
|
esac
|
||
|
fi
|
||
|
|
||
|
AC_MSG_RESULT(${FPM=DEFAULT})
|
||
|
|
||
|
if test "$FPM" = "DEFAULT"
|
||
|
then
|
||
|
AC_MSG_WARN([default fixed-point math will yield limited accuracy])
|
||
|
fi
|
||
|
|
||
|
FPM="-DFPM_$FPM"
|
||
|
|
||
|
AC_ARG_ENABLE(sso, AC_HELP_STRING([--enable-sso],
|
||
|
[use subband synthesis optimization]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes)
|
||
|
AC_DEFINE(OPT_SSO, 1,
|
||
|
[Define to enable a fast subband synthesis approximation optimization.])
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
|
||
|
AC_ARG_ENABLE(aso, AC_HELP_STRING([--disable-aso],
|
||
|
[disable architecture-specific optimizations]),
|
||
|
[], [enable_aso=yes])
|
||
|
|
||
|
if test "$enable_aso" = yes
|
||
|
then
|
||
|
case "$host" in
|
||
|
i?86-*)
|
||
|
: #ASO="$ASO -DASO_INTERLEAVE1"
|
||
|
ASO="$ASO -DASO_ZEROCHECK"
|
||
|
: #not yet #ASO="$ASO -DASO_SYNTH"
|
||
|
: #not yet #ASO_OBJS="synth_mmx.lo"
|
||
|
;;
|
||
|
arm*-*)
|
||
|
ASO="$ASO -DASO_INTERLEAVE1"
|
||
|
ASO="$ASO -DASO_IMDCT"
|
||
|
ASO_OBJS="imdct_l_arm.lo"
|
||
|
;;
|
||
|
mips*-*)
|
||
|
ASO="$ASO -DASO_INTERLEAVE2"
|
||
|
ASO="$ASO -DASO_ZEROCHECK"
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
|
||
|
AC_MSG_CHECKING(for ISO/IEC interpretation)
|
||
|
AC_ARG_ENABLE(strict-iso, AC_HELP_STRING([--enable-strict-iso],
|
||
|
[use strict ISO/IEC interpretations]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes)
|
||
|
AC_DEFINE(OPT_STRICT, 1,
|
||
|
[Define to influence a strict interpretation of the ISO/IEC standards,
|
||
|
even if this is in opposition with best accepted practices.])
|
||
|
interpretation="strict"
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
AC_MSG_RESULT(${interpretation-best accepted practices})
|
||
|
|
||
|
AC_MSG_CHECKING(whether to enable profiling)
|
||
|
AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling],
|
||
|
[generate profiling code]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes) profile="-pg" ;;
|
||
|
esac
|
||
|
])
|
||
|
AC_MSG_RESULT(${enable_profiling-no})
|
||
|
|
||
|
AC_MSG_CHECKING(whether to enable debugging)
|
||
|
AC_ARG_ENABLE(debugging, AC_HELP_STRING([--enable-debugging],
|
||
|
[enable diagnostic debugging support])
|
||
|
AC_HELP_STRING([--disable-debugging],
|
||
|
[do not enable debugging and use more optimization]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes)
|
||
|
AC_DEFINE(DEBUG, 1,
|
||
|
[Define to enable diagnostic debugging support.])
|
||
|
optimize=""
|
||
|
;;
|
||
|
no)
|
||
|
if test -n "$profile"
|
||
|
then
|
||
|
AC_MSG_ERROR(--enable-profiling and --disable-debugging are incompatible)
|
||
|
fi
|
||
|
|
||
|
AC_DEFINE(NDEBUG, 1,
|
||
|
[Define to disable debugging assertions.])
|
||
|
debug=""
|
||
|
if test "$GCC" = yes
|
||
|
then
|
||
|
optimize="$optimize -fomit-frame-pointer"
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
AC_MSG_RESULT(${enable_debugging-default})
|
||
|
|
||
|
AC_MSG_CHECKING(whether to enable experimental code)
|
||
|
AC_ARG_ENABLE(experimental, AC_HELP_STRING([--enable-experimental],
|
||
|
[enable experimental code]),
|
||
|
[
|
||
|
case "$enableval" in
|
||
|
yes)
|
||
|
AC_DEFINE(EXPERIMENTAL, 1,
|
||
|
[Define to enable experimental code.])
|
||
|
;;
|
||
|
esac
|
||
|
])
|
||
|
AC_MSG_RESULT(${enable_experimental-no})
|
||
|
|
||
|
dnl Create output files.
|
||
|
|
||
|
test -n "$arch" && CFLAGS="$CFLAGS $arch"
|
||
|
test -n "$debug" && CFLAGS="$CFLAGS $debug"
|
||
|
test -n "$optimize" && CFLAGS="$CFLAGS $optimize"
|
||
|
test -n "$profile" && CFLAGS="$CFLAGS $profile" LDFLAGS="$LDFLAGS $profile"
|
||
|
|
||
|
dnl LTLIBOBJS=`echo "$LIBOBJS" | sed -e 's/\.o/.lo/g'`
|
||
|
dnl AC_SUBST(LTLIBOBJS)
|
||
|
|
||
|
AC_CONFIG_FILES([Makefile msvc++/Makefile \
|
||
|
libmad.list])
|
||
|
AC_OUTPUT
|