X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=812d4d307666e7fa9ab37ccc6de609f19d36e6d5;hb=3a3f183a0bf869e47e957f26a0a6efb93c22e64f;hp=f1f9d3d1d5afb298e7c618c68386b12a768afc99;hpb=446401ac1d523222cc6a0a7cdbb9d90400936a85;p=rtaudio.git diff --git a/CMakeLists.txt b/CMakeLists.txt index f1f9d3d..812d4d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,23 +1,139 @@ -if (WIN32) - include_directories(include/) - add_definitions(-D__WINDOWS_DS__) - #-D__WINDOWS_ASIO__ -endif (WIN32) cmake_minimum_required(VERSION 2.8.10) project(RtAudio) include(CTest) include(CheckFunctionExists) +option(BUILD_PYTHON "Build PyRtAudio python bindings" OFF) +option(AUDIO_WINDOWS_DS "Build Windows DirectSound API" OFF) +option(AUDIO_WINDOWS_ASIO "Build Windows ASIO API" OFF) +option(AUDIO_WINDOWS_WASAPI "Build Windows WASAPI API" OFF) +option(AUDIO_LINUX_OSS "Build Linux OSS API" OFF) +option(AUDIO_LINUX_ALSA "Build Linux ALSA API" OFF) +option(AUDIO_LINUX_PULSE "Build Linux PulseAudio API" OFF) +option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF) +option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF) + +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-D__RTAUDIO_DEBUG__) +endif () -if (UNIX AND NOT APPLE) - add_definitions(-D__LINUX_PULSE__) -endif (UNIX AND NOT APPLE) +check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) + +if (HAVE_GETTIMEOFDAY) + add_definitions(-DHAVE_GETTIMEOFDAY) +endif () + +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") +endif (CMAKE_COMPILER_IS_GNUCXX) + +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) + find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) + list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB} ${CMAKE_THREAD_LIBS_INIT}) + 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() + include_directories(${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) - add_definitions(-D__MACOSX_CORE__) + 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) -set(rtaudio_SOURCES RtAudio.cpp) +# JACK supported on many Unices +if (UNIX) + if (AUDIO_UNIX_JACK) + find_library(JACK_LIB jack) + list(APPEND LINKLIBS ${JACK_LIB}) + 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 AND NOT AUDIO_WINDOWS_WASAPI) + set(AUDIO_WINDOWS_WASAPI ON) + endif() + + include_directories(include) + list(APPEND LINKLIBS winmm ole32) + + if (AUDIO_WINDOWS_DS) + add_definitions(-D__WINDOWS_DS__) + message(STATUS "Using Windows DirectSound") + list(APPEND LINKLIBS dsound) + endif (AUDIO_WINDOWS_DS) + if (AUDIO_WINDOWS_WASAPI) + add_definitions(-D__WINDOWS_WASAPI__) + message(STATUS "Using Windows WASAPI") + list(APPEND LINKLIBS uuid ksuser) + endif (AUDIO_WINDOWS_WASAPI) + 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) + +cmake_policy(SET CMP0042 OLD) +add_library(rtaudio SHARED ${rtaudio_SOURCES}) +add_library(rtaudio_static STATIC ${rtaudio_SOURCES}) + +target_link_libraries(rtaudio ${LINKLIBS}) + +if (BUILD_TESTING) + add_subdirectory(tests) +endif (BUILD_TESTING) + +install(TARGETS rtaudio + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin) + +install( + FILES RtAudio.h + DESTINATION include) -add_library(rtaudio STATIC ${rtaudio_SOURCES}) +install( + FILES rtaudio.pc + DESTINATION lib/pkgconfig)