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>
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

33
find_path(CUPS_INCLUDE_DIR cups/cups.h )
34

35
find_library(CUPS_LIBRARIES NAMES cups )
36

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

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

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

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}")
57 58
                if(CUPS_VERSION_STRING)
                    set(CUPS_VERSION_STRING "${CUPS_VERSION_STRING}.${CUPS_VERSION_PART}")
59
                else()
60
                    set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}")
61
                endif()
62
            endif()
63 64 65
        endforeach()
    endforeach()
endif ()
66

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 ()
74 75 76
    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
                                      VERSION_VAR CUPS_VERSION_STRING)
77
endif ()
78

79
mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)