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.

127 lines
4.0KB

  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)
  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. list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB})
  39. add_definitions(-D__LINUX_PULSE__)
  40. message(STATUS "Using Linux PulseAudio")
  41. endif (AUDIO_LINUX_PULSE)
  42. if (AUDIO_LINUX_ALSA)
  43. find_package(ALSA)
  44. find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD)
  45. if (NOT ALSA_FOUND)
  46. message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found")
  47. endif()
  48. include_directories(${ALSA_INCLUDE_DIR})
  49. list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
  50. add_definitions(-D__LINUX_ALSA__)
  51. message(STATUS "Using Linux ALSA")
  52. endif (AUDIO_LINUX_ALSA)
  53. endif ()
  54. if (APPLE)
  55. if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK)
  56. set(AUDIO_OSX_CORE ON)
  57. endif()
  58. if (AUDIO_OSX_CORE)
  59. find_library(COREAUDIO_LIB CoreAudio)
  60. find_library(COREFOUNDATION_LIB CoreFoundation)
  61. list(APPEND LINKLIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB})
  62. add_definitions(-D__MACOSX_CORE__)
  63. message(STATUS "Using OSX CoreAudio")
  64. endif (AUDIO_OSX_CORE)
  65. endif (APPLE)
  66. # JACK supported on many Unices
  67. if (UNIX)
  68. if (AUDIO_UNIX_JACK)
  69. find_library(JACK_LIB jack)
  70. list(APPEND LINKLIBS ${JACK_LIB})
  71. add_definitions(-D__UNIX_JACK__)
  72. message(STATUS "Using JACK")
  73. endif (AUDIO_UNIX_JACK)
  74. endif (UNIX)
  75. if (WIN32)
  76. if (NOT AUDIO_WINDOWS_DS AND NOT AUDIO_WINDOWS_ASIO AND NOT AUDIO_WINDOWS_WASAPI)
  77. set(AUDIO_WINDOWS_WASAPI ON)
  78. endif()
  79. include_directories(include)
  80. list(APPEND LINKLIBS winmm ole32)
  81. if (AUDIO_WINDOWS_DS)
  82. add_definitions(-D__WINDOWS_DS__)
  83. message(STATUS "Using Windows DirectSound")
  84. list(APPEND LINKLIBS dsound)
  85. endif (AUDIO_WINDOWS_DS)
  86. if (AUDIO_WINDOWS_WASAPI)
  87. add_definitions(-D__WINDOWS_WASAPI__)
  88. message(STATUS "Using Windows WASAPI")
  89. list(APPEND LINKLIBS uuid ksuser)
  90. endif (AUDIO_WINDOWS_WASAPI)
  91. if (AUDIO_WINDOWS_ASIO)
  92. list(APPEND rtaudio_SOURCES
  93. include/asio.cpp
  94. include/asiodrivers.cpp
  95. include/asiolist.cpp
  96. include/iasiothiscallresolver.cpp)
  97. add_definitions(-D__WINDOWS_ASIO__)
  98. message(STATUS "Using Windows ASIO")
  99. endif (AUDIO_WINDOWS_ASIO)
  100. endif (WIN32)
  101. cmake_policy(SET CMP0042 OLD)
  102. add_library(rtaudio SHARED ${rtaudio_SOURCES})
  103. add_library(rtaudio_static STATIC ${rtaudio_SOURCES})
  104. target_link_libraries(rtaudio ${LINKLIBS})
  105. if (BUILD_TESTING)
  106. add_subdirectory(tests)
  107. endif (BUILD_TESTING)