FindAMF.cmake 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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
  36. "${_version_string}")
  37. string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" _version_minor
  38. "${_version_string}")
  39. string(REGEX REPLACE ".*VERSION_RELEASE[ \t]+([0-9]+).*" "\\1"
  40. _version_release "${_version_string}")
  41. set(AMF_VERSION "${_version_major}.${_version_minor}.${_version_release}")
  42. unset(_version_major)
  43. unset(_version_minor)
  44. unset(_version_release)
  45. else()
  46. if(NOT AMF_FIND_QUIETLY)
  47. message(AUTHOR_WARNING "Failed to find AMF version.")
  48. endif()
  49. set(AMF_VERSION 0.0.0)
  50. endif()
  51. if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
  52. set(AMF_ERROR_REASON
  53. "Ensure that obs-deps is provided as part of CMAKE_PREFIX_PATH.")
  54. elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
  55. set(AMF_ERROR_REASON
  56. "Ensure AMF headers are available in local library paths.")
  57. endif()
  58. find_package_handle_standard_args(
  59. AMF
  60. REQUIRED_VARS AMF_INCLUDE_DIR
  61. VERSION_VAR AMF_VERSION REASON_FAILURE_MESSAGE "${AMF_ERROR_REASON}")
  62. mark_as_advanced(AMF_INCLUDE_DIR)
  63. unset(AMF_ERROR_REASON)
  64. if(AMF_FOUND)
  65. if(NOT TARGET AMF::AMF)
  66. add_library(AMF::AMF INTERFACE IMPORTED)
  67. set_target_properties(AMF::AMF PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
  68. "${AMF_INCLUDE_DIR}")
  69. endif()
  70. endif()
  71. include(FeatureSummary)
  72. set_package_properties(
  73. AMF PROPERTIES
  74. URL "https://github.com/GPUOpen-LibrariesAndSDKs/AMF"
  75. DESCRIPTION
  76. "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."
  77. )