FindWebsocketpp.cmake 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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" _version_string
  34. REGEX "^.*(major|minor|patch)_version[ \t]+=[ \t]+[0-9]+")
  35. string(REGEX REPLACE ".*major_version[ \t]+=[ \t]+([0-9]+).*" "\\1" _version_major "${_version_string}")
  36. string(REGEX REPLACE ".*minor_version[ \t]+=[ \t]+([0-9]+).*" "\\1" _version_minor "${_version_string}")
  37. string(REGEX REPLACE ".*patch_version[ \t]+=[ \t]+([0-9]+).*" "\\1" _version_patch "${_version_string}")
  38. set(Websocketpp_VERSION "${_version_major}.${_version_minor}.${_version_patch}")
  39. unset(_version_major)
  40. unset(_version_minor)
  41. unset(_version_patch)
  42. else()
  43. if(NOT Websocketpp_FIND_QUIETLY)
  44. message(AUTHOR_WARNING "Failed to find WebSocket++ version.")
  45. endif()
  46. set(Websocketpp_VERSION 0.0.0)
  47. endif()
  48. if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
  49. set(Websocketpp_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(Websocketpp_ERROR_REASON "Ensure WebSocket++ library is available in local include paths.")
  52. endif()
  53. find_package_handle_standard_args(
  54. Websocketpp
  55. REQUIRED_VARS Websocketpp_INCLUDE_DIR
  56. VERSION_VAR Websocketpp_VERSION REASON_FAILURE_MESSAGE "${Websocketpp_ERROR_REASON}")
  57. mark_as_advanced(Websocketpp_INCLUDE_DIR)
  58. unset(Websocketpp_ERROR_REASON)
  59. if(Websocketpp_FOUND)
  60. if(NOT TARGET Websocketpp::Websocketpp)
  61. add_library(Websocketpp::Websocketpp INTERFACE IMPORTED)
  62. set_target_properties(Websocketpp::Websocketpp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
  63. "${Websocketpp_INCLUDE_DIR}")
  64. endif()
  65. endif()
  66. include(FeatureSummary)
  67. set_package_properties(
  68. Websocketpp PROPERTIES
  69. URL "https://www.zaphoyd.com/websocketpp/"
  70. DESCRIPTION "WebSocket++ is a header only C++ library that implements RFC6455 The WebSocket Protocol.")