diff options
Diffstat (limited to 'portaudio/configure.in')
-rw-r--r-- | portaudio/configure.in | 511 |
1 files changed, 511 insertions, 0 deletions
diff --git a/portaudio/configure.in b/portaudio/configure.in new file mode 100644 index 0000000..bb4ae96 --- /dev/null +++ b/portaudio/configure.in @@ -0,0 +1,511 @@ +dnl +dnl portaudio V19 configure.in script +dnl +dnl Dominic Mazzoni, Arve Knudsen, Stelios Bounanos +dnl + +dnl Require autoconf >= 2.13 +AC_PREREQ(2.13) + +dnl Init autoconf and make sure configure is being called +dnl from the right directory +AC_INIT([include/portaudio.h]) + +dnl This is is for testing compilation on Mac OS +PAMAC_TEST_PROGRAM=" + /* cdefs.h checks for supported architectures. */ + #include <sys/cdefs.h> + int main() { + return 0; + } +" + +dnl Define build, build_cpu, build_vendor, build_os +AC_CANONICAL_BUILD +dnl Define host, host_cpu, host_vendor, host_os +AC_CANONICAL_HOST +dnl Define target, target_cpu, target_vendor, target_os +AC_CANONICAL_TARGET + +dnl Specify options + +AC_ARG_WITH(alsa, + AS_HELP_STRING([--with-alsa], [Enable support for ALSA @<:@autodetect@:>@]), + [with_alsa=$withval]) + +AC_ARG_WITH(jack, + AS_HELP_STRING([--with-jack], [Enable support for JACK @<:@autodetect@:>@]), + [with_jack=$withval]) + +AC_ARG_WITH(oss, + AS_HELP_STRING([--with-oss], [Enable support for OSS @<:@autodetect@:>@]), + [with_oss=$withval]) + +AC_ARG_WITH(asihpi, + AS_HELP_STRING([--with-asihpi], [Enable support for ASIHPI @<:@autodetect@:>@]), + [with_asihpi=$withval]) + +AC_ARG_WITH(winapi, + AS_HELP_STRING([--with-winapi], + [Select Windows API support (@<:@wmme|directx|asio|wasapi|wdmks@:>@@<:@,...@:>@) @<:@wmme@:>@]), + [with_winapi=$withval], [with_winapi="wmme"]) +case "$target_os" in *mingw* | *cygwin*) + with_wmme=no + with_directx=no + with_asio=no + with_wasapi=no + with_wdmks=no + for api in $(echo $with_winapi | sed 's/,/ /g'); do + case "$api" in + wmme|directx|asio|wasapi|wdmks) + eval with_$api=yes + ;; + *) + AC_MSG_ERROR([unknown Windows API \"$api\" (do you need --help?)]) + ;; + esac + done + ;; +esac + +AC_ARG_WITH(asiodir, + AS_HELP_STRING([--with-asiodir], [ASIO directory @<:@/usr/local/asiosdk2@:>@]), + with_asiodir=$withval, with_asiodir="/usr/local/asiosdk2") + +AC_ARG_WITH(dxdir, + AS_HELP_STRING([--with-dxdir], [DirectX directory @<:@/usr/local/dx7sdk@:>@]), + with_dxdir=$withval, with_dxdir="/usr/local/dx7sdk") + +debug_output=no +AC_ARG_ENABLE(debug-output, + AS_HELP_STRING([--enable-debug-output], [Enable debug output @<:@no@:>@]), + [if test "x$enableval" != "xno" ; then + AC_DEFINE(PA_ENABLE_DEBUG_OUTPUT,,[Enable debugging messages]) + debug_output=yes + fi + ]) + +AC_ARG_ENABLE(cxx, + AS_HELP_STRING([--enable-cxx], [Enable C++ bindings @<:@no@:>@]), + enable_cxx=$enableval, enable_cxx="no") + +AC_ARG_ENABLE(mac-debug, + AS_HELP_STRING([--enable-mac-debug], [Enable Mac debug @<:@no@:>@]), + enable_mac_debug=$enableval, enable_mac_debug="no") + +AC_ARG_ENABLE(mac-universal, + AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries @<:@yes@:>@]), + enable_mac_universal=$enableval, enable_mac_universal="yes") + +dnl Continue to accept --host_os for compatibility but do not document +dnl it (the correct way to change host_os is with --host=...). Moved +dnl here because the empty help string generates a blank line which we +dnl can use to separate PA options from libtool options. +AC_ARG_WITH(host_os, [], host_os=$withval) + +dnl Checks for programs. + +AC_PROG_CC +dnl ASIO and CXX bindings need a C++ compiler +if [[ "$with_asio" = "yes" ] || [ "$enable_cxx" = "yes" ]] ; then + AC_PROG_CXX +fi +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PATH_PROG(AR, ar, no) +if [[ $AR = "no" ]] ; then + AC_MSG_ERROR("Could not find ar - needed to create a library") +fi + +dnl This must be one of the first tests we do or it will fail... +AC_C_BIGENDIAN + +dnl checks for various host APIs and arguments to configure that +dnl turn them on or off + +have_alsa=no +if test "x$with_alsa" != "xno"; then + AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes, have_alsa=no) +fi +have_asihpi=no +if test "x$with_asihpi" != "xno"; then + AC_CHECK_LIB(hpi, HPI_SubSysCreate, have_asihpi=yes, have_asihpi=no, -lm) +fi +have_libossaudio=no +have_oss=no +if test "x$with_oss" != "xno"; then + AC_CHECK_HEADERS([sys/soundcard.h linux/soundcard.h machine/soundcard.h], [have_oss=yes]) + if test "x$have_oss" = "xyes"; then + AC_CHECK_LIB(ossaudio, _oss_ioctl, have_libossaudio=yes, have_libossaudio=no) + fi +fi +have_jack=no +if test "x$with_jack" != "xno"; then + PKG_CHECK_MODULES(JACK, jack, have_jack=yes, have_jack=no) +fi + + +dnl sizeof checks: we will need a 16-bit and a 32-bit type + +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) + +save_LIBS="${LIBS}" +AC_CHECK_LIB(rt, clock_gettime, [rt_libs=" -lrt"]) +LIBS="${LIBS}${rt_libs}" +DLL_LIBS="${DLL_LIBS}${rt_libs}" +AC_CHECK_FUNCS([clock_gettime nanosleep]) +LIBS="${save_LIBS}" + +dnl LT_RELEASE=19 +LT_CURRENT=2 +LT_REVISION=0 +LT_AGE=0 + +AC_SUBST(LT_CURRENT) +AC_SUBST(LT_REVISION) +AC_SUBST(LT_AGE) + +dnl extra variables +AC_SUBST(OTHER_OBJS) +AC_SUBST(PADLL) +AC_SUBST(SHARED_FLAGS) +AC_SUBST(THREAD_CFLAGS) +AC_SUBST(DLL_LIBS) +AC_SUBST(CXXFLAGS) +AC_SUBST(NASM) +AC_SUBST(NASMOPT) +AC_SUBST(INCLUDES) + +dnl -g is optional on darwin +if ( echo "${host_os}" | grep ^darwin >> /dev/null ) && + [[ "$enable_mac_universal" = "yes" ] && + [ "$enable_mac_debug" != "yes" ]] ; then + CFLAGS="-O2 -Wall -pedantic -pipe -fPIC -DNDEBUG" +else + CFLAGS=${CFLAGS:-"-g -O2 -Wall -pedantic -pipe -fPIC"} +fi + +if [[ $ac_cv_c_bigendian = "yes" ]] ; then + CFLAGS="$CFLAGS -DPA_BIG_ENDIAN" +else + CFLAGS="$CFLAGS -DPA_LITTLE_ENDIAN" +fi + +add_objects() +{ + for o in $@; do + test "${OTHER_OBJS#*${o}*}" = "${OTHER_OBJS}" && OTHER_OBJS="$OTHER_OBJS $o" + done +} + +INCLUDES=portaudio.h + +dnl Include directories needed by all implementations +CFLAGS="$CFLAGS -I\$(top_srcdir)/include -I\$(top_srcdir)/src/common" + +case "${host_os}" in + darwin* ) + dnl Mac OS X configuration + + AC_DEFINE(PA_USE_COREAUDIO,1) + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Wno-deprecated -Werror" + LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework CoreFoundation -framework CoreServices" + + if test "x$enable_mac_universal" = "xyes" ; then + case `xcodebuild -version | sed -n 's/Xcode \(.*\)/\1/p'` in + + 3.0|3.1) + dnl In pre-3.2 versions of Xcode, xcodebuild doesn't + dnl support -sdk, so we can't use that to look for + dnl SDKs. However, in those versions of Xcode, the + dnl SDKs are under /Developer/SDKs, so we can just look + dnl there. Also, we assume they had no SDKs later + dnl than 10.5, as 3.2 was the version that came with + dnl 10.6, at least if the Wikipedia page for Xcode + dnl is to be believed. + if [[ -d /Developer/SDKs/MacOSX10.5.sdk ]] ; then + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk" + else + mac_version_min="-mmacosx-version-min=10.3" + mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" + fi + ;; + + *) + dnl In 3.2 and later, xcodebuild supports -sdk, and, in + dnl 4.3 and later, the SDKs aren't under /Developer/SDKs + dnl as there *is* no /Developer, so we use -sdk to check + dnl what SDKs are available and to get the full path of + dnl the SDKs. + if xcrun --sdk macosx10.5 --show-sdk-path >/dev/null 2>&1 ; then + mac_version_min="-mmacosx-version-min=10.5" + mac_sysroot="-isysroot $(xcrun --sdk macosx10.5 --show-sdk-path)" + else + mac_version_min="-mmacosx-version-min=10.6" + mac_sysroot="-isysroot $(xcrun --sdk macosx --show-sdk-path)" + fi + esac + + dnl Pick which architectures to build for based on what + dnl the compiler and SDK supports. + mac_arches="" + for arch in x86_64 arm64 + do + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -arch $arch" + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([$PAMAC_TEST_PROGRAM])], + [ + if [[ -z "$mac_arches" ]] ; then + mac_arches="-arch $arch" + else + mac_arches="$mac_arches -arch $arch" + fi + ]) + CFLAGS="$save_CFLAGS" + done + else + mac_arches="" + mac_sysroot="" + mac_version="" + fi + SHARED_FLAGS="$LIBS -dynamiclib $mac_arches $mac_sysroot $mac_version_min" + CFLAGS="-std=c99 $CFLAGS $mac_arches $mac_sysroot $mac_version_min" + OTHER_OBJS="src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o src/hostapi/coreaudio/pa_mac_core.o src/hostapi/coreaudio/pa_mac_core_utilities.o src/hostapi/coreaudio/pa_mac_core_blocking.o src/common/pa_ringbuffer.o" + PADLL="libportaudio.dylib" + ;; + + mingw* ) + dnl MingW configuration + + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" + SHARED_FLAGS="-shared" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_WMME=0 -DPA_USE_ASIO=0 -DPA_USE_WDMKS=0 -DPA_USE_DS=0 -DPA_USE_WASAPI=0" + + if [[ "x$with_directx" = "xyes" ]]; then + DXDIR="$with_dxdir" + add_objects src/hostapi/dsound/pa_win_ds.o src/hostapi/dsound/pa_win_ds_dynlink.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -ldsound -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -ldsound -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" + #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" + CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1" + INCLUDES="$INCLUDES pa_win_ds.h pa_win_waveformat.h" + fi + + if [[ "x$with_asio" = "xyes" ]]; then + ASIODIR="$with_asiodir" + add_objects src/hostapi/asio/pa_asio.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/hostapi/asio/iasiothiscallresolver.o $ASIODIR/common/asio.o $ASIODIR/host/asiodrivers.o $ASIODIR/host/pc/asiolist.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid" + CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS" + INCLUDES="$INCLUDES pa_asio.h" + + dnl Setting the windows version flags below resolves a conflict between Interlocked* + dnl definitions in mingw winbase.h and Interlocked* hacks in ASIO SDK combase.h + dnl combase.h is included by asiodrvr.h + dnl PortAudio does not actually require Win XP (winver 501) APIs + CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DWINVER=0x0501" + + CXXFLAGS="$CFLAGS" + fi + + if [[ "x$with_wdmks" = "xyes" ]]; then + DXDIR="$with_dxdir" + add_objects src/hostapi/wdmks/pa_win_wdmks.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_wdmks_utils.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -luuid -lsetupapi -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -luuid -lsetupapi -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" + #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" + CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1" + INCLUDES="$INCLUDES pa_win_wdmks.h" + fi + + if [[ "x$with_wmme" = "xyes" ]]; then + add_objects src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm" + CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1" + INCLUDES="$INCLUDES pa_win_wmme.h pa_win_waveformat.h" + fi + + if [[ "x$with_wasapi" = "xyes" ]]; then + add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" + DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" + CFLAGS="$CFLAGS -UPA_USE_WASAPI -DPA_USE_WASAPI=1" + INCLUDES="$INCLUDES pa_win_wasapi.h pa_win_waveformat.h" + fi + ;; + + cygwin* ) + dnl Cygwin configuration + + OTHER_OBJS="src/hostapi/wmme/pa_win_wmme.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_waveformat.o" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_DS=0 -DPA_USE_WDMKS=0 -DPA_USE_ASIO=0 -DPA_USE_WASAPI=0 -DPA_USE_WMME=1" + LIBS="-lwinmm -lm" + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" + SHARED_FLAGS="-shared" + DLL_LIBS="${DLL_LIBS} -lwinmm" + ;; + + irix* ) + dnl SGI IRIX audio library (AL) configuration (Pieter, oct 2-13, 2003). + dnl The 'dmedia' library is needed to read the Unadjusted System Time (UST). + dnl + AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR([IRIX posix thread library not found!])) + AC_CHECK_LIB(audio, alOpenPort, , AC_MSG_ERROR([IRIX audio library not found!])) + AC_CHECK_LIB(dmedia, dmGetUST, , AC_MSG_ERROR([IRIX digital media library not found!])) + + dnl See the '#ifdef PA_USE_SGI' in file pa_unix/pa_unix_hostapis.c + dnl which selects the appropriate PaXXX_Initialize() function. + dnl + AC_DEFINE(PA_USE_SGI,1) + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" + + dnl The _REENTRANT option for pthread safety. Perhaps not necessary but it 'll do no harm. + dnl + THREAD_CFLAGS="-D_REENTRANT" + + OTHER_OBJS="pa_sgi/pa_sgi.o src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" + + dnl SGI books say -lpthread should be the last of the libs mentioned. + dnl + LIBS="-lm -ldmedia -laudio -lpthread" + PADLL="libportaudio.so" + SHARED_FLAGS="" + ;; + + *) + dnl Unix configuration + + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix" + + AC_CHECK_LIB(pthread, pthread_create,[have_pthread="yes"], + AC_MSG_ERROR([libpthread not found!])) + + if [[ "$have_alsa" = "yes" ] && [ "$with_alsa" != "no" ]] ; then + DLL_LIBS="$DLL_LIBS -lasound" + LIBS="$LIBS -lasound" + OTHER_OBJS="$OTHER_OBJS src/hostapi/alsa/pa_linux_alsa.o" + INCLUDES="$INCLUDES pa_linux_alsa.h" + AC_DEFINE(PA_USE_ALSA,1) + fi + + if [[ "$have_jack" = "yes" ] && [ "$with_jack" != "no" ]] ; then + DLL_LIBS="$DLL_LIBS $JACK_LIBS" + CFLAGS="$CFLAGS $JACK_CFLAGS" + OTHER_OBJS="$OTHER_OBJS src/hostapi/jack/pa_jack.o src/common/pa_ringbuffer.o" + INCLUDES="$INCLUDES pa_jack.h" + AC_DEFINE(PA_USE_JACK,1) + fi + + if [[ "$with_oss" != "no" ]] ; then + OTHER_OBJS="$OTHER_OBJS src/hostapi/oss/pa_unix_oss.o" + if [[ "$have_libossaudio" = "yes" ]] ; then + DLL_LIBS="$DLL_LIBS -lossaudio" + LIBS="$LIBS -lossaudio" + fi + AC_DEFINE(PA_USE_OSS,1) + fi + + if [[ "$have_asihpi" = "yes" ] && [ "$with_asihpi" != "no" ]] ; then + LIBS="$LIBS -lhpi" + DLL_LIBS="$DLL_LIBS -lhpi" + OTHER_OBJS="$OTHER_OBJS src/hostapi/asihpi/pa_linux_asihpi.o" + AC_DEFINE(PA_USE_ASIHPI,1) + fi + + DLL_LIBS="$DLL_LIBS -lm -lpthread" + LIBS="$LIBS -lm -lpthread" + PADLL="libportaudio.so" + + ## support sun cc compiler flags + case "${host_os}" in + solaris*) + SHARED_FLAGS="-G" + THREAD_CFLAGS="-mt" + ;; + *) + SHARED_FLAGS="-fPIC" + THREAD_CFLAGS="-pthread" + ;; + esac + + OTHER_OBJS="$OTHER_OBJS src/os/unix/pa_unix_hostapis.o src/os/unix/pa_unix_util.o" +esac +CFLAGS="$CFLAGS $THREAD_CFLAGS" + +test "$enable_shared" != "yes" && SHARED_FLAGS="" + +if test "$enable_cxx" = "yes"; then + AC_CONFIG_SUBDIRS([bindings/cpp]) + ENABLE_CXX_TRUE="" + ENABLE_CXX_FALSE="#" +else + ENABLE_CXX_TRUE="#" + ENABLE_CXX_FALSE="" +fi +AC_SUBST(ENABLE_CXX_TRUE) +AC_SUBST(ENABLE_CXX_FALSE) + +if test "x$with_asio" = "xyes"; then + WITH_ASIO_TRUE="" + WITH_ASIO_FALSE="@ #" +else + WITH_ASIO_TRUE="@ #" + WITH_ASIO_FALSE="" +fi +AC_SUBST(WITH_ASIO_TRUE) +AC_SUBST(WITH_ASIO_FALSE) + +AC_OUTPUT([Makefile portaudio-2.0.pc]) + +AC_MSG_RESULT([ +Configuration summary: + + Target ...................... $target + C++ bindings ................ $enable_cxx + Debug output ................ $debug_output]) + +case "$target_os" in *linux*) + AC_MSG_RESULT([ + ALSA ........................ $have_alsa + ASIHPI ...................... $have_asihpi]) + ;; +esac +case "$target_os" in + *mingw* | *cygwin*) + test "x$with_directx" = "xyes" && with_directx="$with_directx (${with_dxdir})" + test "x$with_wdmks" = "xyes" && with_wdmks="$with_wdmks (${with_dxdir})" + test "x$with_asio" = "xyes" && with_asio="$with_asio (${with_asiodir})" + test "x$with_wasapi" = "xyes" + AC_MSG_RESULT([ + WMME ........................ $with_wmme + DSound ...................... $with_directx + ASIO ........................ $with_asio + WASAPI ...................... $with_wasapi + WDMKS ....................... $with_wdmks +]) + ;; + *darwin*) + AC_MSG_RESULT([ + Mac debug flags ............. $enable_mac_debug +]) + ;; + *) + AC_MSG_RESULT([ + OSS ......................... $have_oss + JACK ........................ $have_jack +]) + ;; +esac |