cannam@140: # cannam@140: # PortAudioCpp V19 autoconf input file cannam@140: # Shamelessly ripped from the PortAudio one by Dominic Mazzoni cannam@140: # Ludwig Schwardt cannam@140: # cannam@140: cannam@140: # Require autoconf >= 2.13 cannam@140: AC_PREREQ(2.13) cannam@140: cannam@140: AC_INIT([PortAudioCpp], [12]) cannam@140: AC_CONFIG_SRCDIR([../../include/portaudiocpp/PortAudioCpp.hxx]) cannam@140: cannam@140: ###### Top-level directory of pacpp cannam@140: ###### This makes it easy to shuffle the build directories cannam@140: ###### Also edit AC_CONFIG_SRCDIR above (wouldn't accept this variable)! cannam@140: PACPP_ROOT="../.." cannam@140: cannam@140: ###### cannam@140: ###### SET THIS TO PORTAUDIO DIRECTORY cannam@140: ###### cannam@140: PORTAUDIO="$PACPP_ROOT/../portaudio" cannam@140: cannam@140: # Various other variables and flags cannam@140: cannam@140: PACPP_INC="$PACPP_ROOT/include" cannam@140: INCLUDES="-I$PACPP_INC -I$PORTAUDIO -I$PORTAUDIO/pa_common" cannam@140: CFLAGS="-g -O2 -Wall -ansi -pedantic $INCLUDES" cannam@140: CXXFLAGS="$CFLAGS" cannam@140: PALIBDIR="$PORTAUDIO/lib" cannam@140: cannam@140: # Checks for programs cannam@140: cannam@140: AC_PROG_CC cannam@140: AC_PROG_CXX cannam@140: AC_PROG_LN_S cannam@140: AC_PROG_RANLIB cannam@140: AC_PROG_INSTALL cannam@140: AC_PATH_PROG(AR, ar, no) cannam@140: if [[ $AR = "no" ]] ; then cannam@140: AC_MSG_ERROR("Could not find ar - needed to create a library"); cannam@140: fi cannam@140: cannam@140: # This must be one of the first tests we do or it will fail... cannam@140: AC_C_BIGENDIAN cannam@140: cannam@140: # Transfer these variables to the Makefile cannam@140: AC_SUBST(PACPP_ROOT) cannam@140: AC_SUBST(PORTAUDIO) cannam@140: AC_SUBST(PADLL) cannam@140: AC_SUBST(PACPP_DLL) cannam@140: AC_SUBST(PACPP_INC) cannam@140: AC_SUBST(SHARED_FLAGS) cannam@140: AC_SUBST(DLL_LIBS) cannam@140: AC_SUBST(CXXFLAGS) cannam@140: cannam@140: ##################### CHECK FOR INSTALLED PACKAGES ############################ cannam@140: cannam@140: # checks for various host APIs and arguments to configure that cannam@140: # turn them on or off cannam@140: cannam@140: AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no) cannam@140: cannam@140: # Determine the host description for the subsequent test. cannam@140: # PKG_CHECK_MODULES seems to check and set the host variable also, but cannam@140: # that then requires pkg-config availability which is not standard on cannam@140: # MinGW systems and can be a pain to install. cannam@140: AC_CANONICAL_HOST cannam@140: cannam@140: PKG_CHECK_MODULES(JACK, jack, have_jack=yes, have_jack=no) cannam@140: cannam@140: AC_ARG_WITH(alsa, cannam@140: [ --with-alsa (default=auto)], cannam@140: with_alsa=$withval, with_alsa="yes") cannam@140: cannam@140: AC_ARG_WITH(jack, cannam@140: [ --with-jack (default=auto)], cannam@140: with_jack=$withval, with_jack="yes") cannam@140: cannam@140: AC_ARG_WITH(oss, cannam@140: [ --with-oss (default=yes)], cannam@140: with_oss=$withval, with_oss="yes") cannam@140: cannam@140: AC_ARG_WITH(host_os, cannam@140: [ --with-host_os (no default)], cannam@140: host_os=$withval) cannam@140: cannam@140: AC_ARG_WITH(winapi, cannam@140: [ --with-winapi ((wmme/directx/asio) default=wmme)], cannam@140: with_winapi=$withval, with_winapi="wmme") cannam@140: cannam@140: # Mac API added for ASIO, can have other api's listed cannam@140: AC_ARG_WITH(macapi, cannam@140: [ --with-macapi (asio) default=asio)], cannam@140: with_macapi=$withval, with_macapi="asio") cannam@140: cannam@140: AC_ARG_WITH(asiodir, cannam@140: [ --with-asiodir (default=/usr/local/asiosdk2)], cannam@140: with_asiodir=$withval, with_asiodir="/usr/local/asiosdk2") cannam@140: cannam@140: AC_ARG_WITH(dxdir, cannam@140: [ --with-dxdir (default=/usr/local/dx7sdk)], cannam@140: with_dxdir=$withval, with_dxdir="/usr/local/dx7sdk") cannam@140: cannam@140: cannam@140: ##################### HOST-SPECIFIC LIBRARY SETTINGS ########################## cannam@140: cannam@140: case "${host_os}" in cannam@140: darwin* ) cannam@140: # Mac OS X configuration cannam@140: cannam@140: LIBS="-framework AudioUnit -framework AudioToolbox -framework CoreAudio"; cannam@140: PADLL="libportaudio.dylib"; cannam@140: PACPP_DLL="libportaudiocpp.dylib"; cannam@140: SHARED_FLAGS="-framework AudioUnit -framework AudioToolbox"; cannam@140: SHARED_FLAGS="$SHARED_FLAGS -framework CoreAudio -dynamiclib"; cannam@140: if [[ $with_macapi = "asio" ]] ; then cannam@140: if [[ $with_asiodir ]] ; then cannam@140: ASIODIR="$with_asiodir"; cannam@140: else cannam@140: ASIODIR="/usr/local/asiosdk2"; cannam@140: fi cannam@140: echo "ASIODIR: $ASIODIR"; cannam@140: fi cannam@140: ;; cannam@140: cannam@140: mingw* ) cannam@140: # MingW configuration cannam@140: cannam@140: echo "WINAPI: $with_winapi" cannam@140: if [[ $with_winapi = "directx" ]] ; then cannam@140: if [[ $with_dxdir ]] ; then cannam@140: DXDIR="$with_dxdir"; cannam@140: else cannam@140: DXDIR="/usr/local/dx7sdk"; cannam@140: fi cannam@140: echo "DXDIR: $DXDIR" cannam@140: LIBS="-L$PALIBDIR -lportaudio" cannam@140: LIBS="$LIBS -lwinmm -lm -ldsound -lole32"; cannam@140: PADLL="portaudio.dll"; cannam@140: PACPP_DLL="portaudiocpp.dll"; cannam@140: SHARED_FLAGS="-shared -mthreads"; cannam@140: DLL_LIBS="-lwinmm -lm -L./dx7sdk/lib -ldsound -lole32"; cannam@140: CFLAGS="$CFLAGS -DPA_NO_WMME -DPA_NO_ASIO"; cannam@140: CXXFLAGS="$CFLAGS" cannam@140: elif [[ $with_winapi = "asio" ]] ; then cannam@140: if [[ $with_asiodir ]] ; then cannam@140: ASIODIR="$with_asiodir"; cannam@140: else cannam@140: ASIODIR="/usr/local/asiosdk2"; cannam@140: fi cannam@140: echo "ASIODIR: $ASIODIR" cannam@140: cannam@140: LIBS="-L$PALIBDIR -lportaudio" cannam@140: LIBS="$LIBS -lwinmm -lm -lstdc++ -lole32 -luuid"; cannam@140: PADLL="portaudio.dll"; cannam@140: PACPP_DLL="portaudiocpp.dll"; cannam@140: SHARED_FLAGS="-shared -mthreads"; cannam@140: DLL_LIBS="-lwinmm -lm -lstdc++ -lole32 -luuid"; cannam@140: CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -DPA_NO_WMME -DPA_NO_DS -DWINDOWS"; cannam@140: CXXFLAGS="$CFLAGS"; cannam@140: else # WMME default cannam@140: LIBS="-L$PALIBDIR -lportaudio" cannam@140: LIBS="$LIBS -lwinmm -lm -lstdc++ -lole32 -luuid"; cannam@140: PADLL="portaudio.dll"; cannam@140: PACPP_DLL="portaudiocpp.dll"; cannam@140: SHARED_FLAGS="-shared -mthreads"; cannam@140: DLL_LIBS="-lwinmm"; cannam@140: CFLAGS="$CFLAGS -DPA_NO_DS -DPA_NO_ASIO"; cannam@140: CXXFLAGS="$CFLAGS"; cannam@140: fi cannam@140: ;; cannam@140: cannam@140: cygwin* ) cannam@140: # Cygwin configuration cannam@140: cannam@140: LIBS="-L$PALIBDIR -lportaudio" cannam@140: LIBS="$LIBS -lwinmm -lm"; cannam@140: PADLL="portaudio.dll"; cannam@140: PACPP_DLL="portaudiocpp.dll"; cannam@140: SHARED_FLAGS="-shared -mthreads"; cannam@140: DLL_LIBS="-lwinmm"; cannam@140: ;; cannam@140: cannam@140: *) cannam@140: # Unix OSS configuration cannam@140: cannam@140: AC_CHECK_LIB(pthread, pthread_create, cannam@140: , cannam@140: AC_MSG_ERROR([libpthread not found!])) cannam@140: cannam@140: LIBS="$LIBS -L$PALIBDIR -lportaudio" cannam@140: cannam@140: if [[ $have_jack = "yes" ] && [ $with_jack != "no" ]] ; then cannam@140: LIBS="$LIBS $JACK_LIBS" cannam@140: CFLAGS="$CFLAGS $JACK_CFLAGS" cannam@140: AC_DEFINE(PA_USE_JACK) cannam@140: fi cannam@140: cannam@140: if [[ $have_alsa = "yes" ] && [ $with_alsa != "no" ]] ; then cannam@140: LIBS="$LIBS -lasound" cannam@140: AC_DEFINE(PA_USE_ALSA) cannam@140: fi cannam@140: cannam@140: if [[ $with_oss != "no" ]] ; then cannam@140: AC_DEFINE(PA_USE_OSS) cannam@140: fi cannam@140: LIBS="$LIBS -lm -lpthread"; cannam@140: PADLL="libportaudio.so"; cannam@140: PACPP_DLL="libportaudiocpp.so"; cannam@140: SHARED_FLAGS="-shared"; cannam@140: esac cannam@140: cannam@140: AC_CONFIG_FILES([Makefile]) cannam@140: AC_OUTPUT