From f35571c60099fdb27c6c3beff5d539f93ad95e30 Mon Sep 17 00:00:00 2001 From: Berkus Date: Mon, 3 Feb 2014 02:16:34 +0200 Subject: [PATCH 1/7] Add CMake buildfile. --- CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4b645a5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,17 @@ +if (WIN32) + include_directories(include/) + add_definitions(-D__WINDOWS_DS__) + #-D__WINDOWS_ASIO__ +endif (WIN32) + +if (UNIX AND NOT APPLE) + add_definitions(-D__LINUX_PULSE__) +endif (UNIX AND NOT APPLE) + +if (APPLE) + add_definitions(-D__MACOSX_CORE__) +endif (APPLE) + +set(rtaudio_SOURCES RtAudio.cpp) + +add_library(rtaudio STATIC ${rtaudio_SOURCES}) From 446401ac1d523222cc6a0a7cdbb9d90400936a85 Mon Sep 17 00:00:00 2001 From: Berkus Date: Tue, 4 Feb 2014 14:53:42 +0200 Subject: [PATCH 2/7] Add prologue code. --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b645a5..f1f9d3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,12 @@ if (WIN32) add_definitions(-D__WINDOWS_DS__) #-D__WINDOWS_ASIO__ endif (WIN32) +cmake_minimum_required(VERSION 2.8.10) +project(RtAudio) + +include(CTest) +include(CheckFunctionExists) + if (UNIX AND NOT APPLE) add_definitions(-D__LINUX_PULSE__) From cba3e8a203791a439a2e652afa397bf32bca9927 Mon Sep 17 00:00:00 2001 From: Berkus Date: Tue, 4 Feb 2014 14:55:12 +0200 Subject: [PATCH 3/7] Add options for manual selection of APIs. --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1f9d3d..6883b58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,15 @@ project(RtAudio) include(CTest) 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_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) +option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF) +option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF) + if (UNIX AND NOT APPLE) add_definitions(-D__LINUX_PULSE__) From 447333f40acca672e5e3051b1bc2fad22734bfa8 Mon Sep 17 00:00:00 2001 From: Berkus Date: Tue, 4 Feb 2014 14:56:24 +0200 Subject: [PATCH 4/7] Remove primitive API selection code. --- CMakeLists.txt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6883b58..1a1b7f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,3 @@ -if (WIN32) - include_directories(include/) - add_definitions(-D__WINDOWS_DS__) - #-D__WINDOWS_ASIO__ -endif (WIN32) cmake_minimum_required(VERSION 2.8.10) project(RtAudio) @@ -19,14 +14,8 @@ option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF) option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF) -if (UNIX AND NOT APPLE) - add_definitions(-D__LINUX_PULSE__) -endif (UNIX AND NOT APPLE) if (APPLE) - add_definitions(-D__MACOSX_CORE__) endif (APPLE) -set(rtaudio_SOURCES RtAudio.cpp) -add_library(rtaudio STATIC ${rtaudio_SOURCES}) From f31af1aa0fe691a643fd6493a97a7d00c1f742e5 Mon Sep 17 00:00:00 2001 From: Berkus Date: Tue, 4 Feb 2014 14:57:25 +0200 Subject: [PATCH 5/7] Add full API selection mechanism. Mostly copied from configure.ac. --- CMakeLists.txt | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a1b7f4..509bf39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,91 @@ option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF) option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF) +set(rtaudio_SOURCES RtAudio.cpp) + +set(LINKLIBS) +if (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*") + message(STATUS "NetBSD detected, using OSS") + find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) + list(APPEND LINKLIBS ossaudio ${CMAKE_THREAD_LIBS_INIT}) + set(AUDIO_LINUX_OSS ON) +elseif (UNIX AND NOT APPLE) + if (NOT AUDIO_LINUX_PULSE AND NOT AUDIO_LINUX_ALSA AND NOT AUDIO_LINUX_OSS AND NOT AUDIO_UNIX_JACK) + set(AUDIO_LINUX_ALSA ON) + endif() + + if (AUDIO_LINUX_PULSE) + find_library(PULSE_LIB pulse) + find_library(PULSESIMPLE_LIB pulse-simple) + list(APPEND LINKLIBS ${PULSE_LIB} ${PULSESIMPLE_LIB}) + add_definitions(-D__LINUX_PULSE__) + message(STATUS "Using Linux PulseAudio") + endif (AUDIO_LINUX_PULSE) + if (AUDIO_LINUX_ALSA) + find_package(ALSA) + find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) + if (NOT ALSA_FOUND) + message(FATAL_ERROR "ALSA API requested but no ALSA dev libraries found") + endif() + add_defines(${ALSA_INCLUDE_DIR}) + list(APPEND LINKLIBS ${ALSA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) + add_definitions(-D__LINUX_ALSA__) + message(STATUS "Using Linux ALSA") + endif (AUDIO_LINUX_ALSA) +endif () if (APPLE) + if (NOT AUDIO_OSX_CORE AND NOT AUDIO_UNIX_JACK) + set(AUDIO_OSX_CORE ON) + endif() + + if (AUDIO_OSX_CORE) + find_library(COREAUDIO_LIB CoreAudio) + find_library(COREFOUNDATION_LIB CoreFoundation) + list(APPEND LINKLIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB}) + add_definitions(-D__MACOSX_CORE__) + message(STATUS "Using OSX CoreAudio") + endif (AUDIO_OSX_CORE) endif (APPLE) +# JACK supported on many Unices +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) + endif() + + include_directories(include) + list(APPEND LINKLIBS dsound winmm ole32) + + if (AUDIO_WINDOWS_DS) + add_definitions(-D__WINDOWS_DS__) + message(STATUS "Using Windows DirectSound") + endif (AUDIO_WINDOWS_DS) + if (AUDIO_WINDOWS_ASIO) + list(APPEND rtaudio_SOURCES + include/asio.cpp + include/asiodrivers.cpp + include/asiolist.cpp + include/iasiothiscallresolver.cpp) + add_definitions(-D__WINDOWS_ASIO__) + message(STATUS "Using Windows ASIO") + endif (AUDIO_WINDOWS_ASIO) +endif (WIN32) + +add_library(rtaudio SHARED ${rtaudio_SOURCES}) +add_library(rtaudio_static STATIC ${rtaudio_SOURCES}) + +target_link_libraries(rtaudio ${LINKLIBS}) + From 184ac3fff27d3b9f137c64f2b1a35b6619580580 Mon Sep 17 00:00:00 2001 From: Berkus Date: Tue, 4 Feb 2014 14:57:59 +0200 Subject: [PATCH 6/7] Set some flags depending on compiler and environment. --- CMakeLists.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 509bf39..273d5c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,19 @@ option(AUDIO_LINUX_PULSE "Build Linux PulseAudio API" OFF) option(AUDIO_UNIX_JACK "Build Unix JACK audio server API" OFF) option(AUDIO_OSX_CORE "Build Mac OSX CoreAudio API" OFF) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-D__RTAUDIO_DEBUG__) +endif () + +check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) + +if (HAVE_GETTIMEOFDAY) + add_definitions(-DHAVE_GETTIMEOFDAY) +endif () + +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") +endif (CMAKE_COMPILER_IS_GNUCXX) set(rtaudio_SOURCES RtAudio.cpp) From 704da88113a15d4eafdeb3e33714531adcd249b0 Mon Sep 17 00:00:00 2001 From: Berkus Date: Tue, 4 Feb 2014 14:58:26 +0200 Subject: [PATCH 7/7] Build test programs. --- CMakeLists.txt | 3 +++ tests/CMakeLists.txt | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tests/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 273d5c7..365ce75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,4 +114,7 @@ add_library(rtaudio_static STATIC ${rtaudio_SOURCES}) target_link_libraries(rtaudio ${LINKLIBS}) +if (BUILD_TESTING) + add_subdirectory(tests) +endif (BUILD_TESTING) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..0fb028f --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,25 @@ +include_directories(..) +if (WIN32) + include_directories(../include) +endif (WIN32) + +add_executable(audioprobe audioprobe.cpp) +target_link_libraries(audioprobe rtaudio_static ${LINKLIBS}) + +add_executable(playsaw playsaw.cpp) +target_link_libraries(playsaw rtaudio_static ${LINKLIBS}) + +add_executable(playraw playraw.cpp) +target_link_libraries(playraw rtaudio_static ${LINKLIBS}) + +add_executable(record record.cpp) +target_link_libraries(record rtaudio_static ${LINKLIBS}) + +add_executable(duplex duplex.cpp) +target_link_libraries(duplex rtaudio_static ${LINKLIBS}) + +add_executable(testall testall.cpp) +target_link_libraries(testall rtaudio_static ${LINKLIBS}) + +add_executable(teststops teststops.cpp) +target_link_libraries(teststops rtaudio_static ${LINKLIBS})