FindVPL.cmake 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #[=======================================================================[.rst
  2. FindVPL
  3. -------
  4. FindModule for VPL and associated headers
  5. Imported Targets
  6. ^^^^^^^^^^^^^^^^
  7. .. versionadded:: 3.0
  8. This module defines the :prop_tgt:`IMPORTED` target ``VPL::VPL``.
  9. Result Variables
  10. ^^^^^^^^^^^^^^^^
  11. This module sets the following variables:
  12. ``VPL_FOUND``
  13. True, if headers were found.
  14. ``VPL_VERSION``
  15. Detected version of found VPL headers.
  16. ``VPL_LIBRARIES``
  17. Libraries needed to link to VPL.
  18. Cache variables
  19. ^^^^^^^^^^^^^^^
  20. The following cache variables may also be set:
  21. ``VPL_INCLUDE_DIR``
  22. Directory containing ``mfxdispatcher.h``.
  23. ``VPL_LIBRARY_RELEASE``
  24. Path to the library component of VPL in non-debug configuration.
  25. ``VPL_LIBRARY_DEBUG``
  26. Optional path to the library component of VPL in debug configuration.
  27. #]=======================================================================]
  28. find_package(PkgConfig QUIET)
  29. if(PKG_CONFIG_FOUND)
  30. pkg_search_module(_VPL QUIET vpl)
  31. endif()
  32. find_path(
  33. VPL_INCLUDE_DIR
  34. NAMES vpl/mfxstructures.h
  35. HINTS ${_VPL_INCLUDE_DIRS} ${_VPL_INCLUDE_DIRS}
  36. PATHS /usr/include /usr/local/include /opt/local/include /sw/include
  37. DOC "VPL include directory"
  38. )
  39. find_library(
  40. VPL_LIBRARY_RELEASE
  41. NAMES ${_VPL_LIBRARIES} ${_VPL_LIBRARIES} vpl
  42. HINTS ${_VPL_LIBRARY_DIRS} ${_VPL_LIBRARY_DIRS}
  43. PATHS /usr/lib /usr/local/lib /opt/local/lib /sw/lib
  44. DOC "VPL library location"
  45. )
  46. find_library(
  47. VPL_LIBRARY_DEBUG
  48. NAMES ${_VPL_LIBRARIES} ${_VPL_LIBRARIES} vpld
  49. HINTS ${_VPL_LIBRARY_DIRS} ${_VPL_LIBRARY_DIRS}
  50. PATHS /usr/lib /usr/local/lib /opt/local/lib /sw/lib
  51. DOC "VPL debug library location"
  52. )
  53. include(SelectLibraryConfigurations)
  54. select_library_configurations(VPL)
  55. include(FindPackageHandleStandardArgs)
  56. find_package_handle_standard_args(
  57. VPL
  58. REQUIRED_VARS VPL_LIBRARY VPL_INCLUDE_DIR
  59. VERSION_VAR VPL_VERSION
  60. REASON_FAILURE_MESSAGE "${VPL_ERROR_REASON}"
  61. )
  62. mark_as_advanced(VPL_INCLUDE_DIR VPL_LIBRARY)
  63. unset(VPL_ERROR_REASON)
  64. if(EXISTS "${VPL_INCLUDE_DIR}/vpl/mfxdefs.h")
  65. file(STRINGS "${VPL_INCLUDE_DIR}/vpl/mfxdefs.h" _version_string REGEX "^.*VERSION_(MAJOR|MINOR)[ \t]+[0-9]+[ \t]*$")
  66. string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" _version_major "${_version_string}")
  67. string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" _version_minor "${_version_string}")
  68. set(VPL_VERSION "${_version_major}.${_version_minor}")
  69. unset(_version_major)
  70. unset(_version_minor)
  71. else()
  72. if(NOT VPL_FIND_QUIETLY)
  73. message(AUTHOR_WARNING "Failed to find VPL version.")
  74. endif()
  75. set(VPL_VERSION 0.0.0)
  76. endif()
  77. if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
  78. set(VPL_ERROR_REASON "Ensure that obs-deps is provided as part of CMAKE_PREFIX_PATH.")
  79. elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
  80. set(VPL_ERROR_REASON "Ensure VPL headers are available in local library paths.")
  81. endif()
  82. if(VPL_FOUND)
  83. set(VPL_INCLUDE_DIRS ${VPL_INCLUDE_DIR})
  84. set(VPL_LIBRARIES ${VPL_LIBRARY})
  85. if(NOT TARGET VPL::VPL)
  86. if(IS_ABSOLUTE "${VPL_LIBRARY_RELEASE}")
  87. add_library(VPL::VPL UNKNOWN IMPORTED)
  88. set_target_properties(VPL::VPL PROPERTIES IMPORTED_LOCATION "${VPL_LIBRARY_RELEASE}")
  89. else()
  90. add_library(VPL::VPL INTERFACE IMPORTED)
  91. set_target_properties(VPL::VPL PROPERTIES IMPORTED_LIBNAME "${VPL_LIBRARY_RELEASE}")
  92. endif()
  93. set_target_properties(
  94. VPL::VPL
  95. PROPERTIES
  96. INTERFACE_INCLUDE_DIRECTORIES "${VPL_INCLUDE_DIRS}"
  97. VERSION ${VPL_VERSION}
  98. IMPORTED_CONFIGURATIONS Release
  99. )
  100. if(VPL_LIBRARY_DEBUG)
  101. if(IS_ABSOLUTE "${VPL_LIBRARY_DEBUG}")
  102. set_target_properties(VPL::VPL PROPERTIES IMPORTED_LOCATION_DEBUG "${VPL_LIBRARY_DEBUG}")
  103. else()
  104. set_target_properties(VPL::VPL PROPERTIES IMPORTED_LIBNAME_DEBUG "${VPL_LIBRARY_DEBUG}")
  105. endif()
  106. set_property(TARGET VPL::VPL APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
  107. endif()
  108. endif()
  109. endif()
  110. include(FeatureSummary)
  111. set_package_properties(
  112. VPL
  113. PROPERTIES
  114. URL "https://github.com/oneapi-src/oneVPL"
  115. DESCRIPTION
  116. "Intel® oneAPI Video Processing Library (oneVPL) supports AI visual inference, media delivery, cloud gaming, and virtual desktop infrastructure use cases by providing access to hardware accelerated video decode, encode, and frame processing capabilities on Intel® GPUs."
  117. )