[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdelibs] cmake/modules: Patch FindKipi.cmake to find new libkipi
From:       Victor Dodon <dodonvictor () gmail ! com>
Date:       2012-12-26 21:43:16
Message-ID: 20121226214316.EA8B2A6091 () git ! kde ! org
[Download RAW message or body]

Git commit 1ee13fb1fc22b1d53b52da2884a7765164984052 by Victor Dodon.
Committed on 26/12/2012 at 22:43.
Pushed by dodon into branch 'master'.

Patch FindKipi.cmake to find new libkipi

BUG: 307213
CCMAIL: caulier.gilles@gmail.com

M  +123  -106  cmake/modules/FindKipi.cmake

http://commits.kde.org/kdelibs/1ee13fb1fc22b1d53b52da2884a7765164984052

diff --git a/cmake/modules/FindKipi.cmake b/cmake/modules/FindKipi.cmake
index 13521e5..5024450 100644
--- a/cmake/modules/FindKipi.cmake
+++ b/cmake/modules/FindKipi.cmake
@@ -1,116 +1,133 @@
-# - Try to find the Kipi library
+# Module that tries to find the Kipi library
 #
-# If you have put a local version of libkipi into your source tree,
-# set KIPI_LOCAL_DIR to the relative path to the local directory.
+# Input values :
 #
-# Once done this will define
+# KIPI_LOCAL_DIR    - If you have put a local version of libkipi into your source \
tree, +#                     set this variable to the relative path from the local \
directory.  #
-#  KIPI_FOUND - system has libkipi
-#  KIPI_INCLUDE_DIR - the libkipi include directory
-#  KIPI_LIBRARIES - Link these to use libkipi
+# Output values :
+#
+#  KIPI_FOUND       - System has libkipi
+#  KIPI_INCLUDE_DIR - The libkipi include directory
+#  KIPI_LIBRARIES   - Link these to use libkipi
 #  KIPI_DEFINITIONS - Compiler switches required for using libkipi
+#  KIPI_VERSION     - The release version of the Kipi library
+#  KIPI_SO_VERSION  - The binary SO version of the Kipi library
 #
 
-# Copyright (c) 2008, Gilles Caulier, <caulier.gilles@gmail.com>
+# Copyright (c) 2012, Victor Dodon <dodonvictor at gmail dot com>
+# Copyright (c) 2012, Gilles Caulier <caulier dot gilles at gmail dot com>
 #
 # Redistribution and use is allowed according to the terms of the BSD license.
 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
 
-if (KIPI_INCLUDE_DIR AND KIPI_LIBRARIES AND KIPI_DEFINITIONS)
-
-  message(STATUS "Found Kipi library in cache: ${KIPI_LIBRARIES}")
-
-  # in cache already
-  set(KIPI_FOUND TRUE)
-
-else (KIPI_INCLUDE_DIR AND KIPI_LIBRARIES AND KIPI_DEFINITIONS)
-
-  message(STATUS "Check Kipi library in local sub-folder...")
-
-  # Check if library is not in local sub-folder
-
-  if (KIPI_LOCAL_DIR)
-    set (KIPI_LOCAL_FOUND TRUE)
-  else (KIPI_LOCAL_DIR)
-    find_file(KIPI_LOCAL_FOUND libkipi/kipi.h ${CMAKE_SOURCE_DIR}/libkipi \
                ${CMAKE_SOURCE_DIR}/libs/libkipi NO_DEFAULT_PATH)
-
-    if (KIPI_LOCAL_FOUND)
-      # Was it found in libkdcraw/ or in libs/libkdcraw?
-      find_file(KIPI_LOCAL_FOUND_IN_LIBS libkipi/kipi.h \
                ${CMAKE_SOURCE_DIR}/libs/libkipi NO_DEFAULT_PATH)
-      if (KIPI_LOCAL_FOUND_IN_LIBS)
-        set(KIPI_LOCAL_DIR libs/libkipi)
-      else (KIPI_LOCAL_FOUND_IN_LIBS)
-        set(KIPI_LOCAL_DIR libkipi)
-      endif (KIPI_LOCAL_FOUND_IN_LIBS)
-    endif (KIPI_LOCAL_FOUND)
-  endif (KIPI_LOCAL_DIR)
-
-  if (KIPI_LOCAL_FOUND)
-    # we need two include directories: because the version.h file is put into the \
                build directory
-    # TODO KIPI_INCLUDE_DIR sounds like it should contain only one directory...
-    set(KIPI_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR} \
                ${CMAKE_BINARY_DIR}/${KIPI_LOCAL_DIR})
-    set(KIPI_DEFINITIONS "-I${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR}" \
                "-I${CMAKE_BINARY_DIR}/${KIPI_LOCAL_DIR}")
-    set(KIPI_LIBRARIES kipi)
-    message(STATUS "Found Kipi library in local sub-folder: \
                ${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR}")
-    set(KIPI_FOUND TRUE)
-    mark_as_advanced(KIPI_INCLUDE_DIR KIPI_LIBRARIES KIPI_DEFINITIONS)
-
-  else (KIPI_LOCAL_FOUND)
-
-    if (NOT WIN32)
-      message(STATUS "Check Kipi library using pkg-config...")
-
-      # use pkg-config to get the directories and then use these values
-      # in the FIND_PATH() and FIND_LIBRARY() calls
-      include(UsePkgConfig)
-
-      PKGCONFIG(libkipi _KIPIIncDir _KIPILinkDir _KIPILinkFlags _KIPICflags)
-
-      if (_KIPILinkFlags)
-        # query pkg-config asking for a libkipi >= 0.2.0
-        exec_program(${PKGCONFIG_EXECUTABLE} ARGS --atleast-version=0.2.0 libkipi \
                RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
-        if (_return_VALUE STREQUAL "0")
-            message(STATUS "Found libkipi release >= 0.2.0")
-            set(KIPI_VERSION_GOOD_FOUND TRUE)
-        else (_return_VALUE STREQUAL "0")
-            message(STATUS "Found libkipi release < 0.2.0, too old")
-            set(KIPI_VERSION_GOOD_FOUND FALSE)
-            set(KIPI_FOUND FALSE)
-        endif (_return_VALUE STREQUAL "0")
-      else (_KIPILinkFlags)
-        set(KIPI_VERSION_GOOD_FOUND FALSE)
-        set(KIPI_FOUND FALSE)
-      endif (_KIPILinkFlags)
-    else (NOT WIN32)
-      set(KIPI_VERSION_GOOD_FOUND TRUE)
-    endif (NOT WIN32)
-    if (KIPI_VERSION_GOOD_FOUND)
-        set(KIPI_DEFINITIONS ${_KIPICflags})
-
-        find_path(KIPI_INCLUDE_DIR NAMES libkipi/version.h PATHS ${KDE4_INCLUDE_DIR} \
                ${_KIPIIncDir})
-        find_library(KIPI_LIBRARIES NAMES kipi PATHS ${KDE4_LIB_DIR} \
                ${_KIPILinkDir})
-
-        if (KIPI_INCLUDE_DIR AND KIPI_LIBRARIES)
-            set(KIPI_FOUND TRUE)
-        endif (KIPI_INCLUDE_DIR AND KIPI_LIBRARIES)
-      endif (KIPI_VERSION_GOOD_FOUND)
-      if (KIPI_FOUND)
-          if (NOT Kipi_FIND_QUIETLY)
-              message(STATUS "Found libkipi: ${KIPI_LIBRARIES}")
-          endif (NOT Kipi_FIND_QUIETLY)
-      else (KIPI_FOUND)
-          if (Kipi_FIND_REQUIRED)
-              if (NOT KIPI_INCLUDE_DIR)
-                  message(FATAL_ERROR "Could NOT find libkipi header files")
-              endif (NOT KIPI_INCLUDE_DIR)
-              if (NOT KIPI_LIBRARIES)
-                  message(FATAL_ERROR "Could NOT find libkipi library")
-              endif (NOT KIPI_LIBRARIES)
-          endif (Kipi_FIND_REQUIRED)
-      endif (KIPI_FOUND)
-
-    mark_as_advanced(KIPI_INCLUDE_DIR KIPI_LIBRARIES KIPI_DEFINITIONS)
-
-  endif (KIPI_LOCAL_FOUND)
-  
-endif (KIPI_INCLUDE_DIR AND KIPI_LIBRARIES AND KIPI_DEFINITIONS)
+IF("${Kipi_FIND_VERSION}" STREQUAL "")
+    SET(Kipi_FIND_VERSION "1.2.0")
+    MESSAGE(STATUS "No Kipi library version required. Check default version : \
${Kipi_FIND_VERSION}") +ELSE()
+    MESSAGE(STATUS "Kipi library version required : ${Kipi_FIND_VERSION}")
+ENDIF()
+
+IF(KIPI_INCLUDE_DIR AND KIPI_LIBRARIES AND KIPI_DEFINITIONS AND KIPI_VERSION AND \
KIPI_SO_VERSION) +
+  IF(NOT Kipi_FIND_QUIETLY)
+    MESSAGE(STATUS "Found kipi library in cache ${KIPI_LIBRARIES}")
+  ENDIF(NOT Kipi_FIND_QUIETLY)
+  # Already in cache
+  SET(KIPI_FOUND TRUE)
+
+ELSE(KIPI_INCLUDE_DIR AND KIPI_LIBRARIES AND KIPI_DEFINITIONS AND KIPI_VERSION AND \
KIPI_SO_VERSION) +
+  IF(NOT Kipi_FIND_QUIETLY)
+    MESSAGE(STATUS "Check Kipi library in local sub-folder...")
+  ENDIF(NOT Kipi_FIND_QUIETLY)
+
+  IF(KIPI_LOCAL_DIR)
+    FIND_FILE(KIPI_LOCAL_FOUND libkipi/version.h.cmake \
${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR} NO_DEFAULT_PATH) +    IF(NOT KIPI_LOCAL_FOUND)
+      MESSAGE(WARNING "KIPI_LOCAL_DIR specified as \"${KIPI_LOCAL_DIR}\" but libkipi \
could not be found there.") +    ENDIF(NOT KIPI_LOCAL_FOUND)
+  ELSE(KIPI_LOCAL_DIR)
+    FIND_FILE(KIPI_LOCAL_FOUND libkipi/version.h.cmake ${CMAKE_SOURCE_DIR}/libkipi \
NO_DEFAULT_PATH) +    IF(KIPI_LOCAL_FOUND)
+      SET(KIPI_LOCAL_DIR libkipi)
+    ENDIF(KIPI_LOCAL_FOUND)
+
+    FIND_FILE(KIPI_LOCAL_FOUND libkipi/version.h.cmake \
${CMAKE_SOURCE_DIR}/libs/libkipi NO_DEFAULT_PATH) +    IF(KIPI_LOCAL_FOUND)
+      SET(KIPI_LOCAL_DIR libs/libkipi)
+    ENDIF(KIPI_LOCAL_FOUND)
+  ENDIF(KIPI_LOCAL_DIR)
+
+  IF(KIPI_LOCAL_FOUND)
+
+    SET(KIPI_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR}" \
"${CMAKE_BINARY_DIR}/${KIPI_LOCAL_DIR}") +    SET(KIPI_DEFINITIONS \
"-I${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR}" "-I${CMAKE_BINARY_DIR}/${KIPI_LOCAL_DIR}") \
+    SET(KIPI_LIBRARIES kipi) +    IF(NOT Kipi_FIND_QUIETLY)
+      MESSAGE(STATUS "Found Kipi library in local sub-folder: \
${CMAKE_SOURCE_DIR}/${KIPI_LOCAL_DIR}") +    ENDIF(NOT Kipi_FIND_QUIETLY)
+    SET(KIPI_FOUND TRUE)
+    SET(KIPI_VERSION_H_FILENAME \
"${CMAKE_BINARY_DIR}/${KIPI_LOCAL_DIR}/libkipi/version.h") +
+  ELSE(KIPI_LOCAL_FOUND)
+
+    IF(NOT WIN32)
+      IF(NOT Kipi_FIND_QUIETLY)
+        MESSAGE(STATUS "Check Kipi library using pkg-config...")
+      ENDIF(NOT Kipi_FIND_QUIETLY)
+
+      INCLUDE(FindPkgConfig)
+      PKG_CHECK_MODULES(KIPI libkipi>=${Kipi_FIND_VERSION})
+    ENDIF(NOT WIN32)
+
+    FIND_LIBRARY(KIPI_LIBRARIES NAMES libkipi PATHS ${KIPI_LIBRARY_DIRS} \
${LIB_INSTALL_DIR} ${KDE4_LIB_DIR}) +    FIND_PATH(KIPI_INCLUDE_DIR NAMES \
libkipi/version.h PATHS ${KIPI_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} \
${KDE4_INCLUDE_DIR}) +    SET(KIPI_VERSION_H_FILENAME \
"${KIPI_INCLUDE_DIR}/libkipi/version.h") +    SET(KIPI_DEFINITIONS ${KIPI_CFLAGS} \
CACHE STRING "Kipi defintions") +
+    INCLUDE(FindPackageHandleStandardArgs)
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(KIPI DEFAULT_MSG KIPI_LIBRARIES \
KIPI_INCLUDE_DIR) +
+  ENDIF(KIPI_LOCAL_FOUND)
+
+  IF(KIPI_FOUND)
+
+    IF(NOT KIPI_VERSION)
+      FILE(READ "${KIPI_VERSION_H_FILENAME}" KIPI_VERSION_H_CONTENT)
+      STRING(REGEX REPLACE ".*static +const +char +kipi_version\\[\\] += \
+\"([^\"]+)\".*" "\\1" KIPI_VERSION "${KIPI_VERSION_H_CONTENT}") +      \
MESSAGE(STATUS "Kipi library version: ${KIPI_VERSION}") +    ENDIF(NOT KIPI_VERSION)
+
+    IF(NOT KIPI_SO_VERSION)
+      FILE(READ "${KIPI_VERSION_H_FILENAME}" KIPI_VERSION_H_CONTENT)
+      STRING(REGEX REPLACE
+             ".*static +const +int +kipi_binary_version +=  ([^ ;]+).*"
+             "\\1"
+             KIPI_SO_VERSION_FOUND
+             "${KIPI_VERSION_H_CONTENT}"
+            )
+      SET(KIPI_SO_VERSION ${KIPI_SO_VERSION_FOUND} CACHE STRING "libkipi so \
version") +      MESSAGE(STATUS "Kipi library SO binary version: ${KIPI_SO_VERSION}")
+    ENDIF(NOT KIPI_SO_VERSION)
+
+    UNSET(KIPI_VERSION_H_CONTENT)
+    UNSET(KIPI_VERSION_H_FILENAME)
+  ENDIF(KIPI_FOUND)
+
+  IF(KIPI_FOUND)
+    MESSAGE(STATUS "libkipi: Found version ${KIPI_VERSION} (required: \
${Kipi_FIND_VERSION})") +    IF(${KIPI_VERSION} VERSION_LESS ${Kipi_FIND_VERSION})
+        SET(KIPI_FOUND FALSE)
+    ELSE()
+        MARK_AS_ADVANCED(KIPI_INCLUDE_DIR KIPI_LIBRARIES KIPI_DEFINITIONS \
KIPI_VERSION KIPI_SO_VERSION) +    ENDIF()
+  ELSE(KIPI_FOUND)
+    UNSET(KIPI_INCLUDE_DIR)
+    UNSET(KIPI_LIBRARIES)
+    UNSET(KIPI_DEFINITIONS)
+    UNSET(KIPI_VERSION)
+    UNSET(KIPI_SO_VERSION)
+  ENDIF(KIPI_FOUND)
+
+ENDIF(KIPI_INCLUDE_DIR AND KIPI_LIBRARIES AND KIPI_DEFINITIONS AND KIPI_VERSION AND \
KIPI_SO_VERSION)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic