FindPulseAudio.cmake 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #[=======================================================================[.rst
  2. FindPulseAudio
  3. --------------
  4. FindModule for PulseAudio and associated libraries
  5. .. versionchanged:: 3.0
  6. Updated FindModule to CMake standards
  7. Imported Targets
  8. ^^^^^^^^^^^^^^^^
  9. .. versionadded:: 2.0
  10. This module defines the :prop_tgt:`IMPORTED` target ``PulseAudio::PulseAudio``.
  11. Result Variables
  12. ^^^^^^^^^^^^^^^^
  13. This module sets the following variables:
  14. ``PulseAudio_FOUND``
  15. True, if all required components and the core library were found.
  16. ``PulseAudio_VERSION``
  17. Detected version of found PulseAudio libraries.
  18. Cache variables
  19. ^^^^^^^^^^^^^^^
  20. The following cache variables may also be set:
  21. ``PulseAudio_LIBRARY``
  22. Path to the library component of PulseAudio.
  23. ``PulseAudio_INCLUDE_DIR``
  24. Directory containing ``pulseaudio.h``.
  25. #]=======================================================================]
  26. include(FindPackageHandleStandardArgs)
  27. find_package(PkgConfig QUIET)
  28. if(PKG_CONFIG_FOUND)
  29. pkg_search_module(PC_PulseAudio QUIET libpulse)
  30. endif()
  31. find_path(
  32. PulseAudio_INCLUDE_DIR
  33. NAMES pulse/pulseaudio.h
  34. HINTS ${PC_PulseAudio_INCLUDE_DIRS}
  35. PATHS /usr/include/ /usr/local/include
  36. DOC "PulseAudio include directory"
  37. )
  38. find_library(
  39. PulseAudio_LIBRARY
  40. NAMES pulse
  41. HINTS ${PC_PulseAudio_LIBRARY_DIRS}
  42. PATHS /usr/lib /usr/local/lib
  43. DOC "PulseAudio location"
  44. )
  45. if(PC_PulseAudio_VERSION VERSION_GREATER 0)
  46. set(PulseAudio_VERSION ${PC_PulseAudio_VERSION})
  47. elseif(EXISTS "${PulseAudio_INCLUDE_DIR}/version.h")
  48. file(
  49. STRINGS
  50. "${PulseAudio_INCLUDE_DIR}/version.h"
  51. _VERSION_STRING
  52. REGEX "^.*pa_get_headers_version\\(\\)[\t ]+\\(\".*\"\\)[ \t]*$"
  53. )
  54. string(
  55. REGEX REPLACE
  56. ".*pa_get_headers_version\\(\\)[\t ]+\\(\"([^\"]*)\"\\).*"
  57. "\\1"
  58. PulseAudio_VERSION
  59. "${_VERSION_STRING}"
  60. )
  61. else()
  62. if(NOT PulseAudio_FIND_QUIETLY)
  63. message(AUTHOR_WARNING "Failed to find PulseAudio version.")
  64. endif()
  65. set(PulseAudio_VERSION 0.0.0)
  66. endif()
  67. find_package_handle_standard_args(
  68. PulseAudio
  69. REQUIRED_VARS PulseAudio_INCLUDE_DIR PulseAudio_LIBRARY
  70. VERSION_VAR PulseAudio_VERSION
  71. REASON_FAILURE_MESSAGE "Ensure that PulseAudio is installed on the system."
  72. )
  73. mark_as_advanced(PulseAudio_INCLUDE_DIR PulseAudio_LIBRARY)
  74. if(PulseAudio_FOUND)
  75. if(NOT TARGET PulseAudio::PulseAudio)
  76. if(IS_ABSOLUTE "${PulseAudio_LIBRARY}")
  77. add_library(PulseAudio::PulseAudio UNKNOWN IMPORTED)
  78. set_property(TARGET PulseAudio::PulseAudio PROPERTY IMPORTED_LOCATION "${PulseAudio_LIBRARY}")
  79. else()
  80. add_library(PulseAudio::PulseAudio INTERFACE IMPORTED)
  81. set_property(TARGET PulseAudio::PulseAudio PROPERTY IMPORTED_LIBNAME "${PulseAudio_LIBRARY}")
  82. endif()
  83. set_target_properties(
  84. PulseAudio::PulseAudio
  85. PROPERTIES
  86. INTERFACE_COMPILE_OPTIONS "${PC_PulseAudio_CFLAFGS_OTHER}"
  87. INTERFACE_INCLUDE_DIRECTORIES "${PulseAudio_INCLUDE_DIR}"
  88. VERSION ${PulseAudio_VERSION}
  89. )
  90. endif()
  91. endif()
  92. include(FeatureSummary)
  93. set_package_properties(
  94. PulseAudio
  95. PROPERTIES
  96. URL "https://www.freedesktop.org/wiki/Software/PulseAudio/"
  97. DESCRIPTION
  98. "PulseAudio is a sound server system for POSIX OSes, meaning that it is a proxy for your sound applications."
  99. )