FindAMF.cmake 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #[=======================================================================[.rst
  2. FindAMF
  3. -------
  4. FindModule for AMF and associated headers
  5. Imported Targets
  6. ^^^^^^^^^^^^^^^^
  7. .. versionadded:: 2.0
  8. This module defines the :prop_tgt:`IMPORTED` target ``AMF::AMF``.
  9. Result Variables
  10. ^^^^^^^^^^^^^^^^
  11. This module sets the following variables:
  12. ``AMF_FOUND``
  13. True, if headers were found.
  14. ``AMF_VERSION``
  15. Detected version of found AMF headers.
  16. Cache variables
  17. ^^^^^^^^^^^^^^^
  18. The following cache variables may also be set:
  19. ``AMF_INCLUDE_DIR``
  20. Directory containing ``AMF/core/Factory.h``.
  21. #]=======================================================================]
  22. include(FindPackageHandleStandardArgs)
  23. find_path(AMF_INCLUDE_DIR NAMES AMF/core/Factory.h PATHS /usr/include /usr/local/include DOC "AMF include directory")
  24. if(EXISTS "${AMF_INCLUDE_DIR}/AMF/core/Version.h")
  25. file(
  26. STRINGS
  27. "${AMF_INCLUDE_DIR}/AMF/core/Version.h"
  28. _version_string
  29. REGEX "^.*VERSION_(MAJOR|MINOR|RELEASE|BUILD_NUM)[ \t]+[0-9]+[ \t]*$"
  30. )
  31. string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" _version_major "${_version_string}")
  32. string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" _version_minor "${_version_string}")
  33. string(REGEX REPLACE ".*VERSION_RELEASE[ \t]+([0-9]+).*" "\\1" _version_release "${_version_string}")
  34. set(AMF_VERSION "${_version_major}.${_version_minor}.${_version_release}")
  35. unset(_version_major)
  36. unset(_version_minor)
  37. unset(_version_release)
  38. else()
  39. if(NOT AMF_FIND_QUIETLY)
  40. message(AUTHOR_WARNING "Failed to find AMF version.")
  41. endif()
  42. set(AMF_VERSION 0.0.0)
  43. endif()
  44. if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
  45. set(AMF_ERROR_REASON "Ensure that obs-deps is provided as part of CMAKE_PREFIX_PATH.")
  46. elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
  47. set(AMF_ERROR_REASON "Ensure AMF headers are available in local library paths.")
  48. endif()
  49. find_package_handle_standard_args(
  50. AMF
  51. REQUIRED_VARS AMF_INCLUDE_DIR
  52. VERSION_VAR AMF_VERSION
  53. REASON_FAILURE_MESSAGE "${AMF_ERROR_REASON}"
  54. )
  55. mark_as_advanced(AMF_INCLUDE_DIR)
  56. unset(AMF_ERROR_REASON)
  57. if(AMF_FOUND)
  58. if(NOT TARGET AMF::AMF)
  59. add_library(AMF::AMF INTERFACE IMPORTED)
  60. set_target_properties(AMF::AMF PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${AMF_INCLUDE_DIR}")
  61. endif()
  62. endif()
  63. include(FeatureSummary)
  64. set_package_properties(
  65. AMF
  66. PROPERTIES
  67. URL "https://github.com/GPUOpen-LibrariesAndSDKs/AMF"
  68. DESCRIPTION
  69. "AMF is a light-weight, portable multimedia framework that abstracts away most of the platform and API-specific details and allows for easy implementation of multimedia applications using a variety of technologies, such as DirectX 11, OpenGL, and OpenCL and facilitates an efficient interop between them."
  70. )