FindVorbis.cmake 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #[=======================================================================[.rst:
  2. FindVorbis
  3. ----------
  4. Finds the native vorbis, vorbisenc amd vorbisfile includes and libraries.
  5. Imported Targets
  6. ^^^^^^^^^^^^^^^^
  7. This module provides the following imported targets, if found:
  8. ``Vorbis::vorbis``
  9. The Vorbis library
  10. ``Vorbis::vorbisenc``
  11. The VorbisEnc library
  12. ``Vorbis::vorbisfile``
  13. The VorbisFile library
  14. Result Variables
  15. ^^^^^^^^^^^^^^^^
  16. This will define the following variables:
  17. ``Vorbis_Vorbis_INCLUDE_DIRS``
  18. List of include directories when using vorbis.
  19. ``Vorbis_Enc_INCLUDE_DIRS``
  20. List of include directories when using vorbisenc.
  21. ``Vorbis_File_INCLUDE_DIRS``
  22. List of include directories when using vorbisfile.
  23. ``Vorbis_Vorbis_LIBRARIES``
  24. List of libraries when using vorbis.
  25. ``Vorbis_Enc_LIBRARIES``
  26. List of libraries when using vorbisenc.
  27. ``Vorbis_File_LIBRARIES``
  28. List of libraries when using vorbisfile.
  29. ``Vorbis_FOUND``
  30. True if vorbis and requested components found.
  31. ``Vorbis_Vorbis_FOUND``
  32. True if vorbis found.
  33. ``Vorbis_Enc_FOUND``
  34. True if vorbisenc found.
  35. ``Vorbis_Enc_FOUND``
  36. True if vorbisfile found.
  37. Cache variables
  38. ^^^^^^^^^^^^^^^
  39. The following cache variables may also be set:
  40. ``Vorbis_Vorbis_INCLUDE_DIR``
  41. The directory containing ``vorbis/vorbis.h``.
  42. ``Vorbis_Enc_INCLUDE_DIR``
  43. The directory containing ``vorbis/vorbisenc.h``.
  44. ``Vorbis_File_INCLUDE_DIR``
  45. The directory containing ``vorbis/vorbisenc.h``.
  46. ``Vorbis_Vorbis_LIBRARY``
  47. The path to the vorbis library.
  48. ``Vorbis_Enc_LIBRARY``
  49. The path to the vorbisenc library.
  50. ``Vorbis_File_LIBRARY``
  51. The path to the vorbisfile library.
  52. Hints
  53. ^^^^^
  54. A user may set ``Vorbis_ROOT`` to a vorbis installation root to tell this module where to look.
  55. #]=======================================================================]
  56. if (Vorbis_Vorbis_INCLUDE_DIR)
  57. # Already in cache, be silent
  58. set (Vorbis_FIND_QUIETLY TRUE)
  59. endif ()
  60. set (Vorbis_Vorbis_FIND_QUIETLY TRUE)
  61. set (Vorbis_Enc_FIND_QUIETLY TRUE)
  62. set (Vorbis_File_FIND_QUIETLY TRUE)
  63. find_package (Ogg QUIET)
  64. find_package (PkgConfig QUIET)
  65. pkg_check_modules (PC_Vorbis_Vorbis QUIET vorbis)
  66. pkg_check_modules (PC_Vorbis_Enc QUIET vorbisenc)
  67. pkg_check_modules (PC_Vorbis_File QUIET vorbisfile)
  68. set (Vorbis_VERSION ${PC_Vorbis_Vorbis_VERSION})
  69. find_path (Vorbis_Vorbis_INCLUDE_DIR vorbis/codec.h
  70. HINTS
  71. ${PC_Vorbis_Vorbis_INCLUDEDIR}
  72. ${PC_Vorbis_Vorbis_INCLUDE_DIRS}
  73. ${Vorbis_ROOT}
  74. )
  75. find_path (Vorbis_Enc_INCLUDE_DIR vorbis/vorbisenc.h
  76. HINTS
  77. ${PC_Vorbis_Enc_INCLUDEDIR}
  78. ${PC_Vorbis_Enc_INCLUDE_DIRS}
  79. ${Vorbis_ROOT}
  80. )
  81. find_path (Vorbis_File_INCLUDE_DIR vorbis/vorbisfile.h
  82. HINTS
  83. ${PC_Vorbis_File_INCLUDEDIR}
  84. ${PC_Vorbis_File_INCLUDE_DIRS}
  85. ${Vorbis_ROOT}
  86. )
  87. find_library (Vorbis_Vorbis_LIBRARY
  88. NAMES
  89. vorbis
  90. vorbis_static
  91. libvorbis
  92. libvorbis_static
  93. HINTS
  94. ${PC_Vorbis_Vorbis_LIBDIR}
  95. ${PC_Vorbis_Vorbis_LIBRARY_DIRS}
  96. ${Vorbis_ROOT}
  97. )
  98. find_library (Vorbis_Enc_LIBRARY
  99. NAMES
  100. vorbisenc
  101. vorbisenc_static
  102. libvorbisenc
  103. libvorbisenc_static
  104. HINTS
  105. ${PC_Vorbis_Enc_LIBDIR}
  106. ${PC_Vorbis_Enc_LIBRARY_DIRS}
  107. ${Vorbis_ROOT}
  108. )
  109. find_library (Vorbis_File_LIBRARY
  110. NAMES
  111. vorbisfile
  112. vorbisfile_static
  113. libvorbisfile
  114. libvorbisfile_static
  115. HINTS
  116. ${PC_Vorbis_File_LIBDIR}
  117. ${PC_Vorbis_File_LIBRARY_DIRS}
  118. ${Vorbis_ROOT}
  119. )
  120. include (FindPackageHandleStandardArgs)
  121. if (Vorbis_Vorbis_LIBRARY AND Vorbis_Vorbis_INCLUDE_DIR AND Ogg_FOUND)
  122. set (Vorbis_Vorbis_FOUND TRUE)
  123. endif ()
  124. if (Vorbis_Enc_LIBRARY AND Vorbis_Enc_INCLUDE_DIR AND Vorbis_Vorbis_FOUND)
  125. set (Vorbis_Enc_FOUND TRUE)
  126. endif ()
  127. if (Vorbis_Vorbis_FOUND AND Vorbis_File_LIBRARY AND Vorbis_File_INCLUDE_DIR)
  128. set (Vorbis_File_FOUND TRUE)
  129. endif ()
  130. find_package_handle_standard_args (Vorbis
  131. REQUIRED_VARS
  132. Vorbis_Vorbis_LIBRARY
  133. Vorbis_Vorbis_INCLUDE_DIR
  134. Ogg_FOUND
  135. HANDLE_COMPONENTS
  136. VERSION_VAR Vorbis_VERSION)
  137. if (Vorbis_Vorbis_FOUND)
  138. set (Vorbis_Vorbis_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR})
  139. set (Vorbis_Vorbis_LIBRARIES ${VORBIS_LIBRARY} ${OGG_LIBRARIES})
  140. if (NOT TARGET Vorbis::vorbis)
  141. add_library (Vorbis::vorbis UNKNOWN IMPORTED)
  142. set_target_properties (Vorbis::vorbis PROPERTIES
  143. INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Vorbis_INCLUDE_DIR}"
  144. IMPORTED_LOCATION "${Vorbis_Vorbis_LIBRARY}"
  145. INTERFACE_LINK_LIBRARIES Ogg::ogg
  146. )
  147. endif ()
  148. if (Vorbis_Enc_FOUND)
  149. set (Vorbis_Enc_INCLUDE_DIRS ${Vorbis_Enc_INCLUDE_DIR})
  150. set (Vorbis_Enc_LIBRARIES ${Vorbis_Enc_LIBRARY} ${Vorbis_Enc_LIBRARIES})
  151. if (NOT TARGET Vorbis::vorbisenc)
  152. add_library (Vorbis::vorbisenc UNKNOWN IMPORTED)
  153. set_target_properties (Vorbis::vorbisenc PROPERTIES
  154. INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Enc_INCLUDE_DIR}"
  155. IMPORTED_LOCATION "${Vorbis_Enc_LIBRARY}"
  156. INTERFACE_LINK_LIBRARIES Vorbis::vorbis
  157. )
  158. endif ()
  159. endif ()
  160. if (Vorbis_File_FOUND)
  161. set (Vorbis_File_INCLUDE_DIRS ${Vorbis_File_INCLUDE_DIR})
  162. set (Vorbis_File_LIBRARIES ${Vorbis_File_LIBRARY} ${Vorbis_File_LIBRARIES})
  163. if (NOT TARGET Vorbis::vorbisfile)
  164. add_library (Vorbis::vorbisfile UNKNOWN IMPORTED)
  165. set_target_properties (Vorbis::vorbisfile PROPERTIES
  166. INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_File_INCLUDE_DIR}"
  167. IMPORTED_LOCATION "${Vorbis_File_LIBRARY}"
  168. INTERFACE_LINK_LIBRARIES Vorbis::vorbis
  169. )
  170. endif ()
  171. endif ()
  172. endif ()
  173. mark_as_advanced (Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_LIBRARY)
  174. mark_as_advanced (Vorbis_Enc_INCLUDE_DIR Vorbis_Enc_LIBRARY)
  175. mark_as_advanced (Vorbis_File_INCLUDE_DIR Vorbis_File_LIBRARY)