File: FindCups.cmake

package info (click to toggle)
cmake 4.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 152,312 kB
  • sloc: ansic: 403,890; cpp: 303,778; sh: 4,097; python: 3,582; yacc: 3,106; lex: 1,279; f90: 534; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 235; objc: 215; perl: 213; xml: 198; makefile: 108; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (153 lines) | stat: -rw-r--r-- 4,394 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
FindCups
--------

Finds the Common UNIX Printing System (CUPS):

.. code-block:: cmake

  find_package(Cups [<version>] [...])

Imported Targets
^^^^^^^^^^^^^^^^

This module provides the following :ref:`Imported Targets`:

``Cups::Cups``
  .. versionadded:: 3.15

  Target encapsulating the CUPS usage requirements, available only if CUPS is
  found.

Result Variables
^^^^^^^^^^^^^^^^

This module defines the following variables:

``Cups_FOUND``
  .. versionadded:: 3.3

  Boolean indicating whether (the requested version of) CUPS was found.

``Cups_VERSION``
  .. versionadded:: 4.2

  The version of CUPS found.

``CUPS_INCLUDE_DIRS``
  Include directories needed for using CUPS.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``CUPS_INCLUDE_DIR``
  The directory containing the CUPS headers.

``CUPS_LIBRARIES``
  Libraries needed to link against to use CUPS.

Hints
^^^^^

This module accepts the following variables:

``CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE``
  Set this variable to ``TRUE`` to require CUPS version which features the
  ``ippDeleteAttribute()`` function (i.e. at least of CUPS ``1.1.19``).

Deprecated Variables
^^^^^^^^^^^^^^^^^^^^

The following variables are provided for backward compatibility:

``CUPS_FOUND``
  .. deprecated:: 4.2
    Use ``Cups_FOUND``, which has the same value.

  Boolean indicating whether (the requested version of) CUPS was found.

``CUPS_VERSION_STRING``
  .. deprecated:: 4.2
    Superseded by the ``Cups_VERSION``.

  The version of CUPS found.

Examples
^^^^^^^^

Finding CUPS and linking it to a project target:

.. code-block:: cmake

  find_package(Cups)
  target_link_libraries(project_target PRIVATE Cups::Cups)
#]=======================================================================]

cmake_policy(PUSH)
cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>

find_path(CUPS_INCLUDE_DIR cups/cups.h )

find_library(CUPS_LIBRARIES NAMES cups )

if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
    include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
    cmake_push_check_state()
    set(CMAKE_REQUIRED_QUIET ${Cups_FIND_QUIETLY})

    # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint)
    check_library_exists(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE)
    cmake_pop_check_state()
endif ()

if (CUPS_INCLUDE_DIR AND EXISTS "${CUPS_INCLUDE_DIR}/cups/cups.h")
    file(STRINGS "${CUPS_INCLUDE_DIR}/cups/cups.h" cups_version_str
         REGEX "^#[\t ]*define[\t ]+CUPS_VERSION_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")

    unset(Cups_VERSION)
    foreach(VPART MAJOR MINOR PATCH)
        foreach(VLINE ${cups_version_str})
            if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$")
                set(CUPS_VERSION_PART "${CMAKE_MATCH_1}")
                if(Cups_VERSION)
                    string(APPEND Cups_VERSION ".${CUPS_VERSION_PART}")
                else()
                    set(Cups_VERSION "${CUPS_VERSION_PART}")
                endif()
            endif()
        endforeach()
    endforeach()
    set(CUPS_VERSION_STRING ${Cups_VERSION})
endif ()

include(FindPackageHandleStandardArgs)

if (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
    find_package_handle_standard_args(Cups
                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR CUPS_HAS_IPP_DELETE_ATTRIBUTE
                                      VERSION_VAR Cups_VERSION)
else ()
    find_package_handle_standard_args(Cups
                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
                                      VERSION_VAR Cups_VERSION)
endif ()

mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)

if (Cups_FOUND)
    set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}")
    if (NOT TARGET Cups::Cups)
        add_library(Cups::Cups INTERFACE IMPORTED)
        set_target_properties(Cups::Cups PROPERTIES
            INTERFACE_LINK_LIBRARIES      "${CUPS_LIBRARIES}"
            INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}")
    endif ()
endif ()

cmake_policy(POP)