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