Report playback latency for PulseAudio.
[rtaudio-cdist.git] / CMakeLists.txt
index 9e4060a0064d8af7a296e754e337e03f02b7aa7f..cc05b2a286b2752e02f2cbe47f1d2fccb99643ad 100644 (file)
@@ -25,16 +25,20 @@ endif()
 
 # Necessary for Windows
 if(WIN32)
-  set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
   set(CMAKE_DEBUG_POSTFIX "d")
 endif()
 
+if(MINGW)
+  set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+endif()
+
 # Build Options
-option(BUILD_SHARED_LIBS "Compile library shared lib." TRUE)
-option(BUILD_STATIC_LIBS "Compile library static lib." TRUE)
-option(BUILD_TESTING "Compile test programs." TRUE)
-option(BUILD_PYTHON "Build PyRtAudio python bindings" OFF)
+option(RTAUDIO_BUILD_SHARED_LIBS "Compile library shared lib." TRUE)
+option(RTAUDIO_BUILD_STATIC_LIBS "Compile library static lib." TRUE)
+option(RTAUDIO_BUILD_TESTING "Compile test programs." TRUE)
+option(RTAUDIO_BUILD_PYTHON "Build PyRtAudio python bindings" OFF)
 set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (Release,Debug)")
+set(RTAUDIO_TARGETNAME_UNINSTALL "uninstall" CACHE STRING "Name of 'uninstall' build target")
 
 # API Options
 option(RTAUDIO_API_DS "Build DirectSound API" OFF)
@@ -177,8 +181,9 @@ endif()
 
 # WASAPI
 if (RTAUDIO_API_WASAPI)
+  include_directories(include)
   set(NEED_WIN32LIBS ON)
-  list(APPEND LINKLIBS uuid ksuser)
+  list(APPEND LINKLIBS ksuser mfplat mfuuid wmcodecdspuuid)
   list(APPEND API_DEFS "-D__WINDOWS_WASAPI__")
   list(APPEND API_LIST "wasapi")
 endif()
@@ -199,7 +204,7 @@ endif()
 # Create library targets.
 cmake_policy(SET CMP0042 OLD)
 set(LIB_TARGETS)
-if(BUILD_SHARED_LIBS)
+if(RTAUDIO_BUILD_SHARED_LIBS)
   add_library(rtaudio SHARED ${rtaudio_SOURCES})
   list(APPEND LIB_TARGETS rtaudio)
 
@@ -216,11 +221,12 @@ if(BUILD_SHARED_LIBS)
 
   # Set compile-time definitions
   target_compile_definitions(rtaudio PRIVATE ${API_DEFS})
+  target_compile_definitions(rtaudio PRIVATE RTAUDIO_EXPORT)
 
   target_link_libraries(rtaudio ${LINKLIBS})
 endif()
 
-if(BUILD_STATIC_LIBS)
+if(RTAUDIO_BUILD_STATIC_LIBS)
   add_library(rtaudio_static STATIC ${rtaudio_SOURCES})
   list(APPEND LIB_TARGETS rtaudio_static)
 
@@ -245,10 +251,10 @@ endif()
 include(GNUInstallDirs)
 
 # Subdirs
-if (BUILD_TESTING)
+if (RTAUDIO_BUILD_TESTING)
   include(CTest)
   add_subdirectory(tests)
-endif (BUILD_TESTING)
+endif (RTAUDIO_BUILD_TESTING)
 
 # Message
 string(REPLACE ";" " " apilist "${API_LIST}")
@@ -257,7 +263,8 @@ message(STATUS "Compiling with support for: ${apilist}")
 # PkgConfig file
 string(REPLACE ";" " " req "${PKGCONFIG_REQUIRES}")
 string(REPLACE ";" " " api "${API_DEFS}")
-configure_file("rtaudio.pc.in" "rtaudio.pc" @ONLY)
+set(prefix ${CMAKE_INSTALL_PREFIX})
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/rtaudio.pc.in" "rtaudio.pc" @ONLY)
 
 # Add install rule.
 install(TARGETS ${LIB_TARGETS}
@@ -278,10 +285,10 @@ else()
 endif()
 
 # Create CMake configuration export file.
-file(WRITE ${CMAKE_BINARY_DIR}/RtAudioConfig.cmake "include(\${CMAKE_CURRENT_LIST_DIR}/RtAudioTargets.cmake)")
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/RtAudioConfig.cmake "include(\${CMAKE_CURRENT_LIST_DIR}/RtAudioTargets.cmake)")
 
 # Install CMake configuration export file.
-install(FILES ${CMAKE_BINARY_DIR}/RtAudioConfig.cmake
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/RtAudioConfig.cmake
         DESTINATION ${RTAUDIO_CMAKE_DESTINATION})
 
 # Export library target (build-tree).
@@ -295,12 +302,12 @@ install(EXPORT RtAudioTargets
 
 # Configure uninstall target.
 configure_file(
-    "${CMAKE_SOURCE_DIR}/cmake/RtAudioConfigUninstall.cmake.in"
-    "${CMAKE_BINARY_DIR}/RtAudioConfigUninstall.cmake" @ONLY)
+    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/RtAudioConfigUninstall.cmake.in"
+    "${CMAKE_CURRENT_BINARY_DIR}/RtAudioConfigUninstall.cmake" @ONLY)
 
 # Create uninstall target.
-add_custom_target(uninstall
-    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/RtAudioConfigUninstall.cmake)
+add_custom_target(${RTAUDIO_TARGETNAME_UNINSTALL}
+    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/RtAudioConfigUninstall.cmake)
 
 install(
     FILES ${CMAKE_CURRENT_BINARY_DIR}/rtaudio.pc