OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [first/] [mp3/] [sw/] [mad-xess/] [libmad/] [configure.in] - Rev 1780

Go to most recent revision | Compare with Previous | Blame | View Log

dnl -*- m4 -*-
dnl
dnl mad - MPEG audio decoder
dnl Copyright (C) 2000-2001 Robert Leslie
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.in,v 1.1.1.1 2001-11-04 19:37:38 lampret Exp $])dnl

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

AC_INIT(decoder.h)
AM_INIT_AUTOMAKE(libmad, 0.13.0b)

AM_CONFIG_HEADER(config.h)

dnl System type.

AC_CANONICAL_HOST

dnl Checks for programs.

AC_PROG_MAKE_SET
AC_CHECK_TOOL(CC, cc, :)
AC_PROG_INSTALL
AC_CHECK_TOOL(RANLIB, ranlib, :)

dnl Compiler options.

AC_PROG_GCC_TRADITIONAL

arch=""
debug=""
optimize=""
profile=""

set -- $CFLAGS
CFLAGS="-Wall"

while test $# -gt 0
do
    case "$1" in
        -Wall)
            shift
            ;;
        -g)
            debug="-g"
            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

case "$host" in
    or32*)            AC_DEFINE(EMBED) ;;
esac

if test "$GCC" = yes
then
    if test -z "$arch"
    then
        case "$host" in
            i386-*)           ;;
            i?86-*)           arch="-m486" ;;
            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" ;;
            or32*)            arch="-mhard-div -nostdlib" ;;
        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*-*)
                    # this may provoke bugs in gcc 2.95.2
                    optimize="$optimize -fstrength-reduce"
                    #
                    # this may actually be slower but it
                    # triggers bugs if not included
                    optimize="$optimize -finline-functions"
                    ;;
                mips*-*)
                    optimize="$optimize -fstrength-reduce"
                    optimize="$optimize -finline-functions"
                    ;;
                i?86-*)
                    optimize="$optimize -fstrength-reduce"
                    ;;
                *)
                    # 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) ;;
    mips*-luxsonor-*) AC_DEFINE(HAVE_MADD_ASM)   ;;
esac

dnl Checks for header files.

AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(limits.h unistd.h)

dnl Checks for typedefs, structures, and compiler characteristics.

AC_C_CONST
AC_C_INLINE
AC_TYPE_PID_T

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

dnl Other options.

AC_SUBST(FPM)
AC_SUBST(ASO)
AC_SUBST(ASO_OBJS)

dnl handle --enable and --disable options

AC_MSG_CHECKING(whether to optimize for speed or for accuracy)

AC_ARG_ENABLE(speed,
    [  --enable-speed          optimize for speed over accuracy], [
    case "$enableval" in
        yes)
            optimize_for="speed"
            AC_DEFINE(OPT_SPEED)
            ;;
    esac
])

AC_ARG_ENABLE(accuracy,
    [  --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)
            ;;
    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,
    [  --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"   ;;
        *)
            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"    ;;
        or32*)      FPM="DEFAULT";;
        # 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,
    [  --enable-sso            use subband synthesis optimization], [
    case "$enableval" in
        yes) AC_DEFINE(OPT_SSO) ;;
    esac
])

AC_ARG_ENABLE(aso,
    [  --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,
    [  --enable-strict-iso     use strict ISO/IEC interpretations], [
    case "$enableval" in
        yes)
            AC_DEFINE(OPT_STRICT)
            interpretation="strict"
            ;;
    esac
])
AC_MSG_RESULT(${interpretation-best accepted practices})

AC_MSG_CHECKING(whether to enable profiling)
AC_ARG_ENABLE(profiling,
    [  --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,
    [  --enable-debugging      enable diagnostic debugging support
  --disable-debugging     do not enable debugging and use more optimization], [
    case "$enableval" in
        yes)
            AC_DEFINE(DEBUG)
            optimize=""
            ;;
        no)
            if test -n "$profile"
            then
    AC_MSG_ERROR(--enable-profiling and --disable-debugging are incompatible)
            fi

            AC_DEFINE(NDEBUG)
            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,
    [  --enable-experimental   enable experimental code], [
    case "$enableval" in
        yes) AC_DEFINE(EXPERIMENTAL) ;;
    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 CFLAGS="$CFLAGS -S"
LTLIBOBJS=`echo "$LIBOBJS" | sed -e 's/\.o/.lo/g'`
AC_SUBST(LTLIBOBJS)

AC_OUTPUT(Makefile)

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.