1# - Try to find libsoup 2# Find libsoup headers, libraries and the answer to all questions. 3# 4# LIBSOUP2_FOUND True if libsoup2 got found 5# LIBSOUP2_INCLUDE_DIRS Location of libsoup2 headers 6# LIBSOUP2_LIBRARIES List of libaries to use libsoup2 7# LIBSOUP2_LIBRARY_DIRS Location of libsoup2 library 8# 9# LIBSOUP22_FOUND True if libsoup2.2 got found 10# LIBSOUP22_INCLUDE_DIRS Location of libsoup2.2 headers 11# LIBSOUP22_LIBRARIES List of libaries to use libsoup2.2 12# LIBSOUP22_LIBRARY_DIRS Location of libsoup2.2 library 13# 14# LIBSOUP24_FOUND True if libsoup2.4 got found 15# LIBSOUP24_INCLUDE_DIRS Location of libsoup2.4 headers 16# LIBSOUP24_LIBRARIES List of libaries to use libsoup2.4 17# LIBSOUP24_LIBRARY_DIRS Location of libsoup2.4 library 18# 19# Set LIBSOUP2_MIN_VERSION to find libsoup2.2 or libsoup2.4 if only 20# one of both libraries is supported 21# 22# Don't use LIBSOUP2_MIN_VERSION if you want to support 23# libsoup2.2 and libsoup2.4. 24# Instead use LIBSPOUP22_MIN_VERSION and LIBSPOUP24_MIN_VERSION. 25# 26# Set LIBSPOUP22_MIN_VERSION to find libsoup2.2 which version is 27# greater than LIBSPOUP22_MIN_VERSION 28# 29# Set LIBSPOUP24_MIN_VERSION to find libsoup2.4 which version is 30# greater than LIBSPOUP24_MIN_VERSION 31# 32# WARNING: It is not possible to set LIBSPOUP22_MIN_VERSION 33# and support any version of libsoup2.4 at the same time. 34# In this situation you have to set LIBSPOUP24_MIN_VERSION also. 35# The same applies to LIBSPOUP24_MIN_VERSION and libsoup2.2. 36# 37# Copyright (c) 2007 Daniel Gollub <gollub@b1-systems.de> 38# Copyright (c) 2008 Bjoern Ricks <bjoern.ricks@gmail.com> 39# 40# Redistribution and use in source and binary forms, with or without 41# modification, are permitted provided that the following conditions 42# are met: 43# 44# 1. Redistributions of source code must retain the copyright 45# notice, this list of conditions and the following disclaimer. 46# 2. Redistributions in binary form must reproduce the copyright 47# notice, this list of conditions and the following disclaimer in the 48# documentation and/or other materials provided with the distribution. 49# 3. The name of the author may not be used to endorse or promote products 50# derived from this software without specific prior written permission. 51# 52# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 53# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 54# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 55# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 56# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 57# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 58# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 59# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 60# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 61# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 62# 63 64INCLUDE( FindPkgConfig ) 65 66IF ( LibSoup2_FIND_VERSION AND NOT LIBSOUP2_MIN_VERSION AND NOT LIBSOUP24_MIN_VERSION ) 67 SET( LIBSOUP2_MIN_VERSION "${LibSoup2_FIND_VERSION}" ) 68 SET( LIBSOUP24_MIN_VERSION "${LibSoup2_FIND_VERSION}" ) 69ENDIF ( LibSoup2_FIND_VERSION AND NOT LIBSOUP2_MIN_VERSION AND NOT LIBSOUP24_MIN_VERSION ) 70 71IF ( LibSoup2_FIND_REQUIRED ) 72 SET( _pkgconfig_REQUIRED "REQUIRED" ) 73ELSE( LibSoup2_FIND_REQUIRED ) 74 SET( _pkgconfig_REQUIRED "" ) 75ENDIF ( LibSoup2_FIND_REQUIRED ) 76 77IF ( LIBSOUP2_MIN_VERSION ) 78 STRING(REGEX REPLACE "^(2)(\\.)([0-9]*)(\\.?)(.*)" "\\3" LIBSOUP2_VERSION_MINOR "${LIBSOUP2_MIN_VERSION}") 79 IF ( LIBSOUP2_VERSION_MINOR EQUAL "2" ) 80 SET( LIBSOUP22_MIN_VERSION "${LIBSOUP2_MIN_VERSION}" ) 81 ELSE ( LIBSOUP2_VERSION_MINOR EQUAL "2" ) 82 SET( LIBSOUP24_MIN_VERSION "${LIBSOUP2_MIN_VERSION}" ) 83 ENDIF ( LIBSOUP2_VERSION_MINOR EQUAL "2" ) 84ENDIF ( LIBSOUP2_MIN_VERSION ) 85 86# try to find libsoup2.2>=LIBSOUP22_MIN_VERSION 87IF ( LIBSOUP22_MIN_VERSION ) 88 PKG_SEARCH_MODULE( LIBSOUP22 libsoup-2.2>=${LIBSOUP22_MIN_VERSION} libsoup2>=${LIBSOUP22_MIN_VERSION} ) 89ENDIF ( LIBSOUP22_MIN_VERSION ) 90 91# try to find libsoup2.4>=LIBSOUP24_MIN_VERSION 92IF ( LIBSOUP24_MIN_VERSION ) 93 PKG_SEARCH_MODULE( LIBSOUP24 libsoup-2.4>=${LIBSOUP24_MIN_VERSION} libsoup2>=${LIBSOUP24_MIN_VERSION} ) 94ENDIF ( LIBSOUP24_MIN_VERSION ) 95 96# try to find any version of libsoup2.4 if LIBSOUP22_MIN_VERSION is not set 97IF ( NOT LIBSOUP24_FOUND AND NOT LIBSOUP22_MIN_VERSION AND NOT LIBSOUP24_MIN_VERSION ) 98 PKG_SEARCH_MODULE( LIBSOUP24 libsoup-2.4 libsoup2 ) 99ENDIF ( NOT LIBSOUP24_FOUND AND NOT LIBSOUP22_MIN_VERSION AND NOT LIBSOUP24_MIN_VERSION ) 100 101# try to find any version of libsoup2.2 if LIBSOUP24_MIN_VERSION is not set 102IF ( NOT LIBSOUP22_FOUND AND NOT LIBSOUP24_MIN_VERSION AND NOT LIBSOUP24_MIN_VERSION ) 103 PKG_SEARCH_MODULE( LIBSOUP22 libsoup-2.2 libsoup2 ) 104ENDIF ( NOT LIBSOUP22_FOUND AND NOT LIBSOUP24_MIN_VERSION AND NOT LIBSOUP24_MIN_VERSION ) 105 106# set LIBSOUP2_ variables 107IF ( LIBSOUP24_FOUND ) 108 # prefer libsoup2.4 to libsoup2.2 if both are found 109 SET( LIBSOUP2_FOUND ${LIBSOUP24_FOUND} CACHE INTERNAL "" ) 110 SET( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP24_INCLUDE_DIRS} CACHE INTERNAL "" ) 111 SET( LIBSOUP2_LIBRARIES ${LIBSOUP24_LIBRARIES} CACHE INTERNAL "" ) 112 SET( LIBSOUP2_LIBRARY_DIRS ${LIBSOUP24_LIBRARY_DIRS} CACHE INTERNAL "" ) 113 SET( LIBSOUP2_VERSION ${LIBSOUP24_VERSION} CACHE INTERNAL "" ) 114ELSEIF ( LIBSOUP22_FOUND ) 115 SET( LIBSOUP2_FOUND ${LIBSOUP22_FOUND} CACHE INTERNAL "" ) 116 SET( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP22_INCLUDE_DIRS} CACHE INTERNAL "" ) 117 SET( LIBSOUP2_LIBRARIES ${LIBSOUP22_LIBRARIES} CACHE INTERNAL "" ) 118 SET( LIBSOUP2_LIBRARY_DIRS ${LIBSOUP22_LIBRARY_DIRS} CACHE INTERNAL "" ) 119 SET( LIBSOUP2_VERSION ${LIBSOUP22_VERSION} CACHE INTERNAL "" ) 120ELSEIF( PKG_CONFIG_FOUND AND LibSoup2_FIND_REQUIRED ) 121 # raise an error if both libs are not found 122 # and FIND_PACKAGE( LibSoup2 REQUIRED ) was called 123 MESSAGE( FATAL_ERROR "package libsoup2 not found" ) 124ENDIF ( LIBSOUP24_FOUND ) 125 126IF( NOT LIBSOUP2_FOUND AND NOT PKG_CONFIG_FOUND ) 127 # WARNING: 128 # This case is executed if pkg-config isn't installed. 129 # Currently in this case it is only checked if libsoup2.2 is available. 130 # Therefore please don't use this cmake module without pkg-config! 131 FIND_PATH( _libsoup2_include_DIR libsoup/soup.h PATH_SUFFIXES libsoup libsoup-2.2 ) 132 FIND_LIBRARY( _libsoup2_LIBRARY soup-2.2) 133 134 IF ( _libsoup2_include_DIR AND _libsoup2_LIBRARY ) 135 SET ( _libsoup2_FOUND TRUE ) 136 ENDIF ( _libsoup2_include_DIR AND _libsoup2_LIBRARY ) 137 138 IF ( _libsoup2_FOUND ) 139 SET ( LIBSOUP2_INCLUDE_DIRS ${_libsoup2_include_DIR} ) 140 SET ( LIBSOUP2_LIBRARIES ${_libsoup2_LIBRARY} ) 141 142 # find requited glib2 143 IF( NOT GLIB2_FOUND ) 144 FIND_PACKAGE( GLIB2 REQUIRED ) 145 IF ( GLIB2_FOUND ) 146 SET ( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP2_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS} ) 147 SET ( LIBSOUP2_LIBRARIES ${LIBSOUP2_LIBRARIES} ${GLIB2_LIBRARIES} ) 148 ENDIF ( GLIB2_FOUND ) 149 ENDIF( NOT GLIB2_FOUND ) 150 151 # find required libxml2 152 IF( NOT LIBXML2_FOUND ) 153 FIND_PACKAGE( LibXml2 REQUIRED ) 154 IF ( LIBXML2_FOUND ) 155 SET ( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP2_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIRS} ) 156 SET ( LIBSOUP2_LIBRARIES ${LIBSOUP2_LIBRARIES} ${LIBXML2_LIBRARIES} ) 157 ENDIF( LIBXML2_FOUND ) 158 ENDIF( NOT LIBXML2_FOUND ) 159 160 # find required gnutls 161 IF( NOT GNUTLS_FOUND ) 162 FIND_PACKAGE( GNUTLS REQUIRED ) 163 IF ( GNUTLS_FOUND ) 164 SET ( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP2_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIRS} ) 165 SET ( LIBSOUP2_LIBRARIES ${LIBSOUP2_LIBRARIES} ${GNUTLS_LIBRARIES} ) 166 ENDIF( GNUTLS_FOUND ) 167 ENDIF( NOT GNUTLS_FOUND ) 168 ENDIF ( _libsoup2_FOUND ) 169 170 MARK_AS_ADVANCED( _libsoup2_include_DIR _libsoup2_LIBRARY ) 171 172 # Report results 173 IF ( LIBSOUP2_LIBRARIES AND LIBSOUP2_INCLUDE_DIRS AND _libsoup2_FOUND ) 174 SET( LIBSOUP2_FOUND 1 ) 175 IF ( NOT LibSoup2_FIND_QUIETLY ) 176 MESSAGE( STATUS "Found libsoup2: ${_libsoup2_LIBRARY}" ) 177 ENDIF ( NOT LibSoup2_FIND_QUIETLY ) 178 ELSE ( LIBSOUP2_LIBRARIES AND LIBSOUP_INCLUDE_DIRS AND _libsoup2_FOUND ) 179 IF ( LibSoup2_FIND_REQUIRED ) 180 MESSAGE( SEND_ERROR "Could NOT find libsoup2" ) 181 ELSE ( LibSoup2_FIND_REQUIRED ) 182 IF ( NOT LibSoup2_FIND_QUIETLY ) 183 MESSAGE( STATUS "Could NOT find libsoup2" ) 184 ENDIF ( NOT LibSoup2_FIND_QUIETLY ) 185 ENDIF ( LibSoup2_FIND_REQUIRED ) 186 ENDIF ( LIBSOUP2_LIBRARIES AND LIBSOUP2_INCLUDE_DIRS AND _libsoup2_FOUND ) 187ENDIF( NOT LIBSOUP2_FOUND AND NOT PKG_CONFIG_FOUND ) 188 189# Hide advanced variables from CMake GUIs 190MARK_AS_ADVANCED( LIBSOUP2_LIBRARIES LIBSOUP2_INCLUDE_DIRS ) 191 192