Build test programs.
[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_LINUX_OSS "Build Linux OSS API" OFF)
11 option(AUDIO_LINUX_ALSA "Build Linux ALSA API" OFF)
12 option(AUDIO_LINUX_PULSE "Build Linux PulseAudio API" OFF)
13 option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF)
14 option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF)
15
16 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
17     add_definitions(-D__RTAUDIO_DEBUG__)
18 endif ()
19
20 check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
21
22 if (HAVE_GETTIMEOFDAY)
23     add_definitions(-DHAVE_GETTIMEOFDAY)
24 endif ()
25
26 if (CMAKE_COMPILER_IS_GNUCXX)
27     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
28 endif (CMAKE_COMPILER_IS_GNUCXX)
29
30 set(rtaudio_SOURCES RtAudio.cpp)
31
32 set(LINKLIBS)
33 if (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*")
34     message(STATUS "NetBSD detected, using OSS")
35     find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
36     list(APPEND LINKLIBS ossaudio ${CMAKE_THREAD_LIBS_INIT})
37     set(AUDIO_LINUX_OSS ON)
38 elseif (UNIX AND NOT APPLE)
39     if (NOT AUDIO_LINUX_PULSE AND NOT AUDIO_LINUX_ALSA AND NOT AUDIO_LINUX_OSS AND NOT AUDIO_UNIX_JACK)
40         set(AUDIO_LINUX_ALSA ON)
41     endif()
42
43     if (AUDIO_LINUX_PULSE)
44         find_library(PULSE_LIB pulse)
45         find_library(PULSESIMPLE_LIB pulse-simple)
46         list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB})
47         add_definitions(-D__LINUX_PULSE__)
48         message(STATUS "Using Linux PulseAudio")
49     endif (AUDIO_LINUX_PULSE)
50     if (AUDIO_LINUX_ALSA)
51         find_package(ALSA)
52         find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
53         if (NOT ALSA_FOUND)
54             message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found")
55         endif()
56         add_defines(${ALSA_INCLUDE_DIR})
57         list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
58         add_definitions(-D__LINUX_ALSA__)
59         message(STATUS "Using Linux ALSA")
60     endif (AUDIO_LINUX_ALSA)
61 endif ()
62
63 if (APPLE)
64     if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK)
65         set(AUDIO_OSX_CORE ON)
66     endif()
67
68     if (AUDIO_OSX_CORE)
69         find_library(COREAUDIO_LIB CoreAudio)
70         find_library(COREFOUNDATION_LIB CoreFoundation)
71         list(APPEND LINKLIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB})
72         add_definitions(-D__MACOSX_CORE__)
73         message(STATUS "Using OSX CoreAudio")
74     endif (AUDIO_OSX_CORE)
75 endif (APPLE)
76
77 # JACK supported on many Unices
78 if (UNIX)
79     if (AUDIO_UNIX_JACK)
80         find_library(JACK_LIB jack)
81         list(APPEND LINKLIBS ${JACK_LIB})
82 #        jack_client_open
83 #    AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(Jack support also requires the asound library!))], )
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)
91         set(AUDIO_WINDOWS_DS ON)
92     endif()
93
94     include_directories(include)
95     list(APPEND LINKLIBS dsound winmm ole32)
96
97     if (AUDIO_WINDOWS_DS)
98         add_definitions(-D__WINDOWS_DS__)
99         message(STATUS "Using Windows DirectSound")
100     endif (AUDIO_WINDOWS_DS)
101     if (AUDIO_WINDOWS_ASIO)
102         list(APPEND rtaudio_SOURCES
103             include/asio.cpp
104             include/asiodrivers.cpp
105             include/asiolist.cpp
106             include/iasiothiscallresolver.cpp)
107         add_definitions(-D__WINDOWS_ASIO__)
108         message(STATUS "Using Windows ASIO")
109     endif (AUDIO_WINDOWS_ASIO)
110 endif (WIN32)
111
112 add_library(rtaudio SHARED ${rtaudio_SOURCES})
113 add_library(rtaudio_static STATIC ${rtaudio_SOURCES})
114
115 target_link_libraries(rtaudio ${LINKLIBS})
116
117 if (BUILD_TESTING)
118     add_subdirectory(tests)
119 endif (BUILD_TESTING)
120