FindCups.cmake 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #[=======================================================================[.rst:
  4. FindCups
  5. --------
  6. Find the Common UNIX Printing System (CUPS).
  7. Set ``CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE`` to ``TRUE`` if you need a version which
  8. features this function (i.e. at least ``1.1.19``)
  9. Imported Targets
  10. ^^^^^^^^^^^^^^^^
  11. .. versionadded:: 3.15
  12. This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has
  13. been found.
  14. Result variables
  15. ^^^^^^^^^^^^^^^^
  16. This module will set the following variables in your project:
  17. ``CUPS_FOUND``
  18. true if CUPS headers and libraries were found
  19. ``CUPS_INCLUDE_DIRS``
  20. the directory containing the Cups headers
  21. ``CUPS_LIBRARIES``
  22. the libraries to link against to use CUPS.
  23. ``CUPS_VERSION_STRING``
  24. the version of CUPS found (since CMake 2.8.8)
  25. Cache variables
  26. ^^^^^^^^^^^^^^^
  27. The following cache variables may also be set:
  28. ``CUPS_INCLUDE_DIR``
  29. the directory containing the Cups headers
  30. #]=======================================================================]
  31. cmake_policy(PUSH)
  32. cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
  33. find_path(CUPS_INCLUDE_DIR cups/cups.h )
  34. find_library(CUPS_LIBRARIES NAMES cups )
  35. if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
  36. include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
  37. include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
  38. cmake_push_check_state()
  39. set(CMAKE_REQUIRED_QUIET ${Cups_FIND_QUIETLY})
  40. # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint)
  41. check_library_exists(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE)
  42. cmake_pop_check_state()
  43. endif ()
  44. if (CUPS_INCLUDE_DIR AND EXISTS "${CUPS_INCLUDE_DIR}/cups/cups.h")
  45. file(STRINGS "${CUPS_INCLUDE_DIR}/cups/cups.h" cups_version_str
  46. REGEX "^#[\t ]*define[\t ]+CUPS_VERSION_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
  47. unset(CUPS_VERSION_STRING)
  48. foreach(VPART MAJOR MINOR PATCH)
  49. foreach(VLINE ${cups_version_str})
  50. if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$")
  51. set(CUPS_VERSION_PART "${CMAKE_MATCH_1}")
  52. if(CUPS_VERSION_STRING)
  53. string(APPEND CUPS_VERSION_STRING ".${CUPS_VERSION_PART}")
  54. else()
  55. set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}")
  56. endif()
  57. endif()
  58. endforeach()
  59. endforeach()
  60. endif ()
  61. include(FindPackageHandleStandardArgs)
  62. if (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
  63. find_package_handle_standard_args(Cups
  64. REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR CUPS_HAS_IPP_DELETE_ATTRIBUTE
  65. VERSION_VAR CUPS_VERSION_STRING)
  66. else ()
  67. find_package_handle_standard_args(Cups
  68. REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
  69. VERSION_VAR CUPS_VERSION_STRING)
  70. endif ()
  71. mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)
  72. if (CUPS_FOUND)
  73. set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}")
  74. if (NOT TARGET Cups::Cups)
  75. add_library(Cups::Cups INTERFACE IMPORTED)
  76. set_target_properties(Cups::Cups PROPERTIES
  77. INTERFACE_LINK_LIBRARIES "${CUPS_LIBRARIES}"
  78. INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}")
  79. endif ()
  80. endif ()
  81. cmake_policy(POP)