FindAMF.cmake 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. # cmake-format: off
  23. # cmake-lint: disable=C0103
  24. # cmake-lint: disable=C0301
  25. # cmake-format: on
  26. include(FindPackageHandleStandardArgs)
  27. find_path(
  28. AMF_INCLUDE_DIR
  29. NAMES AMF/core/Factory.h
  30. PATHS /usr/include /usr/local/include
  31. DOC "AMF include directory")
  32. if(EXISTS "${AMF_INCLUDE_DIR}/AMF/core/Version.h")
  33. file(STRINGS "${AMF_INCLUDE_DIR}/AMF/core/Version.h" _version_string
  34. REGEX "^.*VERSION_(MAJOR|MINOR|RELEASE|BUILD_NUM)[ \t]+[0-9]+[ \t]*$")
  35. string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" _version_major "${_version_string}")
  36. string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" _version_minor "${_version_string}")
  37. string(REGEX REPLACE ".*VERSION_RELEASE[ \t]+([0-9]+).*" "\\1" _version_release "${_version_string}")
  38. set(AMF_VERSION "${_version_major}.${_version_minor}.${_version_release}")
  39. unset(_version_major)
  40. unset(_version_minor)
  41. unset(_version_release)
  42. else()
  43. if(NOT AMF_FIND_QUIETLY)
  44. message(AUTHOR_WARNING "Failed to find AMF version.")
  45. endif()
  46. set(AMF_VERSION 0.0.0)
  47. endif()
  48. if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
  49. set(AMF_ERROR_REASON "Ensure that obs-deps is provided as part of CMAKE_PREFIX_PATH.")
  50. elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
  51. set(AMF_ERROR_REASON "Ensure AMF headers are available in local library paths.")
  52. endif()
  53. find_package_handle_standard_args(
  54. AMF
  55. REQUIRED_VARS AMF_INCLUDE_DIR
  56. VERSION_VAR AMF_VERSION REASON_FAILURE_MESSAGE "${AMF_ERROR_REASON}")
  57. mark_as_advanced(AMF_INCLUDE_DIR)
  58. unset(AMF_ERROR_REASON)
  59. if(AMF_FOUND)
  60. if(NOT TARGET AMF::AMF)
  61. add_library(AMF::AMF INTERFACE IMPORTED)
  62. set_target_properties(AMF::AMF PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${AMF_INCLUDE_DIR}")
  63. endif()
  64. endif()
  65. include(FeatureSummary)
  66. set_package_properties(
  67. AMF PROPERTIES
  68. URL "https://github.com/GPUOpen-LibrariesAndSDKs/AMF"
  69. DESCRIPTION
  70. "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."
  71. )