FindWebsocketpp.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #[=======================================================================[.rst
  2. FindWebsocketpp
  3. ----------
  4. FindModule for WebSocket++ and the associated library
  5. Imported Targets
  6. ^^^^^^^^^^^^^^^^
  7. .. versionadded:: 2.0
  8. This module defines the :prop_tgt:`IMPORTED` target ``Websocketpp::Websocketpp``.
  9. Result Variables
  10. ^^^^^^^^^^^^^^^^
  11. This module sets the following variables:
  12. ``Websocketpp_FOUND``
  13. True, if the library was found.
  14. ``Websocketpp_VERSION``
  15. Detected version of found Websocketpp library.
  16. Cache variables
  17. ^^^^^^^^^^^^^^^
  18. The following cache variables may also be set:
  19. ``Websocketpp_INCLUDE_DIR``
  20. Directory containing ``websocketpp/client.hpp``.
  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. Websocketpp_INCLUDE_DIR
  29. NAMES websocketpp/client.hpp
  30. PATHS /usr/include /usr/local/include
  31. DOC "WebSocket++ include directory")
  32. if(EXISTS "${Websocketpp_INCLUDE_DIR}/websocketpp/version.hpp")
  33. file(STRINGS "${Websocketpp_INCLUDE_DIR}/websocketpp/version.hpp"
  34. _version_string
  35. REGEX "^.*(major|minor|patch)_version[ \t]+=[ \t]+[0-9]+")
  36. string(REGEX REPLACE ".*major_version[ \t]+=[ \t]+([0-9]+).*" "\\1"
  37. _version_major "${_version_string}")
  38. string(REGEX REPLACE ".*minor_version[ \t]+=[ \t]+([0-9]+).*" "\\1"
  39. _version_minor "${_version_string}")
  40. string(REGEX REPLACE ".*patch_version[ \t]+=[ \t]+([0-9]+).*" "\\1"
  41. _version_patch "${_version_string}")
  42. set(Websocketpp_VERSION
  43. "${_version_major}.${_version_minor}.${_version_patch}")
  44. unset(_version_major)
  45. unset(_version_minor)
  46. unset(_version_patch)
  47. else()
  48. if(NOT Websocketpp_FIND_QUIETLY)
  49. message(AUTHOR_WARNING "Failed to find WebSocket++ version.")
  50. endif()
  51. set(Websocketpp_VERSION 0.0.0)
  52. endif()
  53. if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
  54. set(Websocketpp_ERROR_REASON
  55. "Ensure that obs-deps is provided as part of CMAKE_PREFIX_PATH.")
  56. elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
  57. set(Websocketpp_ERROR_REASON
  58. "Ensure WebSocket++ library is available in local include paths.")
  59. endif()
  60. find_package_handle_standard_args(
  61. Websocketpp
  62. REQUIRED_VARS Websocketpp_INCLUDE_DIR
  63. VERSION_VAR Websocketpp_VERSION REASON_FAILURE_MESSAGE
  64. "${Websocketpp_ERROR_REASON}")
  65. mark_as_advanced(Websocketpp_INCLUDE_DIR)
  66. unset(Websocketpp_ERROR_REASON)
  67. if(Websocketpp_FOUND)
  68. if(NOT TARGET Websocketpp::Websocketpp)
  69. add_library(Websocketpp::Websocketpp INTERFACE IMPORTED)
  70. set_target_properties(
  71. Websocketpp::Websocketpp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
  72. "${Websocketpp_INCLUDE_DIR}")
  73. endif()
  74. endif()
  75. include(FeatureSummary)
  76. set_package_properties(
  77. Websocketpp PROPERTIES
  78. URL "https://www.zaphoyd.com/websocketpp/"
  79. DESCRIPTION
  80. "WebSocket++ is a header only C++ library that implements RFC6455 The WebSocket Protocol."
  81. )