diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a1b7f4..509bf39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,91 @@ option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF) option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF) +set(rtaudio_SOURCES RtAudio.cpp) + +set(LINKLIBS) +if (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*") + message(STATUS "NetBSD detected, using OSS") + find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) + list(APPEND LINKLIBS ossaudio ${CMAKE_THREAD_LIBS_INIT}) + set(AUDIO_LINUX_OSS ON) +elseif (UNIX AND NOT APPLE) + if (NOT AUDIO_LINUX_PULSE AND NOT AUDIO_LINUX_ALSA AND NOT AUDIO_LINUX_OSS AND NOT AUDIO_UNIX_JACK) + set(AUDIO_LINUX_ALSA ON) + endif() + + if (AUDIO_LINUX_PULSE) + find_library(PULSE_LIB pulse) + find_library(PULSESIMPLE_LIB pulse-simple) + list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB}) + add_definitions(-D__LINUX_PULSE__) + message(STATUS "Using Linux PulseAudio") + endif (AUDIO_LINUX_PULSE) + if (AUDIO_LINUX_ALSA) + find_package(ALSA) + find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) + if (NOT ALSA_FOUND) + message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found") + endif() + add_defines(${ALSA_INCLUDE_DIR}) + list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) + add_definitions(-D__LINUX_ALSA__) + message(STATUS "Using Linux ALSA") + endif (AUDIO_LINUX_ALSA) +endif () if (APPLE) + if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK) + set(AUDIO_OSX_CORE ON) + endif() + + if (AUDIO_OSX_CORE) + find_library(COREAUDIO_LIB CoreAudio) + find_library(COREFOUNDATION_LIB CoreFoundation) + list(APPEND LINKLIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB}) + add_definitions(-D__MACOSX_CORE__) + message(STATUS "Using OSX CoreAudio") + endif (AUDIO_OSX_CORE) endif (APPLE) +# JACK supported on many Unices +if (UNIX) + if (AUDIO_UNIX_JACK) + find_library(JACK_LIB jack) + list(APPEND LINKLIBS ${JACK_LIB}) +# jack_client_open +# AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(Jack support also requires the asound library!))], ) + add_definitions(-D__UNIX_JACK__) + message(STATUS "Using JACK") + endif (AUDIO_UNIX_JACK) +endif (UNIX) + +if (WIN32) + if (NOT AUDIO_WINDOWS_DS AND NOT AUDIO_WINDOWS_ASIO) + set(AUDIO_WINDOWS_DS ON) + endif() + + include_directories(include) + list(APPEND LINKLIBS dsound winmm ole32) + + if (AUDIO_WINDOWS_DS) + add_definitions(-D__WINDOWS_DS__) + message(STATUS "Using Windows DirectSound") + endif (AUDIO_WINDOWS_DS) + if (AUDIO_WINDOWS_ASIO) + list(APPEND rtaudio_SOURCES + include/asio.cpp + include/asiodrivers.cpp + include/asiolist.cpp + include/iasiothiscallresolver.cpp) + add_definitions(-D__WINDOWS_ASIO__) + message(STATUS "Using Windows ASIO") + endif (AUDIO_WINDOWS_ASIO) +endif (WIN32) + +add_library(rtaudio SHARED ${rtaudio_SOURCES}) +add_library(rtaudio_static STATIC ${rtaudio_SOURCES}) + +target_link_libraries(rtaudio ${LINKLIBS}) +