FindCups.cmake 3.04 KB
Newer Older
1 2 3 4 5 6
#.rst:
# FindCups
# --------
#
# Try to find the Cups printing system
#
7 8
# Once done this will define
#
9 10 11 12 13 14 15 16
# ::
#
#   CUPS_FOUND - system has Cups
#   CUPS_INCLUDE_DIR - the Cups include directory
#   CUPS_LIBRARIES - Libraries needed to use Cups
#   CUPS_VERSION_STRING - version of Cups found (since CMake 2.8.8)
#   Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which
#   features this function (i.e. at least 1.1.19)
17

18 19 20
#=============================================================================
# Copyright 2006-2009 Kitware, Inc.
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
Rolf Eike Beer's avatar
Rolf Eike Beer committed
21
# Copyright 2012 Rolf Eike Beer <eike@sf-mail.de>
22
#
23 24 25 26 27 28 29
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
30
# (To distribute this file outside of CMake, substitute the full
31
#  License text for the above reference.)
32

Rolf Eike Beer's avatar
Rolf Eike Beer committed
33
find_path(CUPS_INCLUDE_DIR cups/cups.h )
34

Rolf Eike Beer's avatar
Rolf Eike Beer committed
35
find_library(CUPS_LIBRARIES NAMES cups )
36

Rolf Eike Beer's avatar
Rolf Eike Beer committed
37
if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
38
    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
39 40 41
    include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
    cmake_push_check_state()
    set(CMAKE_REQUIRED_QUIET ${Cups_FIND_QUIETLY})
42

Rolf Eike Beer's avatar
Rolf Eike Beer committed
43 44
    # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint)
    CHECK_LIBRARY_EXISTS(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE)
45
    cmake_pop_check_state()
46
endif ()
47

Rolf Eike Beer's avatar
Rolf Eike Beer committed
48 49 50
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]+$")
51

Rolf Eike Beer's avatar
Rolf Eike Beer committed
52 53 54
    unset(CUPS_VERSION_STRING)
    foreach(VPART MAJOR MINOR PATCH)
        foreach(VLINE ${cups_version_str})
55 56
            if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$")
                set(CUPS_VERSION_PART "${CMAKE_MATCH_1}")
Rolf Eike Beer's avatar
Rolf Eike Beer committed
57 58
                if(CUPS_VERSION_STRING)
                    set(CUPS_VERSION_STRING "${CUPS_VERSION_STRING}.${CUPS_VERSION_PART}")
59
                else()
Rolf Eike Beer's avatar
Rolf Eike Beer committed
60
                    set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}")
61
                endif()
Rolf Eike Beer's avatar
Rolf Eike Beer committed
62
            endif()
63 64 65
        endforeach()
    endforeach()
endif ()
66

Rolf Eike Beer's avatar
Rolf Eike Beer committed
67 68 69 70 71 72
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)

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_STRING)
73
else ()
Rolf Eike Beer's avatar
Rolf Eike Beer committed
74 75 76
    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
                                      VERSION_VAR CUPS_VERSION_STRING)
77
endif ()
78

Rolf Eike Beer's avatar
Rolf Eike Beer committed
79
mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)