summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac433
1 files changed, 433 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..9b79399
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,433 @@
+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