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