1 cmake_minimum_required(VERSION 2.8.10)
5 include(CheckFunctionExists)
7 option(BUILD_PYTHON "Build PyRtAudio python bindings" OFF)
8 option(AUDIO_WINDOWS_DS "Build Windows DirectSound API" OFF)
9 option(AUDIO_WINDOWS_ASIO "Build Windows ASIO API" OFF)
10 option(AUDIO_WINDOWS_WASAPI "Build Windows WASAPI API" OFF)
11 option(AUDIO_LINUX_OSS "Build Linux OSS API" OFF)
12 option(AUDIO_LINUX_ALSA "Build Linux ALSA API" OFF)
13 option(AUDIO_LINUX_PULSE "Build Linux PulseAudio API" OFF)
14 option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF)
15 option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF)
17 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
18 add_definitions(-D__RTAUDIO_DEBUG__)
21 check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
23 if (HAVE_GETTIMEOFDAY)
24 add_definitions(-DHAVE_GETTIMEOFDAY)
27 if (CMAKE_COMPILER_IS_GNUCXX)
28 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
29 endif (CMAKE_COMPILER_IS_GNUCXX)
31 set(rtaudio_SOURCES RtAudio.cpp)
34 if (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*")
35 message(STATUS "NetBSD detected, using OSS")
36 find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
37 list(APPEND LINKLIBS ossaudio ${CMAKE_THREAD_LIBS_INIT})
38 set(AUDIO_LINUX_OSS ON)
39 elseif (UNIX AND NOT APPLE)
40 if (NOT AUDIO_LINUX_PULSE AND NOT AUDIO_LINUX_ALSA AND NOT AUDIO_LINUX_OSS AND NOT AUDIO_UNIX_JACK)
41 set(AUDIO_LINUX_ALSA ON)
44 if (AUDIO_LINUX_PULSE)
45 find_library(PULSE_LIB pulse)
46 find_library(PULSESIMPLE_LIB pulse-simple)
47 find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
48 list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB} ${CMAKE_THREAD_LIBS_INIT})
49 add_definitions(-D__LINUX_PULSE__)
50 message(STATUS "Using Linux PulseAudio")
51 endif (AUDIO_LINUX_PULSE)
54 find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
56 message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found")
58 include_directories(${ALSA_INCLUDE_DIR})
59 list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
60 add_definitions(-D__LINUX_ALSA__)
61 message(STATUS "Using Linux ALSA")
62 endif (AUDIO_LINUX_ALSA)
66 if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK)
67 set(AUDIO_OSX_CORE ON)
71 find_library(COREAUDIO_LIB CoreAudio)
72 find_library(COREFOUNDATION_LIB CoreFoundation)
73 list(APPEND LINKLIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB})
74 add_definitions(-D__MACOSX_CORE__)
75 message(STATUS "Using OSX CoreAudio")
76 endif (AUDIO_OSX_CORE)
79 # JACK supported on many Unices
82 find_library(JACK_LIB jack)
83 list(APPEND LINKLIBS ${JACK_LIB})
84 add_definitions(-D__UNIX_JACK__)
85 message(STATUS "Using JACK")
86 endif (AUDIO_UNIX_JACK)
90 if (NOT AUDIO_WINDOWS_DS AND NOT AUDIO_WINDOWS_ASIO AND NOT AUDIO_WINDOWS_WASAPI)
91 set(AUDIO_WINDOWS_WASAPI ON)
94 include_directories(include)
95 list(APPEND LINKLIBS winmm ole32)
98 add_definitions(-D__WINDOWS_DS__)
99 message(STATUS "Using Windows DirectSound")
100 list(APPEND LINKLIBS dsound)
101 endif (AUDIO_WINDOWS_DS)
102 if (AUDIO_WINDOWS_WASAPI)
103 add_definitions(-D__WINDOWS_WASAPI__)
104 message(STATUS "Using Windows WASAPI")
105 list(APPEND LINKLIBS uuid ksuser)
106 endif (AUDIO_WINDOWS_WASAPI)
107 if (AUDIO_WINDOWS_ASIO)
108 list(APPEND rtaudio_SOURCES
110 include/asiodrivers.cpp
112 include/iasiothiscallresolver.cpp)
113 add_definitions(-D__WINDOWS_ASIO__)
114 message(STATUS "Using Windows ASIO")
115 endif (AUDIO_WINDOWS_ASIO)
118 cmake_policy(SET CMP0042 OLD)
119 add_library(rtaudio SHARED ${rtaudio_SOURCES})
120 add_library(rtaudio_static STATIC ${rtaudio_SOURCES})
122 target_link_libraries(rtaudio ${LINKLIBS})
125 add_subdirectory(tests)
126 endif (BUILD_TESTING)
128 install(TARGETS rtaudio
129 LIBRARY DESTINATION lib
130 ARCHIVE DESTINATION lib
131 RUNTIME DESTINATION bin)
139 DESTINATION lib/pkgconfig)