Update availability of platforms in configure help.
[rtaudio-cdist.git] / CMakeLists.txt
index 273d5c77d1340081e55e119759950649ed13ebe1..1ea5252c6c4194082455ee8839821c6f691bf441 100644 (file)
@@ -7,6 +7,7 @@ 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)
@@ -27,7 +28,7 @@ if (CMAKE_COMPILER_IS_GNUCXX)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
 endif (CMAKE_COMPILER_IS_GNUCXX)
 
-set(rtaudio_SOURCES RtAudio.cpp)
+set(rtaudio_SOURCES RtAudio.cpp rtaudio_c.cpp)
 
 set(LINKLIBS)
 if (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*")
@@ -43,7 +44,8 @@ elseif (UNIX AND NOT APPLE)
     if (AUDIO_LINUX_PULSE)
         find_library(PULSE_LIB pulse)
         find_library(PULSESIMPLE_LIB pulse-simple)
-        list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB})
+        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)
@@ -53,7 +55,7 @@ elseif (UNIX AND NOT APPLE)
         if (NOT ALSA_FOUND)
             message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found")
         endif()
-        add_defines(${ALSA_INCLUDE_DIR})
+        include_directories(${ALSA_INCLUDE_DIR})
         list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
         add_definitions(-D__LINUX_ALSA__)
         message(STATUS "Using Linux ALSA")
@@ -79,25 +81,29 @@ 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)
+    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 dsound winmm ole32)
+    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
@@ -109,9 +115,27 @@ if (WIN32)
     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)
+
+configure_file("rtaudio.pc.in" "rtaudio.pc" @ONLY)
+
+install(TARGETS rtaudio
+      LIBRARY DESTINATION lib
+      ARCHIVE DESTINATION lib
+      RUNTIME DESTINATION bin)
+
+install(
+    FILES RtAudio.h
+    DESTINATION include)
 
+install(
+    FILES ${CMAKE_CURRENT_BINARY_DIR}/rtaudio.pc
+    DESTINATION lib/pkgconfig)