diff options
author | Rolf Eike Beer <eike@sf-mail.de> | 2012-01-23 19:31:38 (GMT) |
---|---|---|
committer | Rolf Eike Beer <eike@sf-mail.de> | 2012-01-23 19:31:47 (GMT) |
commit | be2b108776b46b73508654322e7b4b24f404e191 (patch) | |
tree | 33eed190b0e89462c1fb4c3390fce21b97dbe0a0 /Modules/FindCups.cmake | |
parent | 86c9604f98b2271401cf7a53c251be51af15278c (diff) | |
download | CMake-be2b108776b46b73508654322e7b4b24f404e191.zip CMake-be2b108776b46b73508654322e7b4b24f404e191.tar.gz CMake-be2b108776b46b73508654322e7b4b24f404e191.tar.bz2 |
FindCups: major overhaul
This introduces CUPS_VERSION_STRING and ports the module over to use FPHSA for
all the benefits that come with it.
Diffstat (limited to 'Modules/FindCups.cmake')
-rw-r--r-- | Modules/FindCups.cmake | 65 |
1 files changed, 39 insertions, 26 deletions
diff --git a/Modules/FindCups.cmake b/Modules/FindCups.cmake index 7e3e10a..3862f7d 100644 --- a/Modules/FindCups.cmake +++ b/Modules/FindCups.cmake @@ -4,12 +4,14 @@ # 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) #============================================================================= # Copyright 2006-2009 Kitware, Inc. # Copyright 2006 Alexander Neundorf <neundorf@kde.org> +# Copyright 2012 Rolf Eike Beer <eike@sf-mail.de> # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -21,36 +23,47 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) -INCLUDE(CheckLibraryExists) +find_path(CUPS_INCLUDE_DIR cups/cups.h ) -FIND_PATH(CUPS_INCLUDE_DIR cups/cups.h ) +find_library(CUPS_LIBRARIES NAMES cups ) -FIND_LIBRARY(CUPS_LIBRARIES NAMES cups ) +if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE) + include(CheckLibraryExists) -IF (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES) - SET(CUPS_FOUND TRUE) + # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint) + CHECK_LIBRARY_EXISTS(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE) +endif (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE) - # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint) - CHECK_LIBRARY_EXISTS(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE) - IF (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE AND NOT CUPS_HAS_IPP_DELETE_ATTRIBUTE) - SET(CUPS_FOUND FALSE) - ENDIF (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE AND NOT CUPS_HAS_IPP_DELETE_ATTRIBUTE) +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]+$") -ELSE (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES) - SET(CUPS_FOUND FALSE) -ENDIF (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES) + unset(CUPS_VERSION_STRING) + foreach(VPART MAJOR MINOR PATCH) + foreach(VLINE ${cups_version_str}) + if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}") + string(REGEX REPLACE "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$" "\\1" + CUPS_VERSION_PART "${VLINE}") + if(CUPS_VERSION_STRING) + set(CUPS_VERSION_STRING "${CUPS_VERSION_STRING}.${CUPS_VERSION_PART}") + else(CUPS_VERSION_STRING) + set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}") + endif(CUPS_VERSION_STRING) + endif() + endforeach(VLINE) + endforeach(VPART) +endif (CUPS_INCLUDE_DIR AND EXISTS "${CUPS_INCLUDE_DIR}/cups/cups.h") -IF (CUPS_FOUND) - IF (NOT Cups_FIND_QUIETLY) - MESSAGE(STATUS "Found Cups: ${CUPS_LIBRARIES}") - ENDIF (NOT Cups_FIND_QUIETLY) -ELSE (CUPS_FOUND) - SET(CUPS_LIBRARIES ) - IF (Cups_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could NOT find Cups") - ENDIF (Cups_FIND_REQUIRED) -ENDIF (CUPS_FOUND) - - -MARK_AS_ADVANCED(CUPS_INCLUDE_DIR CUPS_LIBRARIES) +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) +else (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups + REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR + VERSION_VAR CUPS_VERSION_STRING) +endif (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE) +mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES) |