view configure.in @ 96:757e6f99dcd7

Dan Stowell: Removed strange "zeroing" part of xtract_mfcc() which was zeroing a load of elements despite the fact that they're ignored by the DCT process called next, and never used for anything. This was writing to an assumed large result array (same size as number of FFT bins) despite the fact that only a small number of MFCCs (typically less than 50) are required, therefore either wasting memory or writing to memory it shouldn't do!
author Dan Stowell <danstowell@gmail.com>
date Wed, 03 Oct 2007 13:43:16 +0000
parents 35a3bb5c3ffd
children a159098a759e
line wrap: on
line source
AC_PREREQ(2.13)
# Increment for major API changes, release status changes
m4_define(libxtract_major_version, 0)
# Increment for feature additions and enhancements
m4_define(libxtract_minor_version, 4)
# Increment for fixes 
m4_define(libxtract_fix_version, 8)

m4_define(libxtract_version, libxtract_major_version.libxtract_minor_version.libxtract_fix_version)
		
PACKAGE=libxtract

AC_INIT(libxtract, libxtract_version, libxtract-devel@lists.sourceforge.net)
AC_DEFINE(LIBXTRACT_VERSION, libxtract_version, [LibXtract Version])
AM_INIT_AUTOMAKE($PACKAGE, $LIBXTRACT_VERSION)
AM_CONFIG_HEADER(config.h)
AC_PROG_CC
AC_PROG_LIBTOOL
AC_PROG_INSTALL
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
AC_ENABLE_STATIC(no)
AC_ENABLE_SHARED(yes)
AC_PROG_LIBTOOL
AC_CHECK_HEADERS([math.h, stdlib.h, stdio.h])
AC_CHECK_PROG([DOXYGEN], [doxygen], [doc], [])
AC_SUBST(DOXYGEN)

AC_ARG_ENABLE(fft, 
              [  --enable-fft    Turn fft-based fft processing on],
              [case "${enableval}" in
               yes) fft=true ;;
               no)  fft=false ;;
               *) AC_MSG_ERROR(bad value ${enableval} for --enable-fft) ;;
           esac],[fft=false])

AC_ARG_ENABLE(pd_example, 
              [  --enable-pd_example    Compile the Pure Data external example],
              [case "${enableval}" in
               yes) pd_example=true ;;
               no)  pd_example=false ;;
               *) AC_MSG_ERROR(bad value ${enableval} for --enable-pd_external) ;;
           esac],[pd_example=false])
	   
AC_ARG_ENABLE(simpletest, 
              [  --enable-simpletest    Compile the 'simpletest' example],
              [case "${enableval}" in
               yes) simpletest=true ;;
               no)  simpletest=false ;;
               *) AC_MSG_ERROR(bad value ${enableval} for --enable-simpletest) ;;
           esac],[simpletest=false])

# libtool version: current:revision:age
#
# If the library source code has changed at all since the last update, then
# increment revision (`c:r:a' becomes `c:r+1:a').
#
# If any interfaces have been added, removed, or changed since the last update,
# increment current, and set revision to 0.
#
# If any interfaces have been added since the last public release, then
# increment age.
#
# If any interfaces have been removed since the last public release, then set
# age to 0.
XTRACT_SO_VERSION=0:0:0

CFLAGS="$CFLAGS -pedantic -ansi -fno-strict-aliasing -Wall -std=c99 -I/usr/local/include"
LDFLAGS="$LDFLAGS -lm"

AC_ARG_WITH(pd_dir,
    [  --with-pd-dir=path   pd header path (default=/usr/local/include) ],
    [
    CFLAGS="$CFLAGS -I$withval"
    echo
    echo "pd dir is $withval"
    echo
    ])

AC_ARG_WITH(fftw3_dir,
    [  --with-fftw3-dir=path   fftw3 header path (default=/usr/local/include) ],
    [
    CFLAGS="$CFLAGS -I$withval"
    echo
    echo "fftw3 dir is $withval"
    echo
    ])

dnl set a specific java compiler
AC_ARG_WITH(javac,
	[  --with-javac=compiler  set a specific java compiler (determined automatically if not set) ],
	[JAVAC="$withval"
	echo
	echo "JAVAC is set to $withval"
	echo
	])

dnl If --enable-swig, make with java bindings
AC_ARG_WITH(java,
    [ --with-java If --enable-swig - make with java bindings (default=no) ],
    [with_java=true])

AM_CONDITIONAL(BUILD_JAVA, test "x${with_java}" = 'xtrue')

dnl If --enable-swig, make with java bindings
AC_ARG_WITH(python,
    [ --with-python If --enable-swig - make with python bindings (default=no) ],    [with_python=true])

AM_CONDITIONAL(BUILD_PYTHON, test "x${with_python}" = 'xtrue')


dnl are we building the simpletest example
if [[ "$simpletest" = "true" ]] ; then
    AC_DEFINE([BUILD_SIMPLETEST], [1], [Build the simpletest example])
fi

AM_CONDITIONAL(BUILD_SIMPLETEST, test "x${simpletest}" = 'xtrue')


dnl Are we building the PD examples?
if [[ "$pd_example" = "true" ]] ; then
    PD_SOURCES="xtract~.c"
    AC_DEFINE([BUILD_PD_EXAMPLE], [1], [Build the pd example])
    AC_CHECK_HEADER(m_pd.h, [have_pd_hdr=yes ], [
    have_pd_hdr=no
    echo
    echo "no m_pd.h header found.  try with option --with-pd-dir=/path/to/pd/src"
    echo
    exit
    ])
fi

AM_CONDITIONAL(BUILD_PD_EXAMPLE, test "x${pd_example}" = 'xtrue')


dnl Enable debugging (no)
AC_ARG_ENABLE(debug,
  [  --enable-debug[[=value]]   compile with debug [[default=no]]],
  with_debug="yes",
  with_debug="no")
if test "$with_debug" = "yes"
then
  AC_DEFINE(DEBUG,1,[Define to enable debug])
  CFLAGS="$CFLAGS -O0 -ggdb -g"
fi

AC_ARG_ENABLE(swig,
       [  --enable-swig    Generate swig bindings],
       [case "${enableval}" in
        yes) swig=true ;;
        no)  swig=false ;;
        *) AC_MSG_ERROR(bad value ${enableval} for --enable-swig) ;;
    esac],[swig=false])


dnl SWIG stuff
if [[ "$swig" = "true" ]] ; then
    AC_PROG_SWIG(1.3.21)
    AC_DEFINE([BUILD_SWIG], [1], [Build the swig bindings])
fi

if [[ "$with_java" = "true" ]] ; then
    if test "$JAVAC" = ""
    then
	AC_PROG_JAVAC
    fi
    if test "$JAVAC" = "javac"
    then
	AC_JNI_INCLUDE_DIR
    
	for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS
	do
	    CFLAGS="$CFLAGS -I$JNI_INCLUDE_DIR"
	done
    fi
   dnl AC_PROG_JAVAH
   dnl AC_PATH_PROG(JAVAH,javah)
fi

if [[ "$with_python" = "true" ]] ; then
    AM_PATH_PYTHON
    SWIG_PYTHON
fi


AM_CONDITIONAL(BUILD_SWIG, test "x${swig}" = 'xtrue')

dnl Are we building with fftw?
if [[ "$fft" = "true" ]] ; then
    LDFLAGS="$LDFLAGS -lfftw3f"
    AC_DEFINE([BUILD_FFT], [1], [Build the fft functions])
    AC_CHECK_HEADER(fftw3.h, [have_fftw3_hdr=yes ], [
    have_pd_hdr=no
    echo
    echo "no fftw3.h header found.  try with option --with-fftw3-dir=/path/to/fftw3/header"
    echo
    exit
    ])
fi

AM_CONDITIONAL(BUILD_FFT, test "x${fft}" = 'xtrue')


dnl ------------------------------------------
dnl ----  do some magic to gues the host opsys
dnl ----  taken from libvorbis configure.in
dnl ------------------------------------------
dnl AC_CANONICAL_HOST

dnl AC_SUBST(PD_CFLAGS,"$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1")
dnl AC_SUBST(PD_LDFLAGS,"$PD_LDFLAGS -shared")
dnl pd_ldflags="$PD_LDFLAGS -L/usr/local/lib -ldl"
if test -z "$GCC"; then
        case $host in
        *-*-irix*)
                dnl If we're on IRIX, we wanna use cc even if gcc
                dnl is there (unless the user has overriden us)...
                if test -z "$CC"; then
                        CC=cc
                fi
        ;;
        sparc-sun-solaris*)
                PD_CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
        ;;
        *)
                PD_CFLAGS="-O"
        ;;
        esac
else

        case $host in
        *86-*-linux*)
                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused"
        PD_LDFLAGS="$PD_LDFLAGS -shared -export_dynamic"
        dnl we could test for bad glibc here, but don't
        PD_SUFFIX=pd_linux
        ;;
        powerpc-*-linux*)
                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes"
        PD_LDFLAGS="$PD_LDFLAGS -shared"
        PD_SUFFIX=pd_linux
        ;;
        *-*-linux*)
                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -fPIC"
        PD_LDFLAGS="$PD_LDFLAGS -shared -export_dynamic"
        PD_SUFFIX=pd_linux
        ;;
        sparc-sun-*)
        echo "YOU HAVE A SPARC STATION, not setting any flags, not supported yet"
        ;;
        *86-*-darwin*)
                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes"
        PD_LDFLAGS="$PD_LDFLAGS -dynamiclib -mmacosx-version-min=10.3 -undefined dynamic_lookup -single_module"
        PD_SUFFIX=pd_darwin
	;;
	*-*-darwin*)
                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes"
        PD_LDFLAGS="$PD_LDFLAGS -bundle -arch ppc -undefined suppress -flat_namespace"
        PD_SUFFIX=pd_darwin
	;;

        *)
        dnl assume unix
                PD_CFLAGS="$PD_CFLAGS -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O1"
        PD_LDFLAGS="$PD_LDFLAGS -shared"
        PD_SUFFIX=pd_linux
        ;;
        esac
fi

PD_CFLAGS="$PD_CFLAGS -DPD"

AC_SUBST(PD_CFLAGS)
AC_SUBST(PD_LDFLAGS)
AC_SUBST(PD_SUFFIX)
AC_SUBST(PD_SOURCES)
		
AC_CONFIG_FILES([doc/documentation.doxygen
				libxtract.pc])

dnl There must be a better way to do this...
AC_OUTPUT(Makefile src/Makefile xtract/Makefile doc/Makefile examples/Makefile examples/puredata/Makefile examples/simpletest/Makefile swig/Makefile swig/python/Makefile swig/java/Makefile)

echo
echo "**************************************************************"
echo
echo "Summary:"
echo
dnl echo you are using the ${host} architecture 

if test "$fft" = "true"; then
  echo "fft:                   yes (using fftw3f)"
else
  echo "fft:                   no (not using fftw3, no fft functions)"
fi
if test "$simpletest" = "true"; then
  echo "simpletest example:	yes"
else
  echo "simpletest example:     no"
fi
if test "$pd_example" = "true"; then
  echo "PD external:             yes"
  echo 
  echo "The PD help files will be installed in:" 
  echo ${prefix}"/lib/doc/5.reference/xtract/" 
  echo "You must make sure that this is in your PD help path"
else
  echo "PD external:             no"
fi
if test "$swig" == "true"; then
  echo "SWIG bindings:                      yes"
else
  echo "SWIG bindings:                      no"
fi
if test "$with_java" == "true"; then
    echo "with JAVA module:		    yes"
else
    echo "with JAVA module:		    no"
fi
echo
echo "**************************************************************"
echo
echo Configuration completed successfully. Type \'make\' to build ${PACKAGE}
echo