FindPulseAudio.cmake 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Try to find the PulseAudio library
  2. #
  3. # Once done this will define:
  4. #
  5. # PULSEAUDIO_FOUND - system has the PulseAudio library
  6. # PULSEAUDIO_INCLUDE_DIR - the PulseAudio include directory
  7. # PULSEAUDIO_LIBRARY - the libraries needed to use PulseAudio
  8. # PULSEAUDIO_MAINLOOP_LIBRARY - the libraries needed to use PulsAudio Mainloop
  9. #
  10. # The minimum required version of PulseAudio can be specified using the
  11. # standard syntax, e.g. find_package(PulseAudio 1.0)
  12. # Copyright (c) 2008, Matthias Kretz, <kretz@kde.org>
  13. # Copyright (c) 2009, Marcus Hufgard, <Marcus.Hufgard@hufgard.de>
  14. #
  15. # Redistribution and use is allowed according to the terms of the BSD license.
  16. # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
  17. # Support PULSEAUDIO_MINIMUM_VERSION for compatibility:
  18. if(NOT PulseAudio_FIND_VERSION)
  19. set(PulseAudio_FIND_VERSION "${PULSEAUDIO_MINIMUM_VERSION}")
  20. endif(NOT PulseAudio_FIND_VERSION)
  21. # the minimum version of PulseAudio we require
  22. if(NOT PulseAudio_FIND_VERSION)
  23. set(PulseAudio_FIND_VERSION "0.9.9")
  24. endif(NOT PulseAudio_FIND_VERSION)
  25. if (NOT WIN32)
  26. include(FindPkgConfig)
  27. pkg_check_modules(PC_PULSEAUDIO QUIET libpulse>=${PulseAudio_FIND_VERSION})
  28. pkg_check_modules(PC_PULSEAUDIO_MAINLOOP QUIET libpulse-mainloop-glib)
  29. endif (NOT WIN32)
  30. find_path(PULSEAUDIO_INCLUDE_DIR pulse/pulseaudio.h
  31. HINTS
  32. ${PC_PULSEAUDIO_INCLUDEDIR}
  33. ${PC_PULSEAUDIO_INCLUDE_DIRS}
  34. )
  35. find_library(PULSEAUDIO_LIBRARY NAMES pulse libpulse
  36. HINTS
  37. ${PC_PULSEAUDIO_LIBDIR}
  38. ${PC_PULSEAUDIO_LIBRARY_DIRS}
  39. )
  40. find_library(PULSEAUDIO_MAINLOOP_LIBRARY NAMES pulse-mainloop pulse-mainloop-glib libpulse-mainloop-glib
  41. HINTS
  42. ${PC_PULSEAUDIO_LIBDIR}
  43. ${PC_PULSEAUDIO_LIBRARY_DIRS}
  44. )
  45. # Store the version number in the cache, so we don't have to search every time again:
  46. if (PULSEAUDIO_INCLUDE_DIR AND NOT PULSEAUDIO_VERSION)
  47. # get PulseAudio's version from its version.h, and compare it with our minimum version
  48. file(STRINGS "${PULSEAUDIO_INCLUDE_DIR}/pulse/version.h" pulse_version_h
  49. REGEX ".*pa_get_headers_version\\(\\).*"
  50. )
  51. string(REGEX REPLACE ".*pa_get_headers_version\\(\\)\ \\(\"([0-9]+\\.[0-9]+\\.[0-9]+)[^\"]*\"\\).*" "\\1"
  52. _PULSEAUDIO_VERSION "${pulse_version_h}")
  53. set(PULSEAUDIO_VERSION "${_PULSEAUDIO_VERSION}" CACHE STRING "Version number of PulseAudio" FORCE)
  54. endif (PULSEAUDIO_INCLUDE_DIR AND NOT PULSEAUDIO_VERSION)
  55. # Use the new extended syntax of find_package_handle_standard_args(), which also handles version checking:
  56. include(FindPackageHandleStandardArgs)
  57. find_package_handle_standard_args(PulseAudio REQUIRED_VARS PULSEAUDIO_LIBRARY PULSEAUDIO_INCLUDE_DIR
  58. VERSION_VAR PULSEAUDIO_VERSION )
  59. mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY)