Further fix std::exception noexcept-related compile error
[rtaudio-cdist.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8.10)
2 project(RtAudio)
3
4 include(CTest)
5 include(CheckFunctionExists)
6
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)
16
17 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
18     add_definitions(-D__RTAUDIO_DEBUG__)
19 endif ()
20
21 check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
22
23 if (HAVE_GETTIMEOFDAY)
24     add_definitions(-DHAVE_GETTIMEOFDAY)
25 endif ()
26
27 if (CMAKE_COMPILER_IS_GNUCXX)
28     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
29 endif (CMAKE_COMPILER_IS_GNUCXX)
30
31 set(rtaudio_SOURCES RtAudio.cpp)
32
33 set(LINKLIBS)
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)
42     endif()
43
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)
52     if (AUDIO_LINUX_ALSA)
53         find_package(ALSA)
54         find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
55         if (NOT ALSA_FOUND)
56             message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found")
57         endif()
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)
63 endif ()
64
65 if (APPLE)
66     if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK)
67         set(AUDIO_OSX_CORE ON)
68     endif()
69
70     if (AUDIO_OSX_CORE)
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)
77 endif (APPLE)
78
79 # JACK supported on many Unices
80 if (UNIX)
81     if (AUDIO_UNIX_JACK)
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)
87 endif (UNIX)
88
89 if (WIN32)
90     if (NOT AUDIO_WINDOWS_DS AND NOT AUDIO_WINDOWS_ASIO AND NOT AUDIO_WINDOWS_WASAPI)
91         set(AUDIO_WINDOWS_WASAPI ON)
92     endif()
93
94     include_directories(include)
95     list(APPEND LINKLIBS winmm ole32)
96
97     if (AUDIO_WINDOWS_DS)
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
109             include/asio.cpp
110             include/asiodrivers.cpp
111             include/asiolist.cpp
112             include/iasiothiscallresolver.cpp)
113         add_definitions(-D__WINDOWS_ASIO__)
114         message(STATUS "Using Windows ASIO")
115     endif (AUDIO_WINDOWS_ASIO)
116 endif (WIN32)
117
118 cmake_policy(SET CMP0042 OLD)
119 add_library(rtaudio SHARED ${rtaudio_SOURCES})
120 add_library(rtaudio_static STATIC ${rtaudio_SOURCES})
121
122 target_link_libraries(rtaudio ${LINKLIBS})
123
124 if (BUILD_TESTING)
125     add_subdirectory(tests)
126 endif (BUILD_TESTING)
127
128 install(TARGETS rtaudio
129       LIBRARY DESTINATION lib
130       ARCHIVE DESTINATION lib
131       RUNTIME DESTINATION bin)
132
133 install(
134     FILES RtAudio.h
135     DESTINATION include)
136
137 install(
138     FILES rtaudio.pc
139     DESTINATION lib/pkgconfig)