xref: /libbtbb/wireshark/plugins-legacy/btle/cmake/FindGLIB2.cmake (revision e018180df8c9bd1ca869d5329a027253be1a76ec)
1#
2# $Id: FindGLIB2.cmake 34248 2010-09-25 15:38:12Z jmayer $
3#
4# - Try to find GLib2
5# Once done this will define
6#
7#  GLIB2_FOUND - system has GLib2
8#  GLIB2_INCLUDE_DIRS - the GLib2 include directory
9#  GLIB2_LIBRARIES - Link these to use GLib2
10#
11#  HAVE_GLIB_GREGEX_H  glib has gregex.h header and
12#                      supports g_regex_match_simple
13#
14#  Copyright (c) 2006 Andreas Schneider <[email protected]>
15#  Copyright (c) 2006 Philippe Bernery <[email protected]>
16#  Copyright (c) 2007 Daniel Gollub <[email protected]>
17#  Copyright (c) 2007 Alban Browaeys <[email protected]>
18#  Copyright (c) 2008 Michael Bell <[email protected]>
19#  Copyright (c) 2008-2009 Bjoern Ricks <[email protected]>
20#
21#  Redistribution and use is allowed according to the terms of the New
22#  BSD license.
23#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
24#
25
26
27IF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
28  # in cache already
29  SET(GLIB2_FOUND TRUE)
30ELSE (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
31
32  INCLUDE(FindPkgConfig)
33
34  ## Glib
35  IF ( GLIB2_FIND_REQUIRED )
36    SET( _pkgconfig_REQUIRED "REQUIRED" )
37  ELSE ( GLIB2_FIND_REQUIRED )
38    SET( _pkgconfig_REQUIRED "" )
39  ENDIF ( GLIB2_FIND_REQUIRED )
40
41  IF ( GLIB2_MIN_VERSION )
42    PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0>=${GLIB2_MIN_VERSION} )
43  ELSE ( GLIB2_MIN_VERSION )
44    PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 )
45  ENDIF ( GLIB2_MIN_VERSION )
46  IF ( PKG_CONFIG_FOUND )
47    IF ( GLIB2_FOUND )
48      SET ( GLIB2_CORE_FOUND TRUE )
49    ELSE ( GLIB2_FOUND )
50      SET ( GLIB2_CORE_FOUND FALSE )
51    ENDIF ( GLIB2_FOUND )
52  ENDIF ( PKG_CONFIG_FOUND )
53
54  # Look for glib2 include dir and libraries w/o pkgconfig
55  IF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND )
56    FIND_PATH(
57      _glibconfig_include_DIR
58    NAMES
59      glibconfig.h
60    PATHS
61      /opt/gnome/lib64
62      /opt/gnome/lib
63      /opt/lib/
64      /opt/local/lib
65      /sw/lib/
66      /usr/lib64
67      /usr/lib
68      /usr/local/include
69      ${CMAKE_LIBRARY_PATH}
70    PATH_SUFFIXES
71      glib-2.0/include
72    )
73
74    FIND_PATH(
75      _glib2_include_DIR
76    NAMES
77      glib.h
78    PATHS
79      /opt/gnome/include
80      /opt/local/include
81      /sw/include
82      /usr/include
83      /usr/local/include
84    PATH_SUFFIXES
85      glib-2.0
86    )
87
88    #MESSAGE(STATUS "Glib headers: ${_glib2_include_DIR}")
89
90    FIND_LIBRARY(
91      _glib2_link_DIR
92    NAMES
93      glib-2.0
94      glib
95    PATHS
96      /opt/gnome/lib
97      /opt/local/lib
98      /sw/lib
99      /usr/lib
100      /usr/local/lib
101    )
102    IF ( _glib2_include_DIR AND _glib2_link_DIR )
103        SET ( _glib2_FOUND TRUE )
104    ENDIF ( _glib2_include_DIR AND _glib2_link_DIR )
105
106
107    IF ( _glib2_FOUND )
108        SET ( GLIB2_INCLUDE_DIRS ${_glib2_include_DIR} ${_glibconfig_include_DIR} )
109        SET ( GLIB2_LIBRARIES ${_glib2_link_DIR} )
110        SET ( GLIB2_CORE_FOUND TRUE )
111    ELSE ( _glib2_FOUND )
112        SET ( GLIB2_CORE_FOUND FALSE )
113    ENDIF ( _glib2_FOUND )
114
115    # Handle dependencies
116    # libintl
117    IF ( NOT LIBINTL_FOUND )
118      FIND_PATH(LIBINTL_INCLUDE_DIR
119      NAMES
120        libintl.h
121      PATHS
122        /opt/gnome/include
123        /opt/local/include
124        /sw/include
125        /usr/include
126        /usr/local/include
127      )
128
129      FIND_LIBRARY(LIBINTL_LIBRARY
130      NAMES
131        intl
132      PATHS
133        /opt/gnome/lib
134        /opt/local/lib
135        /sw/lib
136        /usr/local/lib
137        /usr/lib
138      )
139
140      IF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
141        SET (LIBINTL_FOUND TRUE)
142      ENDIF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
143    ENDIF ( NOT LIBINTL_FOUND )
144
145    # libiconv
146    IF ( NOT LIBICONV_FOUND )
147      FIND_PATH(LIBICONV_INCLUDE_DIR
148      NAMES
149        iconv.h
150      PATHS
151        /opt/gnome/include
152        /opt/local/include
153        /opt/local/include
154        /sw/include
155        /sw/include
156        /usr/local/include
157        /usr/include
158      PATH_SUFFIXES
159        glib-2.0
160      )
161
162      FIND_LIBRARY(LIBICONV_LIBRARY
163      NAMES
164        iconv
165      PATHS
166        /opt/gnome/lib
167        /opt/local/lib
168        /sw/lib
169        /usr/lib
170        /usr/local/lib
171      )
172
173      IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
174        SET (LIBICONV_FOUND TRUE)
175      ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
176    ENDIF ( NOT LIBICONV_FOUND )
177
178    IF (LIBINTL_FOUND)
179      SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY})
180      SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR})
181    ENDIF (LIBINTL_FOUND)
182
183    IF (LIBICONV_FOUND)
184      SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
185      SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
186    ENDIF (LIBICONV_FOUND)
187
188  ENDIF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND )
189  ##
190
191  IF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
192    SET (GLIB2_FOUND TRUE)
193  ENDIF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
194
195  IF (GLIB2_FOUND)
196    IF (NOT GLIB2_FIND_QUIETLY)
197      MESSAGE (STATUS "Found GLib2: ${GLIB2_LIBRARIES} ${GLIB2_INCLUDE_DIRS}")
198    ENDIF (NOT GLIB2_FIND_QUIETLY)
199  ELSE (GLIB2_FOUND)
200    IF (GLIB2_FIND_REQUIRED)
201      MESSAGE (SEND_ERROR "Could not find GLib2")
202    ENDIF (GLIB2_FIND_REQUIRED)
203  ENDIF (GLIB2_FOUND)
204
205  # show the GLIB2_INCLUDE_DIRS and GLIB2_LIBRARIES variables only in the advanced view
206  MARK_AS_ADVANCED(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES)
207  MARK_AS_ADVANCED(LIBICONV_INCLUDE_DIR LIBICONV_LIBRARY)
208  MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY)
209
210ENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
211
212IF ( WIN32 )
213    # include libiconv for win32
214    IF ( NOT LIBICONV_FOUND )
215      FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h PATH_SUFFIXES glib-2.0)
216
217      FIND_LIBRARY(LIBICONV_LIBRARY NAMES iconv)
218
219      IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
220        SET (LIBICONV_FOUND TRUE)
221      ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
222    ENDIF ( NOT LIBICONV_FOUND )
223    IF (LIBICONV_FOUND)
224      SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
225      SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
226    ENDIF (LIBICONV_FOUND)
227ENDIF ( WIN32 )
228
229IF ( GLIB2_FOUND )
230	# Check if system has a newer version of glib
231	# which supports g_regex_match_simple
232	INCLUDE( CheckIncludeFiles )
233	SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} )
234	CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H )
235	CHECK_INCLUDE_FILES ( glib/gchecksum.h HAVE_GLIB_GCHECKSUM_H )
236	# Reset CMAKE_REQUIRED_INCLUDES
237	SET( CMAKE_REQUIRED_INCLUDES "" )
238ENDIF( GLIB2_FOUND )
239