summaryrefslogtreecommitdiff
path: root/cmake/Modules/FindPORTAUDIO.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/Modules/FindPORTAUDIO.cmake')
-rw-r--r--cmake/Modules/FindPORTAUDIO.cmake60
1 files changed, 60 insertions, 0 deletions
diff --git a/cmake/Modules/FindPORTAUDIO.cmake b/cmake/Modules/FindPORTAUDIO.cmake
new file mode 100644
index 0000000000..ab18c6c1df
--- /dev/null
+++ b/cmake/Modules/FindPORTAUDIO.cmake
@@ -0,0 +1,60 @@
+# - Try to find Portaudio
+# Once done this will define
+#
+# PORTAUDIO_FOUND - system has Portaudio
+# PORTAUDIO_INCLUDE_DIRS - the Portaudio include directory
+# PORTAUDIO_LIBRARIES - Link these to use Portaudio
+
+include(FindPkgConfig)
+pkg_check_modules(PC_PORTAUDIO portaudio-2.0)
+
+find_path(PORTAUDIO_INCLUDE_DIRS
+ NAMES
+ portaudio.h
+ PATHS
+ /usr/local/include
+ /usr/include
+ HINTS
+ ${PC_PORTAUDIO_INCLUDEDIR}
+)
+
+find_library(PORTAUDIO_LIBRARIES
+ NAMES
+ portaudio
+ PATHS
+ /usr/local/lib
+ /usr/lib
+ /usr/lib64
+ HINTS
+ ${PC_PORTAUDIO_LIBDIR}
+)
+
+mark_as_advanced(PORTAUDIO_INCLUDE_DIRS PORTAUDIO_LIBRARIES)
+
+
+# Found PORTAUDIO, but it may be version 18 which is not acceptable.
+if(EXISTS ${PORTAUDIO_INCLUDE_DIRS}/portaudio.h)
+ include(CheckCXXSourceCompiles)
+ set(CMAKE_REQUIRED_INCLUDES_SAVED ${CMAKE_REQUIRED_INCLUDES})
+ set(CMAKE_REQUIRED_INCLUDES ${PORTAUDIO_INCLUDE_DIRS})
+ CHECK_CXX_SOURCE_COMPILES(
+ "#include <portaudio.h>\nPaDeviceIndex pa_find_device_by_name(const char *name); int main () {return 0;}"
+ PORTAUDIO2_FOUND)
+ set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVED})
+ unset(CMAKE_REQUIRED_INCLUDES_SAVED)
+ if(PORTAUDIO2_FOUND)
+ INCLUDE(FindPackageHandleStandardArgs)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PORTAUDIO DEFAULT_MSG PORTAUDIO_INCLUDE_DIRS PORTAUDIO_LIBRARIES)
+ if (PORTAUDIO_FOUND AND NOT TARGET Portaudio::Portaudio)
+ add_library(Portaudio::Portaudio INTERFACE IMPORTED)
+ set_target_properties(Portaudio::Portaudio PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${PORTAUDIO_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES "${PORTAUDIO_LIBRARIES}"
+ )
+ endif()
+ else(PORTAUDIO2_FOUND)
+ message(STATUS
+ " portaudio.h not compatible (requires API 2.0)")
+ set(PORTAUDIO_FOUND FALSE)
+ endif(PORTAUDIO2_FOUND)
+endif()