1
# - Try to find libsoup
2
# Find libsoup headers, libraries and the answer to all questions.
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
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
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
19
# Set LIBSOUP2_MIN_VERSION to find libsoup2.2 or libsoup2.4 if only
20
# one of both libraries is supported
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.
26
# Set LIBSPOUP22_MIN_VERSION to find libsoup2.2 which version is
27
# greater than LIBSPOUP22_MIN_VERSION
29
# Set LIBSPOUP24_MIN_VERSION to find libsoup2.4 which version is
30
# greater than LIBSPOUP24_MIN_VERSION
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.
37
# Copyright (c) 2007 Daniel Gollub <dgollub@suse.de>
38
# Copyright (c) 2008 Bjoern Ricks <bjoern.ricks@gmail.com>
40
# Redistribution and use is allowed according to the terms of the New
42
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
45
INCLUDE( FindPkgConfig )
47
IF ( LibSoup2_FIND_REQUIRED )
48
SET( _pkgconfig_REQUIRED "REQUIRED" )
49
ELSE( LibSoup2_FIND_REQUIRED )
50
SET( _pkgconfig_REQUIRED "" )
51
ENDIF ( LibSoup2_FIND_REQUIRED )
53
IF ( LIBSOUP2_MIN_VERSION )
54
STRING(REGEX REPLACE "^(2)(\\.)([0-9]*)(\\.?)(.*)" "\\3" LIBSOUP2_VERSION_MINOR "${LIBSOUP2_MIN_VERSION}")
55
IF ( LIBSOUP2_VERSION_MINOR EQUAL "2" )
56
SET( LIBSOUP22_MIN_VERSION "${LIBSOUP2_MIN_VERSION}" )
57
ELSE ( LIBSOUP2_VERSION_MINOR EQUAL "2" )
58
SET( LIBSOUP24_MIN_VERSION "${LIBSOUP2_MIN_VERSION}" )
59
ENDIF ( LIBSOUP2_VERSION_MINOR EQUAL "2" )
60
ENDIF ( LIBSOUP2_MIN_VERSION )
62
# try to find libsoup2.2>=LIBSOUP22_MIN_VERSION
63
IF ( LIBSOUP22_MIN_VERSION )
64
PKG_SEARCH_MODULE( LIBSOUP22 libsoup-2.2>=${LIBSOUP22_MIN_VERSION} libsoup2>=${LIBSOUP22_MIN_VERSION} )
65
ENDIF ( LIBSOUP22_MIN_VERSION )
67
# try to find libsoup2.4>=LIBSOUP24_MIN_VERSION
68
IF ( LIBSOUP24_MIN_VERSION )
69
PKG_SEARCH_MODULE( LIBSOUP24 libsoup-2.4>=${LIBSOUP24_MIN_VERSION} libsoup2>=${LIBSOUP24_MIN_VERSION} )
70
ENDIF ( LIBSOUP24_MIN_VERSION )
72
# try to find any version of libsoup2.4 if LIBSOUP22_MIN_VERSION is not set
73
IF ( NOT LIBSOUP24_FOUND AND NOT LIBSOUP22_MIN_VERSION )
74
PKG_SEARCH_MODULE( LIBSOUP24 libsoup-2.4 libsoup2 )
75
ENDIF ( NOT LIBSOUP24_FOUND AND NOT LIBSOUP22_MIN_VERSION)
77
# try to find any version of libsoup2.2 if LIBSOUP24_MIN_VERSION is not set
78
IF ( NOT LIBSOUP22_FOUND AND NOT LIBSOUP24_MIN_VERSION )
79
PKG_SEARCH_MODULE( LIBSOUP22 libsoup-2.2 libsoup2 )
80
ENDIF ( NOT LIBSOUP22_FOUND AND NOT LIBSOUP24_MIN_VERSION)
82
# set LIBSOUP2_ variables
83
IF ( LIBSOUP24_FOUND )
84
# prefer libsoup2.4 to libsoup2.2 if both are found
85
SET( LIBSOUP2_FOUND ${LIBSOUP24_FOUND} CACHE INTERNAL "" )
86
SET( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP24_INCLUDE_DIRS} CACHE INTERNAL "" )
87
foreach(i ${LIBSOUP24_LIBRARIES})
88
find_library(_libsoup2_LIBRARY NAMES ${i} HINTS ${LIBSOUP24_LIBRARY_DIRS})
89
LIST(APPEND LIBSOUP2_LIBRARIES ${_libsoup2_LIBRARY})
90
unset(_libsoup2_LIBRARY CACHE)
92
SET( LIBSOUP2_VERSION ${LIBSOUP24_VERSION} CACHE INTERNAL "" )
93
ELSEIF ( LIBSOUP22_FOUND )
94
SET( LIBSOUP2_FOUND ${LIBSOUP22_FOUND} CACHE INTERNAL "" )
95
SET( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP22_INCLUDE_DIRS} CACHE INTERNAL "" )
96
foreach(i ${LIBSOUP22_LIBRARIES})
97
find_library(_libsoup2_LIBRARY NAMES ${i} HINTS ${LIBSOUP22_LIBRARY_DIRS})
98
LIST(APPEND LIBSOUP2_LIBRARIES ${_libsoup2_LIBRARY})
99
unset(_libsoup2_LIBRARY CACHE)
101
SET( LIBSOUP2_VERSION ${LIBSOUP22_VERSION} CACHE INTERNAL "" )
102
ELSEIF( PKG_CONFIG_FOUND AND LibSoup2_FIND_REQUIRED )
103
# raise an error if both libs are not found
104
# and FIND_PACKAGE( LibSoup2 REQUIRED ) was called
105
MESSAGE( SEND_ERROR "package libsoup2 not found" )
106
ENDIF ( LIBSOUP24_FOUND )
108
IF( NOT LIBSOUP2_FOUND AND NOT PKG_CONFIG_FOUND )
110
# This case is executed if pkg-config isn't installed.
111
# Currently in this case it is only checked if libsoup2.2 is available.
112
# Therefore please don't use this cmake module without pkg-config!
113
FIND_PATH( _libsoup2_include_DIR libsoup/soup.h PATH_SUFFIXES libsoup libsoup-2.2 )
114
FIND_LIBRARY( _libsoup2_LIBRARY soup-2.2)
116
IF ( _libsoup2_include_DIR AND _libsoup2_LIBRARY )
117
SET ( _libsoup2_FOUND TRUE )
118
ENDIF ( _libsoup2_include_DIR AND _libsoup2_LIBRARY )
120
IF ( _libsoup2_FOUND )
121
SET ( LIBSOUP2_INCLUDE_DIRS ${_libsoup2_include_DIR} )
122
SET ( LIBSOUP2_LIBRARIES ${_libsoup2_LIBRARY} )
124
# find requited glib2
125
IF( NOT GLIB2_FOUND )
126
FIND_PACKAGE( GLIB2 REQUIRED )
128
SET ( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP2_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS} )
129
SET ( LIBSOUP2_LIBRARIES ${LIBSOUP2_LIBRARIES} ${GLIB2_LIBRARIES} )
130
ENDIF ( GLIB2_FOUND )
131
ENDIF( NOT GLIB2_FOUND )
133
# find required libxml2
134
IF( NOT LIBXML2_FOUND )
135
FIND_PACKAGE( LibXml2 REQUIRED )
137
SET ( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP2_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIRS} )
138
SET ( LIBSOUP2_LIBRARIES ${LIBSOUP2_LIBRARIES} ${LIBXML2_LIBRARIES} )
139
ENDIF( LIBXML2_FOUND )
140
ENDIF( NOT LIBXML2_FOUND )
142
# find required gnutls
143
IF( NOT GNUTLS_FOUND )
144
FIND_PACKAGE( GNUTLS REQUIRED )
146
SET ( LIBSOUP2_INCLUDE_DIRS ${LIBSOUP2_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIRS} )
147
SET ( LIBSOUP2_LIBRARIES ${LIBSOUP2_LIBRARIES} ${GNUTLS_LIBRARIES} )
148
ENDIF( GNUTLS_FOUND )
149
ENDIF( NOT GNUTLS_FOUND )
150
ENDIF ( _libsoup2_FOUND )
152
MARK_AS_ADVANCED( _libsoup2_include_DIR _libsoup2_LIBRARY )
155
IF ( LIBSOUP2_LIBRARIES AND LIBSOUP2_INCLUDE_DIRS AND _libsoup2_FOUND )
156
SET( LIBSOUP2_FOUND 1 )
157
IF ( NOT LibSoup2_FIND_QUIETLY )
158
MESSAGE( STATUS "Found libsoup2: ${_libsoup2_LIBRARY}" )
159
ENDIF ( NOT LibSoup2_FIND_QUIETLY )
160
ELSE ( LIBSOUP2_LIBRARIES AND LIBSOUP_INCLUDE_DIRS AND _libsoup2_FOUND )
161
IF ( LibSoup2_FIND_REQUIRED )
162
MESSAGE( SEND_ERROR "Could NOT find libsoup2" )
163
ELSE ( LibSoup2_FIND_REQUIRED )
164
IF ( NOT LibSoup2_FIND_QUIETLY )
165
MESSAGE( STATUS "Could NOT find libsoup2" )
166
ENDIF ( NOT LibSoup2_FIND_QUIETLY )
167
ENDIF ( LibSoup2_FIND_REQUIRED )
168
ENDIF ( LIBSOUP2_LIBRARIES AND LIBSOUP2_INCLUDE_DIRS AND _libsoup2_FOUND )
169
ENDIF( NOT LIBSOUP2_FOUND AND NOT PKG_CONFIG_FOUND )
171
# Hide advanced variables from CMake GUIs
172
MARK_AS_ADVANCED( LIBSOUP2_LIBRARIES LIBSOUP2_INCLUDE_DIRS )