view configure.in @ 562:7e08477b0fc1

MP3 decoder upgrade work. Ripped out SMPEG and mpglib support, replaced it with "mpg123.c" and libmpg123. libmpg123 is a much better version of mpglib, so it should solve all the problems about MP3's not seeking, or most modern MP3's not playing at all, etc. Since you no longer have to make a tradeoff with SMPEG for features, and SMPEG is basically rotting, I removed it from the project. There is still work to be done with libmpg123...there are MMX, 3DNow, SSE, Altivec, etc decoders which we don't have enabled at the moment, and the build system could use some work to make this compile more cleanly, etc. Still: huge win.
author Ryan C. Gordon <icculus@icculus.org>
date Fri, 30 Jan 2009 02:44:47 -0500
parents f2985e08589c
children cddbe182ae5e
line wrap: on
line source

# Process this file with autoconf to produce a configure script.
AC_INIT(SDL_sound.c)

dnl ---------------------------------------------------------------------
dnl System/version info
dnl ---------------------------------------------------------------------

# Making releases:
#   MICRO_VERSION += 1;
#   INTERFACE_AGE += 1;
#   BINARY_AGE += 1;
# if any functions have been added, set INTERFACE_AGE to 0.
# if backwards compatibility has been broken,
# set BINARY_AGE and INTERFACE_AGE to 0.

MAJOR_VERSION=1
MINOR_VERSION=0
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION

AC_SUBST(MAJOR_VERSION)
AC_SUBST(MINOR_VERSION)
AC_SUBST(MICRO_VERSION)
AC_SUBST(INTERFACE_AGE)
AC_SUBST(BINARY_AGE)
AC_SUBST(VERSION)

# libtool versioning
LT_RELEASE=$MAJOR_VERSION.$MINOR_VERSION
LT_CURRENT=`expr $MICRO_VERSION - $INTERFACE_AGE`
LT_REVISION=$INTERFACE_AGE
LT_AGE=`expr $BINARY_AGE - $INTERFACE_AGE`

AC_SUBST(LT_RELEASE)
AC_SUBST(LT_CURRENT)
AC_SUBST(LT_REVISION)
AC_SUBST(LT_AGE)

dnl Detect the canonical host and target build environment
AC_CANONICAL_HOST
AC_CANONICAL_TARGET

dnl Setup for automake
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(SDL_sound, $VERSION)


dnl ---------------------------------------------------------------------
dnl Compilers and other tools
dnl ---------------------------------------------------------------------

AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AM_PROG_AS
AM_PROG_LIBTOOL


dnl ---------------------------------------------------------------------
dnl Debug mode?
dnl ---------------------------------------------------------------------

AC_ARG_ENABLE(debug,
[  --enable-debug             enable debug mode [default=no]],
              , enable_debug=no)
if test x$enable_debug = xyes; then
  if test x$ac_cv_prog_cc_g = xyes; then
    SDLSOUNDCFLAGS="$SDLSOUNDCFLAGS -g -O0"
  else
    SDLSOUNDCFLAGS="$SDLSOUNDCFLAGS -O0"
  fi
  SDLSOUNDCFLAGS="$SDLSOUNDCFLAGS -Werror"
  AC_DEFINE(DEBUG, 1, [Define for debug builds.])
  AC_DEFINE(DEBUG_CHATTER, 1, [Define for debug build chattering.])
else
  AC_DEFINE(NDEBUG, 1, [Define to disable debugging.])
fi

dnl ---------------------------------------------------------------------
dnl Have GCC's -fvisibility option?
dnl ---------------------------------------------------------------------
AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
have_gcc_fvisibility=no
visibility_CFLAGS="-fvisibility=hidden"
save_CFLAGS="$CFLAGS"
CFLAGS="$save_CFLAGS $visibility_CFLAGS"
AC_TRY_COMPILE([
int placeholder = 1;
],[
],[
have_gcc_fvisibility=yes
])
AC_MSG_RESULT($have_gcc_fvisibility)
CFLAGS="$save_CFLAGS"

if test x$have_gcc_fvisibility = xyes; then
    SDLSOUNDCFLAGS="$SDLSOUNDCFLAGS $visibility_CFLAGS"
fi


dnl ---------------------------------------------------------------------
dnl Checks for libraries.
dnl ---------------------------------------------------------------------

dnl Check for SDL
SDL_VERSION=1.2.0
AM_PATH_SDL($SDL_VERSION,
            :,
 	     AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
)
SDLSOUNDCFLAGS="$SDLSOUNDCFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"


dnl Check for voc decoder inclusion...
AC_ARG_ENABLE(voc,
[  --enable-voc               enable VOC decoding [default=yes]],
              , enable_voc=yes)
if test x$enable_voc = xyes; then
    AC_DEFINE(SOUND_SUPPORTS_VOC, 1, [Define if VOC support is desired.])
fi


dnl Check for wav decoder inclusion...
AC_ARG_ENABLE(wav,
[  --enable-wav               enable WAV decoding [default=yes]],
              , enable_wav=yes)
if test x$enable_wav = xyes; then
    AC_DEFINE(SOUND_SUPPORTS_WAV, 1, [Define if WAV support is desired.])
fi


dnl Check for raw decoder inclusion...
AC_ARG_ENABLE(raw,
[  --enable-raw               enable raw audio "decoding" [default=yes]],
              , enable_raw=yes)
if test x$enable_raw = xyes; then
    AC_DEFINE(SOUND_SUPPORTS_RAW, 1, [Define if RAW support is desired.])
fi


dnl Check for aiff decoder inclusion...
AC_ARG_ENABLE(aiff,
[  --enable-aiff              enable AIFF decoding [default=yes]],
              , enable_aiff=yes)
if test x$enable_aiff = xyes; then
    AC_DEFINE(SOUND_SUPPORTS_AIFF, 1, [Define if AIFF support is desired.])
fi

dnl Check for au decoder inclusion
AC_ARG_ENABLE(au,
[  --enable-au                enable AU decoding [default=yes]],
              , enable_au=yes)
if test x$enable_au = xyes; then
    AC_DEFINE(SOUND_SUPPORTS_AU, 1, [Define if AU support is desired.])
fi

dnl Check for shn decoder inclusion...
AC_ARG_ENABLE(shn,
[  --enable-shn               enable SHN decoding [default=yes]],
              , enable_shn=yes)
if test x$enable_shn = xyes; then
    AC_DEFINE(SOUND_SUPPORTS_SHN, 1, [Define if SHN support is desired.])
fi

dnl Check for the MIDI decoder...
AC_ARG_ENABLE(midi,
[  --enable-midi              enable software MIDI music [default=yes]],
              , enable_midi=yes)
if test x$enable_midi = xyes; then
  AC_DEFINE(SOUND_SUPPORTS_MIDI, 1, [Define if MIDI support is desired.])
fi

dnl Check for the MP3 decoder...
AC_ARG_ENABLE(mpg123,
[  --enable-mpg123            enable MP3 decoding [default=yes]],
              , enable_mpg123=yes)
if test x$enable_mpg123 = xyes; then
  AC_DEFINE(SOUND_SUPPORTS_MPG123, 1, [Define if MPG123 support is desired.])
fi

dnl Check for libmikmod
AC_ARG_ENABLE(mikmod,
[  --enable-mikmod            enable MOD decoding via mikmod [default=yes]],
              , enable_mikmod=yes)
if test x$enable_mikmod = xyes; then
  AC_CHECK_HEADER(mikmod.h, have_mikmod_hdr=yes)
  AC_CHECK_LIB(mikmod, MikMod_RegisterDriver, have_mikmod_lib=yes)
  if test x$have_mikmod_hdr = xyes -a x$have_mikmod_lib = xyes; then
    LIBS="$LIBS -lmikmod"
    AC_DEFINE(SOUND_SUPPORTS_MIKMOD, 1, [Define if MIKMOD support is desired.])
  fi
fi

dnl Check for libmodplug
AC_ARG_ENABLE(modplug,
[  --enable-modplug           enable MOD decoding via modplug [default=yes]],
              , enable_modplug=yes)
if test x$enable_modplug = xyes; then
  have_modplug_hdr=no
  AC_CHECK_HEADER(modplug.h, have_modplug_hdr=yes)
  if test x$have_modplug_hdr = xno; then
    AC_CHECK_HEADER(libmodplug/modplug.h, have_modplug_hdr=yes)
    if test x$have_modplug_hdr = xyes; then
      have_modplug_hdr=yes
      AC_DEFINE(SOUND_MODPLUG_IN_OWN_PATH, 1, [Define if modplug header is in own directory.])
    fi
  fi

  AC_CHECK_LIB(modplug, ModPlug_Load, have_modplug_lib=yes)
  if test x$have_modplug_hdr = xyes -a x$have_modplug_lib = xyes; then
    LIBS="$LIBS -lmodplug"
    AC_DEFINE(SOUND_SUPPORTS_MODPLUG, 1, [Define if MODPLUG support is desired.])
  fi
fi

AC_CHECK_HEADER(ogg/ogg.h, have_ogg_hdr=yes)
AC_CHECK_LIB(ogg, ogg_sync_init, have_ogg_lib=yes)
have_ogg=no
if test x$have_ogg_hdr = xyes -a x$have_ogg_lib = xyes; then
  have_ogg=yes
fi

dnl !!! FIXME: should be --enable-vorbis.
dnl Check for Ogg Vorbis
AC_ARG_ENABLE(ogg,
[  --enable-ogg               enable OGG decoding via libvorbis [default=yes]],
              , enable_ogg=yes)
if test x$enable_ogg = xyes; then
  AC_CHECK_HEADER(vorbis/codec.h, have_vorbis_hdr=yes)
  AC_CHECK_LIB(vorbis, vorbis_info_init, have_vorbis_lib=yes)
  AC_CHECK_HEADER(vorbis/vorbisfile.h, have_vorbisfile_hdr=yes)
  AC_CHECK_LIB(vorbisfile, ov_open_callbacks, have_vorbisfile_lib=yes)
  have_vorbis=no
  if test x$have_ogg = xyes; then
    if test x$have_vorbis_hdr = xyes -a x$have_vorbis_lib = xyes; then
      if test x$have_vorbisfile_hdr = xyes -a x$have_vorbisfile_lib = xyes; then
        have_vorbis=yes
      fi
    fi
  fi

  if test x$have_vorbis = xyes; then
    LIBS="$LIBS -logg -lvorbis -lvorbisfile"
    AC_DEFINE(SOUND_SUPPORTS_OGG, 1, [Define if OGG support is desired.])
  fi
fi


dnl Note that we intentionally look for a symbol in FLAC 1.0.4, since the
dnl  FLAC developers tend to break their API with every release, so we're
dnl  checking for the latest-and-greatest here so we don't have to support
dnl  obsolete versions.
dnl Starting with FLAC 1.1.3:
dnl   libFLAC supports Ogg FLAC (no more libOggFLAC) so we also need -logg
dnl   the libFLAC .so version is also #defined in FLAC/export.h

dnl Hooray for shitty autoconf bugs!
x="C__stream_decoder_process_single"
flcsym="FLA$x"
dnl Check for libFLAC
AC_ARG_ENABLE(flac,
[  --enable-flac              enable FLAC decoding via libFLAC [default=yes]],
              , enable_flac=yes)
if test x$enable_flac = xyes; then
  AC_CHECK_HEADER(FLAC/stream_decoder.h, have_flac_hdr=yes)
  AC_CHECK_LIB(FLAC, $flcsym, have_flac_lib=yes)
  if test x$have_ogg = xyes; then
    if test x$have_flac_hdr = xyes -a x$have_flac_lib = xyes; then
      LIBS="$LIBS -lFLAC -logg"
      AC_DEFINE(SOUND_SUPPORTS_FLAC, 1, [Define if FLAC support is desired.])
    fi
  fi
fi


dnl Check for speex
AC_ARG_ENABLE(speex,
[  --enable-speex             enable SPX decoding via libspeex [default=yes]],
              , enable_speex=yes)
if test x$enable_speex = xyes; then
  AC_CHECK_HEADER(ogg/ogg.h, have_ogg_hdr=yes)
  AC_CHECK_LIB(ogg, ogg_sync_init, have_ogg_lib=yes)
  AC_CHECK_HEADER(speex/speex.h, have_speex_hdr=yes)
  AC_CHECK_LIB(speex, speex_bits_init, have_speex_lib=yes)
  if test "x$have_ogg_hdr" = "xyes" -a "x$have_ogg_lib" = "xyes" -a "x$have_speex_hdr" = "xyes" -a "x$have_speex_lib" = "xyes"; then
    LIBS="$LIBS -logg -lspeex"
    AC_DEFINE(SOUND_SUPPORTS_SPEEX, 1, [Define if SPEEX support is desired.])
  fi
fi


dnl Check for PhysicsFS http://icculus.org/physfs/
AC_ARG_ENABLE(physfs,
[  --enable-physfs            enable PhysicsFS in playsound [default=yes]],
              , enable_physfs=yes)
if test x$enable_physfs = xyes; then
  AC_CHECK_HEADER(physfs.h, have_physfs_hdr=yes)
  AC_CHECK_LIB(physfs, PHYSFS_init, have_physfs_lib=yes)
  if test x$have_physfs_hdr = xyes -a x$have_physfs_lib = xyes; then
    enable_physfs="yes"
  else
    enable_physfs="no"
  fi
fi


# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h string.h signal.h assert.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T

# Checks for library functions.

# This is only in the bleeding edge autoconf distro...
#AC_FUNC_MALLOC


AC_FUNC_MEMCMP
AC_CHECK_FUNCS([memset strrchr setbuf])

CFLAGS="$SDLSOUNDCFLAGS $CFLAGS -D_REENTRANT -D_THREAD_SAFE"

dnl Add Makefile conditionals
AM_CONDITIONAL(USE_TIMIDITY, test x$enable_midi = xyes)
AM_CONDITIONAL(USE_LIBMPG123, test x$enable_mpg123 = xyes)
AM_CONDITIONAL(USE_PHYSICSFS, test x$enable_physfs = xyes)

AC_OUTPUT([
Makefile
decoders/Makefile
decoders/timidity/Makefile
decoders/libmpg123/Makefile
playsound/Makefile
])