You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
4.5KB

  1. cmake_minimum_required(VERSION 2.8.10)
  2. project(RtAudio)
  3. include(CTest)
  4. include(CheckFunctionExists)
  5. option(BUILD_PYTHON "Build PyRtAudio python bindings" OFF)
  6. option(AUDIO_WINDOWS_DS "Build Windows DirectSound API" OFF)
  7. option(AUDIO_WINDOWS_ASIO "Build Windows ASIO API" OFF)
  8. option(AUDIO_WINDOWS_WASAPI "Build Windows WASAPI API" OFF)
  9. option(AUDIO_LINUX_OSS "Build Linux OSS API" OFF)
  10. option(AUDIO_LINUX_ALSA "Build Linux ALSA API" OFF)
  11. option(AUDIO_LINUX_PULSE "Build Linux PulseAudio API" OFF)
  12. option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF)
  13. option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF)
  14. if (CMAKE_BUILD_TYPE STREQUAL "Debug")
  15. add_definitions(-D__RTAUDIO_DEBUG__)
  16. endif ()
  17. check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
  18. if (HAVE_GETTIMEOFDAY)
  19. add_definitions(-DHAVE_GETTIMEOFDAY)
  20. endif ()
  21. if (CMAKE_COMPILER_IS_GNUCXX)
  22. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
  23. endif (CMAKE_COMPILER_IS_GNUCXX)
  24. set(rtaudio_SOURCES RtAudio.cpp rtaudio_c.cpp)
  25. set(LINKLIBS)
  26. if (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*")
  27. message(STATUS "NetBSD detected, using OSS")
  28. find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
  29. list(APPEND LINKLIBS ossaudio ${CMAKE_THREAD_LIBS_INIT})
  30. set(AUDIO_LINUX_OSS ON)
  31. elseif (UNIX AND NOT APPLE)
  32. if (NOT AUDIO_LINUX_PULSE AND NOT AUDIO_LINUX_ALSA AND NOT AUDIO_LINUX_OSS AND NOT AUDIO_UNIX_JACK)
  33. set(AUDIO_LINUX_ALSA ON)
  34. endif()
  35. if (AUDIO_LINUX_PULSE)
  36. find_library(PULSE_LIB pulse)
  37. find_library(PULSESIMPLE_LIB pulse-simple)
  38. find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
  39. list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB} ${CMAKE_THREAD_LIBS_INIT})
  40. add_definitions(-D__LINUX_PULSE__)
  41. message(STATUS "Using Linux PulseAudio")
  42. endif (AUDIO_LINUX_PULSE)
  43. if (AUDIO_LINUX_ALSA)
  44. find_package(ALSA)
  45. find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
  46. if (NOT ALSA_FOUND)
  47. message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found")
  48. endif()
  49. include_directories(${ALSA_INCLUDE_DIR})
  50. list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
  51. add_definitions(-D__LINUX_ALSA__)
  52. message(STATUS "Using Linux ALSA")
  53. endif (AUDIO_LINUX_ALSA)
  54. endif ()
  55. if (APPLE)
  56. if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK)
  57. set(AUDIO_OSX_CORE ON)
  58. endif()
  59. if (AUDIO_OSX_CORE)
  60. find_library(COREAUDIO_LIB CoreAudio)
  61. find_library(COREFOUNDATION_LIB CoreFoundation)
  62. list(APPEND LINKLIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB})
  63. add_definitions(-D__MACOSX_CORE__)
  64. message(STATUS "Using OSX CoreAudio")
  65. endif (AUDIO_OSX_CORE)
  66. endif (APPLE)
  67. # JACK supported on many Unices
  68. if (UNIX)
  69. if (AUDIO_UNIX_JACK)
  70. find_library(JACK_LIB jack)
  71. list(APPEND LINKLIBS ${JACK_LIB})
  72. add_definitions(-D__UNIX_JACK__)
  73. message(STATUS "Using JACK")
  74. endif (AUDIO_UNIX_JACK)
  75. endif (UNIX)
  76. if (WIN32)
  77. if (NOT AUDIO_WINDOWS_DS AND NOT AUDIO_WINDOWS_ASIO AND NOT AUDIO_WINDOWS_WASAPI)
  78. set(AUDIO_WINDOWS_WASAPI ON)
  79. endif()
  80. include_directories(include)
  81. list(APPEND LINKLIBS winmm ole32)
  82. if (AUDIO_WINDOWS_DS)
  83. add_definitions(-D__WINDOWS_DS__)
  84. message(STATUS "Using Windows DirectSound")
  85. list(APPEND LINKLIBS dsound)
  86. endif (AUDIO_WINDOWS_DS)
  87. if (AUDIO_WINDOWS_WASAPI)
  88. add_definitions(-D__WINDOWS_WASAPI__)
  89. message(STATUS "Using Windows WASAPI")
  90. list(APPEND LINKLIBS uuid ksuser)
  91. endif (AUDIO_WINDOWS_WASAPI)
  92. if (AUDIO_WINDOWS_ASIO)
  93. list(APPEND rtaudio_SOURCES
  94. include/asio.cpp
  95. include/asiodrivers.cpp
  96. include/asiolist.cpp
  97. include/iasiothiscallresolver.cpp)
  98. add_definitions(-D__WINDOWS_ASIO__)
  99. message(STATUS "Using Windows ASIO")
  100. endif (AUDIO_WINDOWS_ASIO)
  101. endif (WIN32)
  102. cmake_policy(SET CMP0042 OLD)
  103. set(PACKAGE_VERSION 5.0.0)
  104. add_library(rtaudio SHARED ${rtaudio_SOURCES})
  105. add_library(rtaudio_static STATIC ${rtaudio_SOURCES})
  106. target_link_libraries(rtaudio ${LINKLIBS})
  107. if (BUILD_TESTING)
  108. add_subdirectory(tests)
  109. endif (BUILD_TESTING)
  110. configure_file("rtaudio.pc.in" "rtaudio.pc" @ONLY)
  111. install(TARGETS rtaudio
  112. LIBRARY DESTINATION lib)
  113. install(TARGETS rtaudio_static
  114. ARCHIVE DESTINATION lib)
  115. install(
  116. FILES RtAudio.h
  117. DESTINATION include)
  118. install(
  119. FILES ${CMAKE_CURRENT_BINARY_DIR}/rtaudio.pc
  120. DESTINATION lib/pkgconfig)